RocketMQ 了解

一.RocketMQ介绍

Apache RocketMQ是一款具有低延迟、高性能和高可用,数十亿容量和灵活可扩展的分布式消息传递和流媒体平台。

由4个部分组成,他们中的每一个都可以在没有单点故障的情况下进行水平扩展:name servers,borkers,producers,cousumers。


二.RocketMQ网络部署特点

Broker集群有多种配置方式:
1,单Master
    优点:除了配置简单没什么优点
    缺点:不可靠,该机器重启或宕机,将导致整个服务不可用
2,多Master
    优点:配置简单,性能最高
    缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性
3,多Master多Slave,每个Master配一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟,毫秒级
    优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预
    缺点:Master宕机或磁盘损坏时会有少量消息丢失
4,多Master多Slave,每个Master配一个Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功
    优点:服务可用性与数据可用性非常高
    缺点:性能比一部HA略低,当前版本主宕备不能自动切换为主
Master和Slave的配置文件参考conf目录下的配置文件
Master与Slave通过指定相同的brokerName参数来配对,Master的BrokerId必须是0,Slave的BrokerId必须是大于0的数
一个Master下面可以挂载多个Slave,同一Master下的多个Slave通过指定不同的BrokerId来区分
如下是常用的部署结构。

RocketMQ 了解_第1张图片

NameServer Cluster

NameServer是一个功能齐全的服务器,主要包含两个功能:
    代理管理,NameServer接受来自代理群集的注册,并提供心跳机制来检查代理是否存活。
    路由管理,每个NameServer将保存有关代理群集的全部路由信息以及用于客户端查询的队列信息。

  • Name Server是一个几乎无状态的结点,Name Server之间采取share-nothing的设计,互不通信。

  • 对于一个Name Server集群列表,客户端连接Name Server的时候,只会选择随机连接一个结点,以做到负载均衡。

  • Name Server所有状态都从Broker上报而来,本身不存储任何状态,所有数据均在内存。

  • 如果中途所有Name Server全都挂了,影响到路由信息的更新,不会影响和Broker的通信。

Broker Cluster

Broker是处理消息存储,转发等处理的服务器。

  • Broker以group分开,每个group只允许一个master,若干个slave。
  • 只有master才能进行写入操作,slave不允许。
  • slave从master中同步数据。同步策略取决于master的配置,可以采用同步双写,异步复制两种。
  • 客户端消费可以从master和slave消费。在默认情况下,消费者都从master消费,在master挂后,客户端由于从Name Server中感知到Broker挂机,就会从slave消费。
  • Broker向所有的NameServer结点建立长连接,注册Topic信息。

Producer Cluster

    生产者支持分布式部署。

    分布式生产者通过多种负载均衡模式向Broker集群发送消息。

    发送过程支持快速故障并具有低延迟。

Consumer Cluster

    消费者也支持Push和Pull模型中的分布式部署。

    它还支持集群消费和消息广播。它提供了实时的消息订阅机制,可以满足大多数消费者的需求。


你可能感兴趣的:(RocketMQ)