metaq

1、metaq如何做集群?
broker做集群。使用相同的server.ini文件,修改brokerId即可,不需要重啟productor,其他broker,以及消費者,他們會自動感知到新加入的broker
消費者做集群
多個服務器可以組成一個集群來消費同一個topic的消息,需要這些消費者要用相同的groupid
2、metaq如何做failover(故障轉移)?
當某個broker重啟或者不能提供服務的時候,生產(chǎn)者可以通過zk來感知到這個變化,將失效的分區(qū)移除,從而做到failover,但是故障感知會有一點延遲,可能在這個期間消息會發(fā)送失敗
當消費集群中的某個消費者掛了,其他消費者會感知到,并重新進行負載
3、負載均衡
生產(chǎn)者負載。生產(chǎn)者啟動的時候會從zk上獲取topic對應的broker和分區(qū)列表,默認的負載均衡策略是輪詢,也可以自定義負載均衡策略
消費者負載。消費者負載策略如下:
每個分區(qū)對同一個group只能掛載一個消費者
如果同一個group下的消費者數(shù)量大于分區(qū)數(shù),多余的消費者不參與消費
如果同一個group下的消費者數(shù)量小于分區(qū)數(shù),有的消費者需要承擔額外的消費任務
4、消費者分組 group
同一個topic下的消息可以由多組消費組來消費,不同的消費者的處理邏輯和業(yè)務處理是不同的,消費速度和消費進度也是不一樣的。同一個分組的消費者都只能消費部分消息,不會重復消費,不同分組的消費者可以重復消費同一個topic的消息。
5、可靠性保證
生產(chǎn)者發(fā)送消息的可靠性保證
生產(chǎn)者發(fā)送消息會等待broker的響應結果,返回成功或失敗的標志,如果成功說明該消息已經(jīng)接收到并存入磁盤,這個過程是個同步的過程,如果返回失敗,生產(chǎn)者會重發(fā)這個消息,所以這當前一條消息已經(jīng)存入磁盤但是因為網(wǎng)絡的原因導致沒有返回響應,有可能引起消息的重復。
broker存儲消息的可靠性保證
broker收到生產(chǎn)者發(fā)過來的消息后,校驗后會存入磁盤,寫入成功后才返回響應。并且broker會在收到1000消息或每隔10s鐘自動刷新到磁盤中

6、消費者消費消息的可靠性
消費者是一條接一條的消費消息,只有前一條消息消費成功才會消費下一條消息,如果消費失敗會重試5次,如果還是失敗會將這條消息存入本地磁盤,然后又后臺線程繼續(xù)重試,主線程繼續(xù)往后走。另外消費者消費的可靠性和offset存儲緊密相關,offset記錄消費的偏移量,如果消費者消費成功后沒有能成功的offset存起來,那么同一個group的其他消費者就會再次消費這個消息,從而造成消息重復。offset的存儲可以存在zk、mysql、文件中,如果存在zk中,zk的可靠性就決定了metaq消費消息的可靠性

7、消息順序的保證
metaq消費者按照消息存入磁盤的先后順序來消費消息,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容