kafka元語實現

2021-07-31 05:18:01 字數 770 閱讀 5726

如何確保非極端環境下,kafka 不丟資料,以及 kafka 集群盡可能穩定呢?

producer 端設定 ack 為 all(或者說盡可能越多越好,但實際生產裡集群例項過多,這樣設定會影響效能,因此根據具體情況來定),即 確保所有 replication 都拿到資料的時候,send 方法才得以返回,以此來判斷資料是否傳送成功,那麼理論上來說,此時傳送成功的資料都不會丟失;

unclean.leader.election.enable 設定為 false(預設引數為 true),意思是,當存有你最新一條記錄的 replication 宕機的時候,kafka 自己會選舉出乙個主節點,如果預設允許還未同步你最新資料的 replication 所在的節點被選舉為主節點的話,你的資料將會丟失,因此這裡應該按需將引數調控為 false;

auto.offset.reset 引數設定為 earliest 避免出現 offset 丟失的時候,跳過需要消費的資料的情況,準確來說這裡並非丟失,即使因為引數配置的問題出現跳過的情況,也可以通過前置 offset 找回歷史訊息;

資料持久化的時間需要設定業務足夠接受的程度,我自己業務上使用就是能保證我的資料持久化時間為8個小時,超過8個小時的資料將被清空。

每乙個框架被設計的時候,都有考慮特定的使用場景的,比如kafka就比較適合高吞吐量並且允許少量資料丟失的場景,所以一定要根據應用業務和使用場景來做技術選型。kafka預設實現是至少一次消費資料。如果設定生產者為非同步傳送資料,或者設定ack為0或1會加快速度就變成了最多一次的元語了

Kafka 如何實現 Exactly Once

流式系統中最重要的保證 exactly once,即訊息不會丟失,也不會被重 送 在 kafka 0.11 之前,開啟重試機制只能保證資料不丟失,但是資料有可能有重複 在 kafka 0.11 之後,可以實現資料的精準一次,它能保證多條訊息原子性地寫入到目標分割槽,即要不一起成功,要不都失敗 主要靠...

Kafka高可用實現

資料儲存格式 kafka的高可靠性的保障 於其健壯的副本 replication 策略。乙個topic可以分成多個partition,而乙個partition物理上由多個segment組成。segment分2部分 索引檔案和資料檔案。索引檔案儲存元資料,記錄了訊息在資料檔案中的偏移 offset 訊...

kafka實現wordcount並實現累加操作

先在kafka輸入下列命令充當生產者 bin kafka console producer.sh broker list 192.168.147.133 9092,192.168.147.134 9092,192.168.147.135 9092 topic test034 下列 當消費者 pack...