RocketMQ HA集群方案

本文介绍了RocketMQ的高可用性和集群概念,包括namesrv、broker的集群部署,以及Producer和Consumer的高可用方案。RocketMQ的namesrv是无状态组件,支持独立部署,broker支持主从架构,Producer和Consumer在故障时能自动切换到其他节点,确保系统持续服务。
摘要由CSDN通过智能技术生成

 1、了解RocketMQ

1.1、RocketMQ的前世今生

        RocketMQ是阿里开源的一款十分优秀的消息队列,rocketMQ具有很多其他消息队列不具有的特性,更重要的是rocketMQ是用java开发的学习成本较低,并且经历了双11的数据洪峰的考验。rocketMQ已经加入了apache,成为apache的顶级项目。

1.2、相关链接

RocketMQ的官网:http://rocketmq.apache.org/

RocketMQ的gitHub:https://github.com/apache/rocketmq

1.2、RocketMQ的架构图和相关概念

1.2.1、RocketMQ的架构图

RocketMQ架构分为四个模块:NameServer, Broker,Producer,Consumer

 

1.2.2、RocketMQ的相关概念

  • NameServer

          Namesrv 是由阿里云RocketMQ中间件开发团队开发的基于服务注册发现功能的无状态组件,支持独立部署。Namesrv在整个RocketMQ架构体系中,属于重中之重的组件,乃灵魂级组件,统筹全局,可谓之'一家之主'。上可撩得生产者靓妹,下可驾驭消费者御姐,亦可跟broker徐娘亲近。

          那么它又是如何工作的呢?

          1、生产者从namesrv中获取可用的broker地址,将消息发送至broker。
          2、消费者从namesrv中获取可用的broker地址,从broker中拉去消息。
          3、broker定时向naemsrv发送心跳信息,维护可用broker地址。

         相对来说,nameserver的稳定性非常高。原因有二: 
         1、 nameserver互相独立,彼此没有通信关系,单台nameserver挂掉,不影响其他nameserver,即使全部挂掉,也不影响业务系统使用,这点类似于dubbo的zookeeper。 
         2 、nameserver不会有频繁的读写,所以性能开销非常小,稳定性很高。

         NameServer类似于SpringCloud中的eureka

  • Broker

          Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示            Master,非0表示Slave。Master也可以部署多个。每个Broker与Name Server集群中的所有节点建立长连接,定时注册Topic信息到所有Name Server。

          与nameserver关系 :连接 :单个broker和所有nameserver保持长连接 
         心跳 : 心跳间隔每隔30秒(此时间无法更改)向所有nameserver发送心跳,心跳包含了自身的topic配置信息。  心跳超时nameserver每隔10秒钟(此时间无法更改),扫描所有还存活的broker连接&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值