角色介绍
Producer:消息发送者,如发信者
Consumer:消息接收者,如收信者
Broker:暂存和传输消息,如邮局
Name Server:管理broker,如邮局的管理机构,对比eureka注册中心,他注册的topic及broker的对应关系
Topic:消息分类,Producer可以发送消息到1个或多个topic,Consumer也可以订阅1个或多个topic
Message Queue:类似topic的分区,即子类目。用户并行收发消息
Broker主从
Master节点:主要处理写操作,用于接收Producer的信息,把消息存储到自己的节点当中
Slave节点:只能处理读操作,用于Consumer消费信息,注意Consumer也能从Master中消费信息,这也是Consumer与Broker Master建立长连接的原因
Master节点会通过长连接把消息同步到Slave中,方式可以采用异步或同步
集群特点
Name Server是无状态的,可集群部署,节点之间无消息同步
Broker分Master和Slave,同一组Master和Slave的BrokerName相同。而Master和Slave通过BrokerId进行区分,0表示主节点,非0表示从节点。Master可以有多个Slave,而Slave只能有一个Master,而一组的多个Slave的BrokerId必须不同。每一个Broker都会通过长连接来向所有的Name Server定时注册topic路由信息
Producer向Name Server集群的其中一个节点(随机选择),定期从Name Server获取路由信息,并向提供Topic服务的Master建立长连接(因为Slave只能读,不能写),并定时向master发送心跳,Producer无状态,可集群部署
Consumer向Name Server集群的其中一个节点(随机选择),定期从Name Server获取路由信息,并向提供Topic服务的Master、Consumer建立长连接(因为Master和Slave都能读),并定时向Master、Slave发送心跳,Consumer既可以向Master订阅消息,页可以向Slave订阅消息,订阅规则由Broker配置决定
集群模式
单Master模式:一旦Broker重启或宕机,导致整个服务不可用,可用于本地测试
多Master模式:无Slave,优点:单个Master重启或宕机对应用无影响,缺点:单台机器宕机期间,消息在机器恢复前不能订阅,影响实时性
多Master多Slave异步模式:每一个Master对应一个Slave,有多对Master-Slave,HA采取异步复制方式(即Producer向Broker Master写完消息后,Broker先保持数据,再发送回复给Producer,最后向Slave同步消息),优点:磁盘损坏,消息丢失非常小,且实时性不受影响,宕机可以从Slave消费,此过程对应用透明
多Master多Slave同步模式:每一个Master对应一个Slave,有多对Master-Slave,HA采取同步双写方式(即Producer向Broker Master写完消息后,Broker先保存数据,然后向Slave同步消息,同步完后再发送回复给Producer)。优点:数据与服务都无单点故障,缺点:性能比异步模式大约低10%左右,单消息RT会略高