訊息中介軟體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...