RocketMO集群特点|学习笔记

简介: 快速学习RocketMO集群特点

开发者学堂课程【RocketMQ知识精讲与项目实战(第一阶段)RocketMO集群特点】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/702/detail/12366


RocketMO集群特点


集群特点

(1) NameServer集群

name server 是一个几乎一个无状态的节点,即每一个节点具有相同的信息。

name server 主要用来管理 broker 的状态信息。为什么 Name server是一个无状态?因为在启动之后,broker 会给 Name server 的每一个节点上报它的信息,即节点之间不需要数据的同步。们之间的数据没有差异,因此称为无状态。

若此时新加入一个 name server,broker 同样会给这个 name server 重新上报它的信息。所以 name serve 的无状态让它的集群搭建起来更加方便。

(2) Broker集群

broker 是集群搭建的一个重点,分为一个 master 主节点和一个 slave 从节点,它们的区别在于主节点主要处理写操作,从节点主要处理读操作。

写操作:主要面对 roducer,接收 producer 发送的信息,然后保存到自己节点当中读操作:主要提供读 consumer,它要去消费消息,查询消息读取

的判断标准

职责区分,Name server 通过一个 broker 确定两个是同一组,通过一个b roker ID 去区分主从。broker ID 如果为零,那么它就代表的是主节点,非零比如一,它就代表从节点。

通过 broker name 说明两个是一组,通过 broker ID 去区分组内的主从。

在这个组当中,一个主节点可以包含有多个从节点。另外一组主从,们的broker

name 上面是不同的,在进行集群搭建的时候,大家应关注 broker 的处理

image.png

name server 是一个无状态,直接启动多个就是一个集群部署,节点之间没有消息的同步。

broker 的集群搭建比较复杂,它分为一个 master,分一个 slave,一个 master 可以对应多个 slave,一个 slave 可以对应一个 master,一个 slave 只能属于一个master,master 与 slave,通过 broker name 来说明它们两个是一组,再通过broker ID,去区分主从,零代表的是 master 主节点,非零代表的是 slave。

broker 和 master 和 slave 之间,会进行数据的同步,消息写到这边,要去提供一个 consumer 的消费,消息还在,需要靠它们之间的一个同步和一个复制,复制可以是异步的,也可以是同步的,这是两个之间数据同步的一个问题。

Broker部署相对复杂,Broker 分为 Master 与 Slave,一个 Master 可以对应多个Slave,但是一个 Slave 只能对应一个 Master.Master 与 Slave 的对应关系通过指定相同的 BrokerName,不同的 Brokerld 来定义,Brokerld 为0表示 Master,非0表示 Slave Master 也可以部署多个。

每个Broker 与 NameServer 集群中的所有节点建立长连接,定时注册Topic信息到所有 NameServer。

(3) Producer集群

Producer 集群搭建相对方便,节点之间没有数据的同步关系。producer有多个消息生产者本身就是一个集群的状态,启动多 produce r本身就是一个集群。producer 之间没有数据的同步。

consumer 的机型搭建同样比较简单,同时启动多个 consumer,就是一个集群的状态。

producer 会与 name server 建立一个长链接,原因是进行消息发送的时候,每次都要询问name server,当前消息发送到哪一个broker,因为消息在发送的时候,会带一个消息种类。

消息种类是 topic,它需要 从name server 获得信息,它们两个之间会建立一个长链接。,从 name server 当中获取 topic 的路由信息就是要发到哪一个地方的信息。并且 topic 服务 master 建立一个长链接,向这个 master 发送一个检测,也会向这个 broker,发送一个检测,broker 就知道当前 producer 是启动的还是关闭的状态。

Producer 与 NameServe r集群中的其中一个节点(随机选择)建立长连接,定期从NameServer 取 Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,目定时向 Master 发送心跳。Producer 完全无状态,可集群部署。

(4) Consumer集群

consumer 集群是一个无状态的,直接启动即可它会和 name server 建立一个长链接,随机选择一个即可。因为每一个name server 节点的信息都是一样的,定期从 name server 当中取 topic 的一个路由信息,向 topic 的 master,还有 slave 建立一个长链接,定时的去发送一个心跳检测。

broker 把消息让 consumer消费。有两种方式,一种是推,另一种是主动去拉,如果是推的时候,要知道 consumer 当前哪一个节点是上线,哪一个节点是离线,就需要consumer去进行一个心跳检测的一个上报,它们通过一个心跳检测机

制,知道哪一个 consumer 可用

Consume r与 NameServer 集群中的其中一个节点(随机选择)建立长连接,定期从

NameServer 取 Topic 路由信息,并向提供 Topic 服务的 MasterSlave建立长连接,目定时向 Master,Slave 发送心跳。

Consumer 既可以从 Master 订阅消息,也可以从  Slave 订阅消息,订阅规则由

Broker 配置决定。

相关文章
|
缓存 Kubernetes 网络协议
搭建k8s集群!!!
搭建k8s集群!!!
182 0
|
负载均衡 监控 网络协议
MyCat-集群-集群架构 | 学习笔记
快速学习 MyCat-集群-集群架构
MyCat-集群-集群架构 | 学习笔记
|
Kubernetes Ubuntu 应用服务中间件
k8s学习四-部署节点加入集群
k8s学习四-部署节点加入集群
311 0
k8s学习四-部署节点加入集群
|
存储 负载均衡 NoSQL
集群-集群简介|学习笔记
快速学习集群-集群简介
集群-集群简介|学习笔记
|
Kubernetes 开发者 容器
K8s 集群部署 | 学习笔记
快速学习 K8s 集群部署
263 0
|
Kubernetes 网络协议 前端开发
K8S 集群部署_集群初始化 | 学习笔记
快速学习 K8S 集群部署_集群初始化
299 0
|
关系型数据库 MySQL Java
集群部署 | 学习笔记
快速学习集群部署。
135 0
集群部署 | 学习笔记
|
Kubernetes 开发者 容器
K8s 集群部署-学习总结 | 学习笔记
快速学习 K8s 集群部署-学习总结
155 0
K8s 集群部署-学习总结 | 学习笔记
|
存储 NoSQL 5G
集群-cluster 集群搭建|学习笔记
快速学习集群-cluster 集群搭建
集群-cluster 集群搭建|学习笔记
|
分布式数据库 数据库 开发者
创建集群|学习笔记
快速学习创建集群
创建集群|学习笔记