欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
一、前言
在上一篇我们介绍了 我的架构梦:(九十七)消息中间件之RocketMQ的高可用机制——消息存储高可用,这一篇我们来说一下消息发送是如何保证高可用的。
我们从前面的几篇文章也了解到,RocketMQ 的消息发送机制是通过 NameServer 监听 Broker 集群的心跳,Producer 从 NameServer 中获取 Broker、Topic 以及 ConsumerQueue 等相关信息,然后 Producer 把指定的 Topic 信息发送到指定的 ConsumerQueue 里去。有点抽象是吧,没关系,先来看一张架构图。
看完整体结构,我们再来看下消息发送局部关联的结构图。
相信大家看完这两张结构图,对 RocketMQ 的消息发送机制有个清晰的脉络了。但你可能会问,老周,那 RocketMQ 消息发送高可用机制在哪里体现的呢?不着急,我们往下看。
既然说的是消息发送高可用,那我们就先来看 Producer 发送消息到 Broker 机器过程中可能遇到的问题