訊息複製需要解決:高效能,高可用,資料一致性
高效能:寫的副本越多,寫的效能越低,讀取不影響
資料一致性,必須採用主從模式的複製方式,同時需要保證在任何時刻,集群的主節點不能超過乙個。
高可用:在主節點宕機後,可以盡快選出新的主節點
一、rocketmq:
(1)傳統複製:複製的基本單位是broker,也就是服務端的程序,採用主從模式,是通過配置寫死的,不支援動態切換
非同步複製:寫入主節點後就返回寫入成功,如果主節點宕機,生產者就不能生產訊息了,消費者可以自動切換到從節點繼續進行消費
同步複製:主從都寫成功,才返回寫入成功
但是這種主從複製模式,犧牲了可用性,換取了比較好的效能和資料一致性,嚴格順序和高可用只能選擇乙個
(2)dledger:寫入時必須要寫到半數以上的節點才返回寫入成功,而且支援通過選舉來動態切換主節點
二、kafka:
複製的基本單位是分割槽,每個分割槽的幾個副本之間,構成乙個小的複製集群,broker只是這些分割槽副本的容器,所以kafka的broker是不分主從的。
分割槽的多個副本採用一主多從,非同步複製方式,在等待足夠多的節點都複製成功後再返回寫入成功,可以配置寫入的副本數量,足夠的副本節點稱為isr(in sync replicas) ,這個數量包含主節點
訊息佇列 訊息佇列
輪詢排程 一次性分發所有訊息,保證訊息平均分配,不管消費者是否能正常消費 訊息應答 保證消費端能確實消費,不丟失 公平 乙個乙個分發所有訊息,在保證分發到的執行緒確認回覆後,才分發下個訊息給下個空閒的消費者,訊息持久化 保證佇列中的訊息不丟失,包括3要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...
訊息佇列 訊息佇列 kafka
kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...
訊息和訊息佇列
在傳統的c 程式當中,我們呼叫 fopen 函式開啟檔案,這個庫函式最終呼叫作業系統 提供的函式 來開啟檔案。而在 windows 中,不僅使用者程式可以呼叫系統的 api函式,反回來,系統也會呼叫使用者程式,這個呼叫是通過訊息來進行的。windows程式設計是一種完全不同於傳統的 dos方式的程式...