头部
logo
GT_WUBA

RocketMQ笔记2-主从模式

2019年10月31日 /By wuba/浏览量:19

主从模式

  • 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 会略高


参考

官方搭建教程