kafka 九 Kafka訊息的可靠性

2021-10-12 11:37:00 字數 795 閱讀 5902

沒有乙個中介軟體能夠做到百分之百的完全可靠,可靠性更多的還是基於幾個9的衡量指標,比如4個9、5 個9. 軟體系統的可靠性只能夠無限去接近100%,但不可能達到100%。所以kafka如何是實現最大可能的可靠性呢?

你可以建立更多的分割槽來提公升可靠性,但是分割槽數過多也會帶來效能上的開銷,一般來說,3個副本就能滿足對大部分場景的可靠性要求

生產者傳送訊息的可靠性,也就是我要保證我這個訊息一定是到了broker並且完成了多副本的持久化,但這種要求也同樣會帶來效能上的開銷。它有幾個可選項:

1 ,生產者把訊息傳送到leader副本,leader副本在成功寫入到本地日誌之後就告訴生產者訊息提交成功,但是如果isr集合中的follower副本還沒來得及同步leader副本的訊息,leader掛了,就會造成訊息丟失

-1 ,訊息不僅僅寫入到leader副本,並且被isr集合中所有副本同步完成之後才告訴生產者已經提交成功,這個時候即使leader副本掛了也不會造成資料丟失。

0:表示producer不需要等待broker的訊息確認。這個選項時延最小但同時風險最大(因為當server宕機時,資料將會丟失)。保障訊息到了broker之後,消費者也需要有一定的保證,因為消費者也可能出現某些問題導致訊息沒有消費到

預設為true,也就是自動提交offset,自動提交是批量執行的,有乙個時間視窗,這種方式會帶來重複提交或者訊息丟失的問題,所以對於高可靠性要求的程式,要使用手動提交。 對於高可靠要求的應用來說,寧願重複消費也不應該因為消費異常而導致訊息丟失

Kafka訊息模型

一 訊息傳遞模型 傳統的訊息佇列最少提供兩種訊息模型,一種p2p,一種pub sub,而kafka並沒有這麼做,巧妙的,它提供了乙個消費者組的概念,乙個訊息可以被多個消費者組消費,但是只能被乙個消費者組裡的乙個消費者消費,這樣當只有乙個消費者組時就等同與p2p模型,當存在多個消費者組時就是pub s...

Kafka 訊息傳送

建立乙個kafkaprodecer物件,傳入上面建立的properties物件 kafkaproducerproducer new kafkaproducer mykafkaprops 使用prodecerrecord string topic,string key,string value 建構函...

Kafka訊息格式

從0.8.x版本開始到現在的2.x版本,kafka的訊息格式也經歷了 3 個版本 v0 版本 v1 版本和 v2 版本 kafka 從 0.8.x 版本開始到 0.10.x 版本之前的訊息格式通常稱為 v0 版本。下圖中左邊的 record 部分就是 v0 版本的訊息格式,每個 record v0 ...