explain,mysql,技术分享
支持发布订阅(PubSub)和点对点(P2P)消息模型 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 (RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证) 支持拉(pull)和推(push)两种消息模式 pull其实就是消费者主动从MQ中去拉消息,而push则像rabbit MQ一
目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要优势有: 支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持) 支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提) 支持 18 个级别的延迟消息(Kafk
名称服务器(NameServer)用来保存 Broker 相关元信息并给 Producer 和 Consumer 查找Broker 信息。NameServer 被设计成几乎无状态的,可以横向扩展,节点之间相互之间无通信,通过部署多台机器来标记自己是一个伪集群。 每个 Broker 在启动的时候会到 NameServe
Broker 在启动时向所有 NameServer 注册(主要是服务器地址等) ,生产者在发送消息之前先从NameServer 获取 Broker 服务器地址列表(消费者一样),然后根据负载均衡算法从列表中选择一台服务器进行消息发送。 NameServer 与每台 Broker 服务保持长连接,并间隔 30S 检查
所有消息服务器都是 Master ,没有 Slave 。这种方式优点是配置简单,单个 Master 宕机或重启维护对应用无影响。缺点是单台机器宕机期间,该机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受影响。每个 Master 配置一个 Slave,所以有多对 Master-Slave,消息采用异步复制方式,
NameServer 集群 提供轻量级的服务发现及路由,每个 NameServer 记录完整的路由信息,提供相应的读写服务,支持快速存储扩展。 NameServer是一个功能齐全的服务器,主要包含两个功能: Broker 管理,接收来自 Broker 集群的注册请求,提供心跳机制检测 Broker 是否存活