[关闭]
@x-power 2019-09-18T18:13:10.000000Z 字数 1520 阅读 2089

RocketMQ的高可用集群部署

消息队列 部署环境


1. RocketMQ 集群物理部署结构

Rocket 物理部署结构

Name Server: 单点,供ProducerConsumer获取Broker地址, 类似于注册中心.
Producer: 产生并发送消息.
Consumer: 接收并消费消息.
Broker: 消息暂存,消息转发.

1.1 Name Server

Name Server做的是Rocket的寻址服务, 用于将Broker的路由信息做聚合. 客户端依靠Name Server决定去获取对应topic的路由信息,从而决定对那些Broker做链接.

Name Server是一个几乎无状态的节点, Name Server之间采用Share-Nothing的设计, 互不通信.

对于一个Name Server集群列表, 客户端链接Name Server的时候会随机选择一个节点, 以做到负载均衡.

Name Server所有状态都从Broker上报上来, 本身不存储任何状态, 所有数据均在内存.

如果中途所有的Name Server都挂了, 只会影响到路由信息的更新, 并不会影响到和Broker的通信.(Eureka 的本地缓存服务注册信息 )

1.2 Broker

Broker是做消息存储,转发的服务器.
Brokergroup分开,每个group只允许一个master,若干个slave.
一个master可以有多个slave,但是一个slave只能有一个master.
只有master才可以进行写入操作, slave不允许.
slavemaster中同步数据. 同步策略取决于master的配置, 可以采用同步双写,异步复制两种.
客户端消费可以从masterslave中消费. 在默认的情况下,消费者都从master消费, 在master挂掉之后, 客户端由于从Name Server中感知到Broker挂机,就会从slave消费. (尽量从master消费, 这样消息会比较及时, 不用牵扯到消息复制的延迟问题.)


2. RocketMQ集群物理部署结构

RocketMQ的部署结构有一下特点:


3. RocketMQ逻辑部署结构

3.1 Producer Group

用来表示一个发送消息的应用, 一个Producer Group下包含多个Producer实例,可以使多个机器,也可以是一台机器的多个进程, 或者一个进程的多个Producer对象. 一个Producer Group可以发送多个Topic消息, Producer Group的作用如下:


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注