Kafka學習小結

2021-09-29 21:46:29 字數 2068 閱讀 1776

什麼是kafka

類別:訊息中間 (分布式的訊息佇列系統)

特性:高效能、高可用 、訊息有序

關鍵物件:broker、topic、partition、producer、consumer。

用途:儲存資料、流量削峰

總體架構圖

我使用kafka的先決背景

需要給兄弟方提供資料,且資料量大,兄弟方用於做大資料分析。

同步到的資料傳送到指定的topic,供兄弟方消費。

為什麼不用其他的訊息中介軟體

kafka效能***,且社群活躍。

公司的分布式系統統一使用kafka。

使用kafka可能會出現什麼問題

訊息丟失

重複消費

注:這是所有訊息中介軟體共同可能出現的問題,訊息中介軟體本身是沒有問題的,在於使用者使用過程中。

為什麼會出現訊息丟失和重複消費,如何解決

訊息丟失:傳送與生產端

生產方式:同步和非同步,可以通過producer.type配置,預設是同步,確認 訊息的生產可以通過request.required.acks來配置,0(不確認), 1(leader確認即可),-1(leader和fllower都要確認)

訊息丟失的情況:

非同步生產(acks=0):生產者只管向kafka集**送訊息,當網路異常topic中滿了之後,會出現訊息丟失的情況。

同步生產(acks=1):生產者向topic傳送訊息,leader返**到確認的訊息,還沒來得及同步到fllower的時候程式出現異常,造成資料丟失。

解決方案:

可以在配置檔案設定不限制阻塞超時時間,當緩衝區滿了後,當緩衝區滿時讓生產者一直處於阻塞狀態。

使用同步生產(leader和fllower都要確認收到訊息)。

重複消費:發生在消費端

kafka訊息消費有兩個consumer介面,low-level api和high-level api:

low-level api:消費者自己維護offset的值,可以實現對kafka的完全控制。

high-level api:封裝了partition和offset,使用簡單。

topic中有至少乙個partition,partition中的每一條訊息都有乙個偏移量(offset),消費端消費資料,如果使用hign-level api,每隔一段時間會自動提交一次offset,告訴topic我已經消費到**來了,下次我要從offset+1的地方消費。天有不測風雲,客戶端還沒來得及提交offset,當系統出現異常,或者客戶端程序被人為的kill掉,客戶端恢復正常以後,有一部分資料其實已經消費過了,但是客戶端沒有提交offset,那麼服務端認為你沒有消費,此時這部分資料又會被消費一次,於是造成了資料重複消費的情況,產生髒資料。

解決方案:

資料庫主鍵或者聯合主鍵:如果有重複數的話,會導致資料更新失敗。

資料唯一編號:消費端和生產端協商好,消費端每次消費的時候去redis查一下編號,如果有,則表示已經消費過了,不入庫,如果沒有則正常消費。

疑惑:kafka如何保證高效能和高可用

kafka的leader選舉機制:

kafka可以將topic進行多個分割槽partition,來並行的處理訊息,提高效能,同時為了保證高可用,每個分割槽都會有一定數量的副本replica,這樣當部分伺服器不可用時,副本所在的伺服器就可以頂上來,保證系統可用性。

leader負責讀寫,fllower負責資料同步。當乙個leader發生故障後怎麼從fllower中選擇新的leader呢?

kafka在zookeeper上針對每個topic都維護了乙個isr(in-sync-replica 已同步的副本)的集合,集合的增減kafka都會更新該記錄,如果某分割槽的leader不可用,kafka就從isr中選擇乙個副本作為乙個新的leader,這樣就可以容忍的失敗數比較高,假如某topic有n+1個副本,那麼可以容忍n個伺服器不可用。

kafka階段學習小結(面試)

主要是借鑑這篇文章的一些問題,做乙個小總結,每回看到這些題都要好好思考一下。其他一些問題 請說明什麼是apache kafka?說說kafka的使用場景?使用kafka有什麼優點和缺點?使用kafka效能很好,體現在 請說明什麼是傳統的訊息傳遞方式?請說明kafka相對傳統技術有什麼優勢?解釋kaf...

kafka學習記錄 1 為什麼學習kafka

2019.10.04 學習記錄1 極客時間 kafka核心技術與實戰 一 為什麼學習kafka 就拿資料量激增來說,kafka能夠有效隔離上下游業務,將上游突增的流量快取起來,以平滑的方式傳導到下游子系統中,避免了流量的不規則衝擊。apache kafka是一款開源的訊息引擎系統。訊息傳遞 官方 訊...

Kafka學習筆記 Kafka環境搭建

1.將kafka的tar包上傳到測試環境,解壓到 opt software,配置環境變數 kafka home opt software kafka 2.11 1.1.0 path kafka home bin scala home bin path export kafka home export...