rocketmq 如何保证高可用_RocketMQ高可用机制

本文介绍了RocketMQ的系统架构,包括Topic、Name Server、Broker、Producer和Consumer的角色。重点阐述了消息发送和消费的高可用策略,如Broker自动切换和消费重试机制。此外,还讨论了死信队列的定义、特征以及处理方法。最后,解释了消息消费幂等的重要性,并提出了几种实现幂等的操作方式。
摘要由CSDN通过智能技术生成

系统架构

8d93608aafa8da0c08a1f686aa31ac96.png

Topic:消息的主题,由用户定义并在服务端配置,producer发送消息到某个topic

下, consumer从相应的topic中消费消息

1、Name Server:无状态节点,用于集群化管理topic路由信息及broker节点信息

2、Broker:负责消息存储与转发,同时与所有的name server维持心跳

3、Producer:与name server集群中随机一个节点建立长连接,并定期获取topic与broker所维护的路由关系;同时与master broker维持心跳

4、 Consumer:与name server集群中随机一个节点建立长连接,并定期获取topic与broker所维护的路由关系;同时根据订阅规则与所有的broker维持心跳

消息发送的高可用

4dc32a46360916b894170758a136ce2e.png
e290ae6d74ea25dd06db488dc18bf52c.png

消息消费的高可用

9b9b66fbe2a01b116453a0a159ea4557.png

Broker自动切换机制:

当Master不可用或者繁忙的时候,自动切换到从Slave 读

消费重试:

1、集群模式

默认16次重试

(实现原理与延时消费一致)

2、广播模式

不提供重试机制

死信队列

定义:当消息消费达到最大重试次数后,这种无法被正常消费的消息称为死信消息,存储死信消息的特殊队列称为死信队列。

特征:

1、不会再被消费者正常消费

2、有效期与正常消息相同,均为 3 天,3 天后会被自动删除

3、死信队列对应一个 Group ID, 而不是对应单个消费者实例

不论该消息属于哪个 Topic

如何正确处理死信消息:

1、选择重新发送消息

2、监听死信队列,将数据打印到控制台

消息消费幂等操作

幂等概念:是一个数学与计算机学的概念,常见于抽象代数中。

通俗的讲就是针对一个操作,不管做多少次,产生效果或返回的结果都是一样的。

消息幂等的必要性:

由于网络抖动或客户端异常,无法保证消息的不重复性

消息幂等处理方式:

1、消息去重(唯一索引、状态机幂等)

2、分布式锁机制

3、消息ACK机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值