当前位置: 首页 > news >正文

RocketMQ初认识

  • Producer
  • Customer
  • NameServer: Broker的注册服务发现中心
  • BrokerServer:主要负责消息的存储、投递和查询以及服务高可用保证

RocketMQ的集群部署:

  • 单个master的分支
  • 多个Master 模式:集群中有多个 Master 节点,彼此之间相互独立。生产者可以将消息发送到任意一个 Master 节点,消费者也可以从任意一个 Master 节点消费消息
  • 多个Master 和 多个Slave 模式 :
    • 同步双写:每个 Master 节点都有一个或多个 Slave 节点与之对应。在消息写入时,生产者发送的消息不仅要写入 Master 节点,还要同步写入对应的 Slave 节点,只有当 Master 和 Slave 都写入成功,才会向生产者返回成功响应。
    • 异步复制:同样是每个 Master 节点配备一个或多个 Slave 节点,但消息写入时,生产者发送的消息只需要写入 Master 节点成功,就会向生产者返回成功响应,而 Master 节点会异步地将消息复制到 Slave 节点

为什么RocketMQ不使用Zookeeper,反而自己写NameServer>

在第三种模式中,Master只需要做好自己的事情就行了,不需要需要知道彼此的存在。

ZooKeeper可以提供Master选举功能。比如Kafka用来给每个分区选一个broker作为leader。

对于RocketMQ来说,topic的数据在每个Master上是对等的,没有哪个Master上有topic上的全部数据。不用处理维护之间的关系。

RocketMQ的高可用:
  • NameServer的高可用:NameServer存放的数据相同
  • BrokerServer: 主从模式,从可以被消费,并且从节点可以转成主
  • consumer 的高可用:当master不可以用的话,可以从slave读取
  • produce : 多个master读取

raft的模式可以自动选择主节点

  • 每个 BrokerNameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer。
  • ProducerNameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。Producer 完全无状态。
  • ConsumerNameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave 发送心跳。Consumer 既可以从 Master 订阅消息,也可以从 Slave 订阅消息。
http://www.dtcms.com/a/113264.html

相关文章:

  • C,C++语言缓冲区溢出的产生和预防
  • 【2012】【论文笔记】太赫兹波在非磁化等离子体——
  • 【国产突围!致远电子ZXDoc如何打破Vector垄断,成为新能源车研发“神器”?】
  • Xshell Plus 6下载与安装
  • 【机器学习】机器学习工程实战-第4章 特征工程
  • LabVIEW商业软件开发注意问题
  • C语言-基础语法学习
  • 【Linux系统】linux下的软件管理
  • 大数据技术发展与应用趋势分析
  • `use_tempaddr` 和 `temp_valid_lft ` 和 `temp_prefered_lft ` 笔记250405
  • web性能检测工具lighthouse
  • k8s 1.23升级1.24
  • JavaSE基础——第六章 类与对象(二)
  • 使用dockerbuildx在x86机器上构建arm版docker镜像
  • 神经网络基础
  • 嵌入式AI简介
  • java面向对象 - 封装、继承和多态
  • 浅谈ai - Activation Checkpointing - 时间换空间
  • HANA如何在存储过程里执行动态SQL
  • 智慧节能双突破 强力巨彩谷亚VK系列刷新LED屏使用体验
  • 初识Linux-基本常用指令(一篇学会操作指令)
  • 03.unity开发资源 获取
  • 05.unity 游戏开发-3D工程的创建及使用方式和区别
  • Windows程序中计时器WM_TIMER消息的使用
  • Golang的Goroutine(协程)与runtime
  • 使用MATIO库读取Matlab数据文件中的稀疏矩阵
  • JAVA阻塞队列
  • OrangePi入门教程(待更新)
  • C++开发工具全景指南
  • 【java】在 Java 中,获取一个类的`Class`对象有多种方式