转载请注明🙂,喜欢请一键三连哦 😊
系列文章目录
文章目录
前言
使用Consul作为注册中心场景下, 在高可用方面需要做哪些考虑,本篇将Consul节点故障场景和压力来源场景做一个分析, 并给出一些自己的见解和建议。
一、Consul故障场景
1.1 单Follower Server节点故障
含有Client Node架构中,这种场景是不受影响的
1.2 Leader Server节点故障
Leader节点不可用的话, 重新选主, 集群写功能短暂不可用。 选主期间,读能力取决于Consul一致性模型设置。
1.3 超过法定节点(Quorum: n/2 + 1) 故障
集群不可用
二、Consul压力分析
Consul压力来源主要三个放面, 写能力,读能力,服务数支持能力(健康检查压力, 同步压力),下面分析几个框架的从压力情况。
场景:
应用情况: 3000个应用,三个实例,依赖对外3个服务;
Consul集群情况: 3节点, 2C2g
2.1 JSF应用(京东商城内部RPC框架,类似Dubbo)
-
查询压力: 3000应用 , 3服务实例 , 依赖 3个其他服务,自身暴露 3个服务, 30S 查询一次; 总共Watch压力为: 1800 qps, 查询依赖压力为: 3000 * 3 * 3/ 30s = 900 qps,自身注册情况查询 3000 * 3 *3/30s = 900 qps;
-
写压力: 同时注册能力
-
健康检查压力: 3000 * 3/10s = 9000;
-
同步压力: 9000服务实例
2.2 SpringCloud应用
场景: 默认参数, 保持2s长轮询 , 1s 延迟, 假设 3000, 3个实例的话 。
-
查询压力: 3000 * 3 = 9000, 但是一个应用一个周期,仅查询1次, watch catalog service index 是否变更。
-
写能力: 同时注册能力
-
健康检查压力: 9000/10s = 900
-
同步压力: 9000服务实例
三、如何保持Consul作为注册中心场景地高可用?
那有以下建议。
3.1 Consul集群高可用
-
多节点、多AZ部署
-
完善监控(健康检查)
-
自动重启、拉起能力
-
数据持久化(挂载云盘)
-
压测(保证适合的规格)
3.2 客户端容灾
-
做一定容灾、缓存、文件备份
-
缺失Client的架构,需要扩展以下 自动切换Server节点、数据丢失自动注册功能