集群特点
NameServer
NameServer是无状态的,可集群部署,节点之间无信息同步。
Broker
Broker部署比较复杂,Broker可分为Master和Slave,一个Master可对应多个Slave,一个Slave只能对应1个Master,Master和Slave的对应关系通过Broker的名称决定,名字相同为一组,BrokerId = 0 为Master,BrokerId != 0 为 Slave。Master与Slave中进行数据同步(异步/同步)。
Producer
Producer与NameServer建立长连接,定期从NameServer中同步Topic路由信息,并向提供服务的Master建立长连接,并定时像Broker的Master发送心跳包,Producer完全无状态可集群部署。
Consumer
Consumer与NameServer集群中的一个节点建立长连接,定期从NameServer中同步Topic路由信息,并向提供Topic的Broker的Master和Slave建立长连接,定时发送心跳。Consumer即可从Master中订阅消息,也可以从Slave中订阅,具体看如何配置。
集群模式
单Master模式
风险高,生产环境不建议
多Master模式
优点:配置简单,性能高,可靠性高(异步刷盘丢失少量消息,同步刷盘不丢失任何消息)
缺点:单台宕机,刚机器上的消息在恢复之前无法订阅,影响消息实时性。
多Master多Slave模式(异步)
Producer发送消息,Master落盘,返回结果给Producer同时同步Slave
效率高,Master宕机会丢失少量消息
多Master多Slave模式(同步)
Producer发送消息,Master落盘,同步到Slave,返回结果给Producer
对消息的可靠性要求比较高,效率相对异步比较低(大约低10%)