• RocketMQ NameServer源码剖析


    概述

    NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。

    主要包括两个功能:

    • Broker管理 ,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;
    • 路由信息管理 ,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

    Broker集群、Producer集群、Consumer集群都需要与NameServer集群进行通信。

    1、Producer集群

    Producer集群和NameServer集群中的随机一台建立⻓连接,得知当前要发送的 Topic 存在哪台BrokerMaster上,然后再与其建立⻓连接,支持多种负载平衡模式发送消息。

    注意:消息的生产者,通过NameServer集群获得Topic的路由信息,包括Topic下面有哪些Queue,这些Queue分布在哪些Broker上等。Producer只会将消息发送到Master节点上,因此只需要与Master节点建立连接。

    2、Consumer集群

    它会先和 NameServer 集群中的随机一台建立⻓连接,得 知当前要消费的 Topic 存在哪台 BrokerMaster、Slave上,然后它们建立⻓连接,支持集群消费和广播消费消息。

    消息的消费者,通过NameServer集群获得Topic的路由信息,连接到对应的Broker上消费消息。注意,由于Master和Slave都可以读取消息,因此Consumer会与Master和Slave都建立连接。

    3、Broker集群

    Broker作用:

    1. 接收生产者发送消息,或者消费者消费消息的请求。
    2. 主要负责消息的存储、转发、查询,支持主从部署,一个 Master 可以对应多个 Slave,Master 支持读写,Slave 只支持读。

    一个Broker集群由多组Master/Slave组成,Master可写可读,Slave只可以读,Master将写入的数据同步给Slave。

    Broker 会向集群中的每一台 NameServer 注册自己的路由信息。每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报。

    4、N

  • 相关阅读:
    [项目管理-27]:任务的目的,背后的原因是任务实施首要思考的问题。
    nginx,域名绑定ipv6,本地能访问,但远程无法访问,如何解决?
    跟我读论文丨Multi-Model Text Recognition Network
    博客园美化显示效果
    C语言详细知识点(下)
    js - leetcode-爬楼梯
    【编码】PHP中文路径问题详解
    网络通信基础
    Evil.js源码解读
    新一代分布式实时流处理引擎Flink入门实战操作篇
  • 原文地址:https://blog.csdn.net/java_beautiful/article/details/126906249