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 配置决定。

相关文章
|
NoSQL Java Redis
SpringBoot原理分析 | Redis集成
SpringBoot原理分析 | Redis集成
113 0
|
分布式计算 运维 DataWorks
DataWorks产品使用合集之表分区的一致性校验有时能正常进行,有时不能,该如何排查
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
73 0
|
缓存 Java Maven
关于IDEA创建Maven一直爆红无法下载的问题
关于IDEA创建Maven一直爆红无法下载的问题
477 0
 关于IDEA创建Maven一直爆红无法下载的问题
|
Shell API Python
Python的MATLAB使用
Python的MATLAB使用
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
1014 2
|
NoSQL 数据可视化 Linux
一文教会你如何在Linux系统中使用Docker安装Redis 、以及如何使用可视化工具连接【详细过程+图解】
这篇文章详细介绍了如何在Linux系统中使用Docker安装Redis,并提供了使用可视化工具连接Redis的步骤。内容包括安装Redis镜像、创建外部配置文件、映射文件和端口、启动和测试Redis实例、配置数据持久化存储,以及使用可视化工具连接和操作Redis数据库的过程。
|
Java 开发者 UED
Java中的异常处理:理解try-catch-finally语句
【8月更文挑战第31天】 在Java编程中,异常处理是确保程序健壮性和稳定性的重要方面。本文将介绍Java中的异常处理机制,重点讲解如何使用try-catch-finally语句来捕获和处理异常。通过实际代码示例,我们将展示如何有效地管理运行时错误,并确保程序即使在面对意外情况时也能优雅地执行。
|
前端开发 Java 数据库连接
springboot整合mybatis(详解)
springboot整合mybatis(详解)
145 0
|
前端开发 JavaScript
前端 JS 经典:typeof 和 instanceof 区别
前端 JS 经典:typeof 和 instanceof 区别
259 0
下一篇
开通oss服务