一、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的開發,而無需擔心資料...