RocketMQ基本概念相對(duì)比較簡(jiǎn)單;基本就是【服務(wù)發(fā)現(xiàn)、磁盤存儲(chǔ)惊畏、主從復(fù)制】 這三個(gè)概念;接下來(lái)我就用網(wǎng)絡(luò)拓?fù)鋱D給大家一一介紹密任。
首先我們帶著疑問(wèn)來(lái)探討下颜启;我們Producer怎么去寫消息、寫到哪里 寫到Broker 浪讳? 怎么寫到Broker缰盏?我們Consumer根據(jù)什么來(lái)消費(fèi)? 他們之間關(guān)系是怎么樣的淹遵?
一口猜、Name Server
Name Server就相當(dāng)與一個(gè)注冊(cè)中心、我們Broker先會(huì)把自己的信息先注冊(cè)到Name Server中(包括IP 集群組)透揣、而我們Producer暮的、Consumer也會(huì)先去Name Server做服務(wù)發(fā)現(xiàn)、或者訂閱【主題信息】淌实、去寫消息、或者消費(fèi)消息猖腕。
二拆祈、Broker
Broker一般都是主從、或者一主多從倘感、我們【主題消息】都是存儲(chǔ)在Broker中放坏、主從之間可以【異步復(fù)制】、也可【同步復(fù)制】數(shù)據(jù)老玛;看業(yè)務(wù)要求來(lái)配置淤年;性能也有差異钧敞。
比如寫數(shù)據(jù)都是寫 A Broker Master中;如果A Master掛了麸粮;就不能寫溉苛;只能讀A Slave節(jié)點(diǎn)。而新進(jìn)來(lái)的消息則會(huì)寫到弄诲;B組Broker Maser中愚战。一旦A從消費(fèi)完;就不會(huì)在A組消費(fèi)了齐遵、就直接B組寫寂玲、和消費(fèi)。
二梗摇、Producer
首先會(huì)先去Name Node 做服務(wù)發(fā)現(xiàn)拓哟;Broker以及主題消息都存放在Name Server中;Producer先去Name Server找對(duì)應(yīng)【主題消息】是屬于那個(gè)Broker集群的伶授;這樣才能寫對(duì)消息位置断序。
三、Consumer
Consumer首先要去Name Server訂閱主題谎砾、要先清楚訂閱的主題在Name Server中是屬于那個(gè)Broker集群逢倍。這樣才能消費(fèi)對(duì)。
再則我們可以看看拓?fù)鋱D的線景图;Consumer端可以消費(fèi)A組Master Slave较雕、也可以消費(fèi)B組的Master Slave 就是為了保證高可用。
比如說(shuō)A Master掛了挚币;可以直接消費(fèi)A Slave亮蒋、雖然A組不能寫只能讀(只有Master才能寫)、但能把主題消息寫到B組的Master; 等A組的Slave消費(fèi)完妆毕,直接可以消費(fèi)B組的慎玖。而我們Broker可以無(wú)限擴(kuò)展多個(gè)Broker來(lái)保證高可用。