RocketMQ介绍

RocketMQ 是一个分布式消息中间件,其具有低延迟、高性能和可靠性、万亿级容量、灵活的可扩展性特性。它主要有四部分组成,分别为 name servers,brokers,producers and consumers。

每部分都可以进行水平扩展,而不会出现单点问题。

  • NameServer Cluster:名称服务集群,提供轻量级的服务发现与路由服务,每个名称服务器记录了全部的 broker 的路由信息,并且提供相应的读写服务,支持快速存储扩展。
  • Broker Cluster:broker 集群,broker 通过提供轻量级的主题和队列机制来维护消息存储。它支持推和拉两种模型,包含容错机制(2 个副本或 3 个副本),并提供了强大的平滑峰值,提供积累数以亿计的消息并保证其在原始时间顺序的被消费能力。

此外,broker 也提供灾难恢复、丰富的度量统计和警报机制,所有这些能力在传统的消息传递系统里面都是没有的。

  • Producer Cluster:生产者集群,提供分布式部署,分布式的生产者发送消息到 broker 集群,具体选择哪一个 broker 机器是通过一定的负载均衡策略来决定的,发送消息中支持故障快速恢复,并且具有较低的延迟时间
  • Consumer Cluster:消费者集群,消费者在推和拉模型中支持分布式部署。它还支持集群消费和消息广播。它提供了实时消息订阅机制,可以满足大多数消费者的需求。

broker 在启动时候会去链接 NameServer,然后注册 topic 信息到 NameServer,NameServer 维护了所有 topic 的信息和对应的 broker 路由信息,broker 与 NameServer 之间是有心跳检查的,NameServer 发现 broker 挂了后,会从注册信息里面删除该 broker,这类似 zookeeper 实现的服务注册;producer 则需要配置 nameserver 的地址,然后定时从 NameServer 获取对应 topic 的路由信息(这个 topic 的消息应该路由到那个 broker)。

同时 producer 与 NameServer,proudcer 与 broker 有心跳检查;同理 Consumer 需要配置 NameServer 的地址,然后定时从 NameServer 获取对应 topic 的路由信息(应该从那个 broker 的消息队列获取消息),同时 Consumer 与 NameServer,Consumer 与 broker 有心跳检查。

 

上一篇:Temporary failure in name resolution


下一篇:RocketMQ nameserver启动报错