22 授人以漁:要是沒有這個路由中心,消息中間件可以正常運作么?

授人以漁:要是沒有這個路由中心,消息中間件可以正常運作么?
今天的授人以漁,希望能讓大家對消息中間件技術的路由中心有一個深度思考。
大家如果認真完成了之前一個授人以漁,對Kafka、RabbitMQ、RocketMQ的架構(gòu)原理都有了一個認知之后,就會發(fā)現(xiàn),不同的MQ技術總得有一個路由中心的角色。
這個路由中心的角色需要去感知集群里所有的Broker節(jié)點,然后需要去配合生產(chǎn)者和消費者,讓人家都能感知到集群里有哪些Broker,才能讓各個系統(tǒng)跟MQ進行通信。
如果大家之前都對Kafka和RabbitMQ自行查閱資料有了一個基本的了解之后,就會發(fā)現(xiàn)Kafka的路由中心實際上是一個非常復雜、混亂的存在。他是由ZooKeeper以及某個作為Controller的Broker共同完成的。
如果你沒自行查閱kafka資料,對這句話會不理解,但還是希望大家積極完成每次布置的授人以漁的環(huán)節(jié)。
RabbitMQ的話自己本身就是由集群每個節(jié)點同時扮演了路由中心的角色。
而RocketMQ是把路由中心抽離出來作為一個獨立的NameServer角色運行的,因此可以說在路由中心這塊,他的架構(gòu)設計是最清晰明了的。
那么請大家在這里思考一個問題,RocketMQ把NameServer獨立抽取出來運行,那么假設這個NameServer集群整體都故障了,失去了這個NameServer集群之后:
RocketMQ還能正常運行嗎?
生產(chǎn)者還能發(fā)送消息到Broker嗎?
消費者還能從Broker拉取消息嗎?
End
專欄版權(quán)歸公眾號儒猿技術窩所有
未經(jīng)許可不得傳播,如有侵權(quán)將追究法律責任