Fork me on GitHub

版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc

1. 引言

在萌叔的文章玩转consul(3)--大规模部署的性能开销定量分析 中,探讨了consul支持大规模集群可能出现性能瓶颈。引出可以通过拆分consul集群或者逻辑切分DC的方法,来降低consul的压力。本文将展开说明一下。

2. 解释

2.1 单个DC的情况


假设服务A依赖服务B(调用服务B),
服务A和服务B各有200个实例,
服务B注册到consul集群上,
服务A通过consul集群发现服务B。

如果服务B做滚动发布,考虑最坏的情况,每次发布一个实例,
consul总共发出的通知数为

200 * 200 = 40,000 

2.2 2个DC的情况

拆分成2个DC后,单个DC中,服务A和服务B各有100个实例,限制不允许跨DC调用。如果服务B做滚动发布,考虑最坏的情况,DC1和DC2同时发布,每次发布一个实例,consul总共发出的通知数为

100 * 100 + 100 * 100 = 20,000 

3. 总结

当服务的规模很大时,即使拆分成2个DC,服务整体的高可用能力不会受到影响。对比2.1和2.2,consul集群的压力减少了一半。另外咱们之前提过,单个DC中consul集群(server)的规模不宜过大,否则会影响日志复制、还有选主的速度。拆分到2个DC后,原有的consul集群也被拆分成了2个集群,单个DC中consul集群的规模下降了,这样还给我们留出扩容的余地。

后记

2022年1月29日
用单元化的思想(见参考资料1、2)来解决注册中心压力大的问题与我文章中提到的,划分逻辑DC的思想不谋而合。

参考资料

1.单元化架构解决了什么问题
2.单元化介绍


请我喝瓶饮料

微信支付码

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注