美文网首页
rocketmq各节点间的关系

rocketmq各节点间的关系

作者: 时之令 | 来源:发表于2018-07-25 18:41 被阅读0次

    主要包括四个部分:
    NameServer集群:

    提供轻量级的服务发现和Topic路由信息。每个服务记录完整的路由信息,路由信息存储在内存中,

    提供相应的读写服务,并且支持快速存储扩展。Broker会定时的发送路由信息到NameServer中的

    每个机器进行更新,NameServer的集群是无状态的。

    Broker集群:

    Broker主要提供轻量级TOPIC和QUEUE机制。支持push和pull两种模式,有自身的容错机制(2 copies or 3 copies),

    同时,也提供强大的峰值填充,亿级堆积能力。出此,还提供容灾恢复,丰富统计和报警机制,

    所有这些优点,都是传统消息系统所缺乏的。一个集群有一个统一的名字,一个集群下有多个Master,

    每个Master下可以有多个Slave。Master和Slave算是一个组合,拥有相同的BrokerName,不同的BrokerId,

    Master的BrokerId是0,Slave的Id则要比0大。Master与Slave之间可以进行同步复制或异步赋值,

    上图中画的是Data Sync(数据同步复制)。

    Producer集群:

    通过负载均衡,向Broker集群发送消息。发送过程中支持快速衰竭和低延迟。拥有相同的ProducerGroup。

    Consumer集群:

    消费者也支持分布式部署的push和pull模式,同时也支持集群消费和消息广播。

    它提供了实时的消息订阅机制,能满足大部分消费者的需求。拥有相同的ConsumerGroup。

    NameServer、Broker、Producer、Consumer之间如何进行通信,如何工作:

    NameServer和Broker:

    NameServer主要做两件事情,第一就是管理Broker,接受来自Broker集群发送的注册,

    以及提供心跳机制来检查我们的Broker是否还存活。第二件事情就是管理路由信息,

    每一个NameServer都存储有路由信息和队列信息,提供给Producer和Consumer查询。

    Broker主要负责消息的存储和传递,消息查询等。主要包含远程模块、客户端管理、存储服务、HA服务和索引服务。

    Broker(不管是Master还是Slave)和每一台NameServer机器来建立TCP连接。
    Broker在启动的时候调用BrokerController中start方法,获取远程nameServerAddressList(远程NameServer服务列表),
    Broker对nameServerAddressList进行for循环处理,注册自己配置的topic信息到NameServer集群的每一台机器中。

    即每一台NameServer都有该Broker的topic的配置信息。Master与Master之间无连接,Master与Slave之间有连接。

    Producer和NameServer:
    每一个Producer与NameServer集群中的一台机器建立TCP连接,从这台NameServer上拉取路由信息。

    Producer和broker:
    Producer和它要发送的topic相关的Master类型的Broker建立TCP连接,用于发送消息以及定时的心跳信息。
    Broker中记录该Producer的信息,供查询使用。

    Consumer和NameServer:
    每一个Consumer会和NameServer集群中的一台机器建立TCP连接,会从这台NameServer上拉取路由信息,进行负载均衡。

    Consumer和Broker:
    Consumer可以与Master或者Slave的Broker建立TCP连接来进行消费消息,Consumer也会向它所消费的Broker发送心跳信息,供Broker记录。

    原文链接:https://blog.csdn.net/yhl_jxy/article/details/77512226

    相关文章

      网友评论

          本文标题:rocketmq各节点间的关系

          本文链接:https://www.haomeiwen.com/subject/hbdmmftx.html