Kafka學習筆記

一、kafka基本認識:
kafka是一個分佈式MQ中間件,由多個broker組成,每個broker是一個節點;你創建一個topic,這個topic可以劃分爲多個partition,每個partition可以存在於不同的broker上,每個partition就放一部分數據。每個topic的數據,是分散放在多個機器上的,每個機器就放一部分數據。
二、引入MQ的優缺點

  1. 優點:解耦、異步和削峯
  • 解耦:不使用MQ,那就是使用接口嘛,當有多個下游需要你傳輸數據時,如果用接口,需要維護多個接口,一段時間後,當某個團隊需要此數據時,又得改自己源碼,太過麻煩,使用MQ就能避這種情況產生。
  • 異步:當使用mq時,只需要注意發送消息,發送成功後,即可返還結果,減少請求時長。
  • 削峯:當MQ過多時,消息隊列會將堆積的消息存儲在磁盤中,當然是通過一定的數據結構存儲,以便能快速查詢。消費者從生產者機器拉取定量消息消費,已達到削峯的目的。(定量如何計算出來的?)
  1. 缺點
  • 服務與MQ強耦合,一旦MQ系統故障,整個服務將不可用。

三、Kafka的高可用原理
既然MQ故障會引發整個服務不可用,那麼Kafka的穩定性是如何保證的呢。
答案就是replica副本機制。每個partition的數據都會同步到吉他機器上,形成自己的多個replica副本。然後所有replica會選舉一個leader出來,那麼生產和消費都跟這個leader打交道,然後其他replica就是follower。寫的時候,leader會負責把數據同步到所有follower上去,讀的時候就直接讀leader上數據即可。只能讀寫leader?很簡單,要是你可以隨意讀寫每個follower,那麼就要care數據一致性的問題,系統複雜度太高,很容易出問題。kafka會均勻的將一個partition的所有replica分佈在不同的機器上,這樣纔可以提高容錯性。

這麼搞,就有所謂的高可用性了,因爲如果某個broker宕機了,沒事兒,那個broker上面的partition在其他機器上都有副本的,如果這上面有某個partition的leader,那麼此時會重新選舉一個新的leader出來,大家繼續讀寫那個新的leader即可。這就有所謂的高可用性了。

寫數據的時候,生產者就寫leader,然後leader將數據落地寫本地磁盤,接着其他follower自己主動從leader來pull數據。一旦所有follower同步好數據了,就會發送ack給leader,leader收到所有follower的ack之後,就會返回寫成功的消息給生產者。(當然,這只是其中一種模式,還可以適當調整這個行爲)

消費的時候,只會從leader去讀,但是隻有一個消息已經被所有follower都同步成功返回ack的時候,這個消息纔會被消費者讀到。
原理圖:
在這裏插入圖片描述
Kafka術語:
Producer
向Kafka發佈消息的實例
Consumer
從Kafka中訂閱Topic的實例
Broker
Kafka集羣中每個實例稱作Broker,由id唯⼀一標⽰示,負責消息存儲、轉發
Controller
每個集羣中會選舉⼀一個Broker作爲Controller,它負責執⾏行分區、副本分配、replica leader選舉,調度數據複製和遷移
Topic
Kafka維護消息的種類,每⼀一類消息由Topic標識。Partition:對Topic中消息⽔水平切分,⾄至少1 partition/每個topic,Partition 內消息有序,多個Parition消息⽆無序
Consumer Group
同⼀一個Consumer Group中的Consumers,Kafka將相應Topic中的⼀一條消息只能被⼀一個Consumer消費,多個Consumer Group實現多播,⼀一條消息被多個Consumer Group消費
Replica
將Partition複製,每⼀一份叫做⼀一個Replica

Replica Leader

每⼀一個Partition都有⼀一個“Leader”負責Partition上所有 的讀寫操作

Replica Follower

每⼀一個Partition都有0個或多個 Follower,只負責同 步Leader的數據

leo

全稱Log EndOffset,表⽰示每個Replica的log最後⼀一條Message,有可能爲髒數據(在page cache中)

Isr

全稱In-Sync Replicas,是Replicas的⼀一個⼦子集,由leader維護isr 列表,Follower從Leader同步數據有⼀一些延遲(包括了延遲時間和延遲 條數兩個維度),任意⼀一個超過閾值都會把該Follower踢出Isr

osr

全稱OutOf-Sync Replicas,新Follower或從Isr列表中剔除放⼊入Osr 列表中

Replicas

Isr + Osr,minIsr:如果isr.size⼩小於minIsr.size寫⼊入不可⽤用,⺫⽬目的是保證replicas數據⼀一致性,犧牲可⽤用性

hw
全稱highWatermark,每個replica都有highWatermark, leader和follower各自負責更新⾃自⼰己的highWatermark狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章