主从模式
- 2n1m1s主从搭建
- 可以保障消息的即时性与可靠性,主从节点可以消息同步
- 主节点挂掉,从节点无法接收消息,但是可以提供消费者数据进行消费
- 主节点重新上线后进行消费进度offset同步
生成者
核心参数
- producerGroup: 组名,一个应用只有一个
- defaultTopicQueueNums:在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
- sendMsgTimeout:发送消息超时时间,如果无法将消息发送到Broker,重试
- compressMsgBodyOverHowmuch:发送消息字节数达到4096时会压缩消息,减小网络传输成本
- retryTimesWhenSendFailed:配置同步重发策略
- retryAnotherBrokerWhenNotStoreOK:默认为false,设置为true之后,在发送失败的时候,会选择换一个broker。
- maxMessageSize:发送消息大小限制,默认128k
主从同步机制
- 源码详解参考
- 同步信息:数据内容(CommitLog )+元数据信息(配置信息)
- 元数据同步:Broker角色识别,为Slave则启动同步任务(定时任务)
- 消息同步:HAService,HAconnection,WaitNotifyObject三个核心类
双主双从搭建
注意: 搭建前需要先编译
mvn -Prelease-all -DskipTests clean package -U
- 搭建示例1, 搭建示例2(docker版)
- 异步复制 : 在多master模式的基础上,每个master节点都有至少一个对应的slave。master节点可读可写,但是slave只能读不能写,类似于mysql的主备模式。
- 优点:
在master宕机时,消费者可以从slave读取消息,消息的实时性不会受影响,性能几乎和多master一样。
- 缺点:使用异步复制的同步方式有可能会有消息丢失的问题。
- 同步双写: master和slave之间的数据同步,主备都写成功,向应用返回成功。
- 优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高
- 缺点: 性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT?会略高
参考
官方搭建教程
RocketMQ笔记2-主从模式
原文:https://www.cnblogs.com/wuba/p/11772053.html