深入了解Kafka底層原理

2021-09-12 21:33:04 字數 2182 閱讀 6658

一、kafka基礎

1.kafka的基本執行原理?kafka的架構部署?

(1)kafka通過多副本機制實現故障自動轉移;

2.kafka的檔案儲存機制?

3.kafka如何確保訊息的精確傳輸?如何確保訊息的準確儲存?如何確保訊息的正確消費?

4.kafka的常用名詞?

(1)leo(logendoffset):表示每個partititon中最後一條message的位置;

(2)hw(highwatermark):是指consumer能夠看到的此partition的位置,和多副本有關;

(3)replicafator:複製因子;

(4)isr (in-sync replicas):指副本同步佇列,isr中包括:leader和follower;

(5)osr(outof-sync replicas)列表;

(5)assigned replicas,即ar:表示所有的副本(replicas),ar=isr+osr;

二、kafka訊息

1.kafka訊息的物理結構?

2.那麼如何從partition中通過offset查詢message呢?

3.那麼怎麼知道何時讀完一條訊息,否則就讀到下一條訊息的內容了?

4.訊息被傳送到broker中,如何判斷乙個訊息被傳送到哪個partition?

5.kafka訊息如何去重?

6.什麼時候kafka的訊息會重複?

acks=-1時,資料傳送到leader後 ,部分isr的副本同步,leader此時掛掉。重新進行leader選舉時,比如follower1和follower2都有可能變成新的leader。producer端會得到返回異常,producer端會重新傳送資料,資料可能會重複。

6.當producer生產訊息至broker後,isr以及hw和leo的流轉過程?

三、kafka的高可靠性保證

1.kafka如何確保高可靠性?

(1)為了提高可靠性,kafka每個topic的partition有n個副本(replicas),kafka通過多副本機制實現故障自動轉移;

(2)提供了資料複製演算法保證,如果leader發生故障或掛掉,乙個新leader被選舉並可以接受訊息寫入;

2.為了資料的可靠性和永續性,可以設定資料可靠性的級別?

(1)request.required.acks引數:1、0、-1

(2)min.insync.replicas最小副本數為1,如果isr中的副本數少於min.insync.replicas配置的數量時,客戶端會報錯;

(3)什麼情況下kafka的資料最為可靠:request.required.acks=-1+replication.factor>=2且min.insync.replicas>=2

四、kafka的複製原理和複製方式

1.複製原理

(1)當producer傳送一條訊息到broker後,leader寫入訊息並複製到所有follower,其中leader負責維護和跟蹤isr中所有follower滯後的狀態,如果follower「落後」太多或者失效,leader將會把它從isr中刪除。(存在訊息複製延遲)

(2)kafka發生複製時會確保partition的日誌能有序地寫到其他節點上,n個replicas中,其中乙個replica為leader,其他都為follower, leader處理partition的所有讀寫請求。

2.kafka的複製方式(同步方式)?(isr複製方式保證了資料不丟失及吞吐率)

(1)同步複製要求所有能工作的follower都複製完,這條訊息才會被commit,這種複製方式極大的影響了吞吐率;

(2)非同步複製方式:資料只要被leader寫入log就被認為已經commit,這種情況下如果follower都還沒有複製完,落後於leader時,突然leader宕機,則會丟失資料。

(3)kafka採用isr複製方式;

五、kafka和zookeeper的關係

1.kafka哪兩個地方會對zookeeper節點進行維護?

controller和leader

7.kafka同步資料有哪些延遲?

延遲時間,延遲條數(為什麼新版本已經移除?)

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解Dojo Data

譯自http www.sitepen.com blog 2010 10 13 dive into dojo data 使用dojo data有助於快速建立web應用的介面,且易於嵌入各種資料來源。它在使用者介面與底層資料之間提供了一層抽象層,使得使用者介面開發人員能夠專注於ui的開發,而無需擔心資料...