22 授人以渔:要是没有这个路由中心,消息中间件可以正常运作么?

授人以渔:要是没有这个路由中心,消息中间件可以正常运作么?
今天的授人以渔,希望能让大家对消息中间件技术的路由中心有一个深度思考。
大家如果认真完成了之前一个授人以渔,对Kafka、RabbitMQ、RocketMQ的架构原理都有了一个认知之后,就会发现,不同的MQ技术总得有一个路由中心的角色。
这个路由中心的角色需要去感知集群里所有的Broker节点,然后需要去配合生产者和消费者,让人家都能感知到集群里有哪些Broker,才能让各个系统跟MQ进行通信。
如果大家之前都对Kafka和RabbitMQ自行查阅资料有了一个基本的了解之后,就会发现Kafka的路由中心实际上是一个非常复杂、混乱的存在。他是由ZooKeeper以及某个作为Controller的Broker共同完成的。
如果你没自行查阅kafka资料,对这句话会不理解,但还是希望大家积极完成每次布置的授人以渔的环节。
RabbitMQ的话自己本身就是由集群每个节点同时扮演了路由中心的角色。
而RocketMQ是把路由中心抽离出来作为一个独立的NameServer角色运行的,因此可以说在路由中心这块,他的架构设计是最清晰明了的。
那么请大家在这里思考一个问题,RocketMQ把NameServer独立抽取出来运行,那么假设这个NameServer集群整体都故障了,失去了这个NameServer集群之后:
RocketMQ还能正常运行吗?
生产者还能发送消息到Broker吗?
消费者还能从Broker拉取消息吗?
End
专栏版权归公众号儒猿技术窝所有
未经许可不得传播,如有侵权将追究法律责任