RocketMQ笔记2-主从模式

主从模式

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

参考

官方搭建教程