集群“脑裂”问题
一、定义
“脑裂”问题,就是指在同一个集群中的不同节点,对集群的状态有了不同理解。体现在集群中不同的节点对于master的选择出现了分歧,出现了多个master竞争
二、“脑裂“问题剖析
(一)“脑裂”问题成因
-
网络问题
集群间的网络延迟导致一些节点访问不到master,认为master挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片,如ES集群、Redis集群等。
-
节点负载
主节点的角色既为master又为data,访问量较大时可能会导致停止响应造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点,如ES集群,Redis集群等
-
内存回收
data节点进程占用的内存较大,引发大规模内存回收,造成进程失去响应,如ES集群、Zookeeper集群、Redis集群。
(二)“脑裂”问题后果
- 数据不完整性(同时读写共享资源,导致数据损坏)。
- 服务异常(共享资源被瓜分,服务起不来,如zookeeper集群)。
三、“脑裂”问题解决办法
“脑裂”问题是一个比较复杂的问题,需要从多个方面进行综合考虑和解决,分布式集群中可以从如下几个方面来分析并加以解决。
- 增加节点数:增加集群节点的数量可以增加系统的容错性和可用性,减少单点故障的影响。建议将节点数量至少设置为3个及以上。
- 配置合适的心跳时间和超时时间:如Nacos Server中心跳时间和超时时间的设置,对避免脑裂问题非常重要。建议将心跳时间设置为默认的5秒,并将超时时间设置为心跳时间的3倍以上。
- 合理配置负载均衡策略:应该使用合适的负载均衡策略,确保请求能够均匀地分布到集群的各个节点上。建议采用轮询算法或加权轮询算法等负载均衡算法。
- 合理配置集群网络:如在Zookeeper集群中,节点之间的网络连接质量对避免脑裂问题非常重要。建议使用高性能、低延迟的网络设备和线路,并在网络中实现流量控制和负载均衡。
- 合理配置选举算法:如在Zookeeper集群中在进行主节点选举时,可以使用不同的算法。建议选择合适的算法,例如FastLeaderElection算法。
- 使用分布式锁:如在Zookeeper集群中,可以使用分布式锁来控制资源的访问,确保数据一致性。常用的分布式锁有Curator、Redis等。
- 部署多个数据中心:如果应用需要在多个地理位置上运行,可以考虑在不同的地理位置上部署多个数据中心,确保数据的复制和同步。这样即使某个数据中心发生故障,其他数据中心仍然可以正常工作。
“脑裂”问题通常是发生在节点间不能通信情况下,集群可能会分裂出多个leader的小集群。如何避免“脑裂”问题,其只要核心思想都是在leader选举的时候,需要半数投票通过才能选举成为leader,即公式:节点投票数>总节点数/2。集群采用奇数节点是因为奇数个最高效和节省资源。
四、问题延伸
- 若Nacos采用持久节点模式(CP原则)此场景下会产生“脑裂”问题吗?
- zookeeper集群会产生脑裂吗?
答案是否定的,因为zookeeper遵循的是CP原则,当集群中过半数节点不可用时,即使leader节点仍然存活,整个集群也是无法对外提供服务,leader此时会进入looking状态;另外2个follower节点会选举出新的leader;当原leader网络恢复正常时,会转为follower角色;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
落地 ZeroETL 轻量化架构,ByteHouse 推出“四个一体化”战略
在数字化转型的浪潮中,数据仓库作为企业的核心数据资产,其重要性日益凸显。随着业务范围扩大,企业也会使用不同的数据仓库来管理、维护相关数据。研发人员需要花费大量时间和精力,从中导出数据,然后进行手动整理、转换格式,再导入到分析工具中完成数据分析。该过程不仅繁琐,还容易出错。 ZeroETL 则提供了一个全新的解决方案,让研发人员无需操作复杂的数据抽取、转换和加载(ETL)过程就能实现数据整合和分析。它能够自动从不同软件中获取数据,直接将数据整合到一起,以统一格式呈现,帮助使用者更快速、轻松地进行数据分析。 而火山引擎云原生数据仓库 ByteHouse 则通过“四个一体化”逐步实现 ZeroETL 轻量化数据架构,不仅让数仓更轻快,数据免开发,还能保障数据质量,实现智能运维 据火山引擎 ByteHouse 产品负责人介绍,“ByteHouse 是一款 OLAP(联机分析处理)产品,用人体比喻,相当于腰部,为力量汇聚之地。但如果缺少四肢的支撑,腰部产品很难独立发挥作用。由此,ByteHouse 提出‘四个一体化’的核心理念,旨在通过全面融合,实现数据的无缝流动和高效利用。” ByteHous...
- 下一篇
供应链PC实操落地实践|得物技术
目录 一、背景 二、实操模式 三、快捷码设计和使用 快捷码布局 快捷码的准确识别 快捷码的高亮反馈 快捷码打印和黏贴建议 四、问题复盘 基准体验的梳理 五、实操环境检测 实操环境的安装和配置 实操环境检测能力的使用流程 实操检测能力的技术架构 实操环境的检查时机 输入法的检测和自动修复 统一打印组件 软件更新 六、信息反馈及异常SOP 七、效率指标的定义、监控和分析 八、后续规划 一、背景 在供应链履约流程中,PC实操发货主要负责 "完成复查入库商品的数量、规格和质量,并核对证书和防伪扣的正确性,确保商品无问题后,对订单内的商品进行打包、打印黏贴物流面单,并交接给3PL配送"。 作为配送前的最后一道屏障,需要确保供应链从生产入库到出库的环节的质量符合预期,最终将包裹交付到物流供应商,配送给消费者。 随着得物业务规模变大,供应链对成本、效率、质量的要求在不断提升,云仓业务模式开始逐步测试并铺开,仓内的设备环境与得物自有仓出现差异,因此PC实操系统需要在设备采购成本和实操的效率之间寻找平衡点。 云仓内的设备环境不一致,实操系统会面临如下问题: 大部分云仓BPO没有平板电脑,无法直接使用得物...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题