1、Broker的集群节点都是对等的吗?还会是存在leader节点以及follower节点?
2、RocketMQ党Broker节点挂掉之后,是如何实现故障转移的?
实际上RocketMQ使用了Dledger的技术来实现高可用的。那这个Dledger到底能干什么呢?首先是实现conmmitlog的统一管理。由于DLedger 提供了一些可以直接读取CommitLog的API,于是就可以很方便地根据CommitLog去构建ConsumerQueue或者其他的模块。这就是DLedger 在RocketMQ上最直接的应用。
RocketMQ中的Broker节点采用的是leader节点加follow节点的形式, DLedger 集群发起一个写请求,集群中的 Leader 节点来处理写请求,首先数据先存入 Leader 节点,然后需要广播给它的所有从节点,从节点接收到 Leader 节点的数据推送对数据进行存储,然后向主节点汇报存储的结果,Leader 节点会对该日志的存储结果进行仲裁,如果超过集群数量的一半都成功存储了该数据,主节点则向客户端返回写入成功,否则向客户端写入写入失败。
在引入Dledger技术之前,Broker的master节点挂掉之后,需要手工进行Broker节点的重启或者切换,非常的不方便,因此通过引入Dledger技术实现自动的故障转移。要想实现自动的故障转移,必定需要在主节点挂掉之后,可以自动进行主节点的选举以及切换。在RocketMQ中,DLedger 就是一个基于 raft 协议的 commitlog 存储库,实际上也是基于Raft协议实现Broker的Leader节点进行选举的,那么Raft具体的选举流程又是怎样的呢?
首先Dledger把RocketMQ集群中的broker节点分为三个角色,每个角色有着自己迪特的职责:
角色说明
Leader角色 :主要负责数据写入,将数据同步到follower节点,保证主从数据一致性,同时使用心跳机制告诉其他节点它是Leader角色;
Follower角色:负责将leader节点发送过来的数据保存到本地,同时需要响应leader节点心跳;
Candidate角色:该角色等待进行leader选举。
当RocketMQ 三个节点刚启动或者leader节点故障挂断的时候,这个时候集群全部节点都是candidate 状态,此时会触发leader选举,选举步骤大致:
1、三个RocketMQ Broker节点启动后,此时它们的角色状态都是Candidate状态,等待进行Leader的选举;
2、此时Broker0率先发起选举,由于Broker0比较自信,它先选举自己为Leader,给自己投了一票,然后通知其他节点;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。
本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!**