kafka學習歷史

2021-10-23 16:18:06 字數 1552 閱讀 4124

訊息中介軟體kafka

一、簡單介紹

二、訊息佇列的兩種模式

點對點模式:只能消費一次

發布/訂閱模式(kafka的模式):可以多次消費

三、基本元件

broker:kafka程序

topic: 訊息分類元件,是乙個邏輯概念

partition:分割槽主要用於提高集群的負載能力,每個partition都是乙個物理資料夾,且對應多個檔案(對應多個segment)

segment:partition中最小的儲存單元,segment檔案由兩部分構成,分別為「.index」和「.log」,分別表示setment索引檔案和資料檔案。檔案命名規則為:partition全域性的第乙個segment從0開始,後續每個segment檔名為上乙個segment檔案最後一條訊息的offset,數值大小為64位,20位數字字元長度,沒有數字用0補充

leader:分割槽的leader,選舉策略依據isr中與leader最近的分割槽作為leader

follower:leader資料的備份,leader、flower共同承擔高可用的作用

consumer group:同乙個組內的不同消費者不能消費同一條資料

四、分割槽策略

指明partition情況下,直接將指明的值作為partition值

沒有指明partion值但有key的情況下,將可以的hash值與topic的partition數進行取餘得到partition的值

既沒有partition值又沒有key值得情況下,第一次呼叫時隨機生成乙個整數(後面每次呼叫在這個整數上自增),將這個值與topic可用的partition總數取餘得到partiton值,也就是常說的round-robin演算法

五、資料可靠性

六、冪等性

實現原理(需要手動開啟)

producer不論向server傳送所少次重複資料,server端都只會持久化一條。broker端會對做快取,當具有相同主鍵的訊息提交時,broker只會持久化一條。在這種情況下冪等性無法保證跨分割槽會話的冪等

事務可以實現跨分割槽跨會話的冪等

七、消費者分割槽分配策略

八、offset維護

九、高效讀寫資料

順序讀寫

應用pagecache(作業系統的優化技術)

零拷貝(作業系統的優化技術)

十、kafka選舉流程

每乙個broker啟動時都會在zookeeper中註冊/brokers/ids/,此節點是乙個臨時節點,任何乙個broker出現故障,此節點都會發生變化。

kafka 集群中有乙個broker會被選舉為controller,負責管理集群broker的上下線,所有topic的分割槽副本分配和leader選舉等工作。controller在zookper中註冊的/controller是乙個臨時節點,其他broker會監聽此節點,從而爭奪controller

controller會將topic資訊寫在zookeeper的/brokers/topic/topic名字/partitions/0/state:「leader」:0,「isr」:[0,1,2]

controller會隨時監控/brokers/ids,以確定是否需要選舉leader

streaming程式記住kafka歷史次數 I

此方法不建議使用 package com.ws.streaming import org.apache.spark.import org.apache.spark.streaming.dstream.import org.apache.spark.streaming.kafka.kafkautils...

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...