1,Kafka系列學習筆記-認識kafka
阿新 • • 發佈:2018-12-12
慕課學習筆記https://www.imooc.com/learn/1043
1,Kafka概念
1>what?
LinkedIn 開源
分散式資料同步系統Databus
高效能運算引擎Cubert
Java非同步處理框架ParSeq
Kafka流處理平臺
LinkedIn開發
2011年開源,加入apache
三個特性:
1,釋出
2,訂閱
3,資料流的處理
概念
1,物理概念(硬體) 2,邏輯概念(程式碼或者策略邏輯) Producer:資料的生產者 Consumer:資料的消費者 Consumer Group:對於消費的升級 同一個Consumer Group中僅有一個Consumer讀取Topic的一個或多個Partitions,並且是唯一的Consumer 既然在同一個Group中只要一個Consumer為啥還要存在Group? 1>容錯 2>提高效能 Broker:物理概念,伺服器級別的kafka節點 Broker Group中的每一個Broker儲存Topic的一個或者多個Partitions Topic:邏輯概念,訊息類別,對資料進行區分,隔離 Partition:kafka下的最小儲存單元 每一個topic被切分為多個Partitions 消費者資料少於或者等於Partition的數目 Replication:同一個Partition可能會有多個Replica(Partition的備胎) 基本單位Partition 所有的讀和寫都從Leader進,Followers只是作為備份 Follower必須能夠及時複製Leader的資料 增加容錯性和可擴充套件性 Replication Leader: 一個Partition多個Replica只有一個Replication Leader,並且由Replication Leader去和Producer/Consumer去互動。 ReplicaManager:多有分割槽,副本訊息的請求/讀取等等
2,Kafka結構 1>四個核心api
Producer API
Consumer API
Streams API
Connectors API
2>Kafa訊息結構
Offset:訊息當前所處於的偏移是多少 Length:訊息的長度 CRC32:校驗資訊的完整性 Magic:固定的數字,快速判定是不是卡夫卡的訊息 attributes:可選,列舉值 timestamp:時間戳 Key Length 長度 Key Value Length 長度 Value
特點:
分散式
·多分割槽
·多副本
·多訂閱者
·基於Zookeeper排程
高效能
·高吞吐量
·低延遲
·高併發
·時間複雜度O(1)
永續性和擴充套件性
資料可持久化
容錯性
支援線上水平擴充套件:Broker可以有一個或者多個Partition
訊息自動平衡
3,Kafka場景及使用
·訊息佇列: ·行為跟蹤:跟蹤使用者瀏覽行為,實時記錄到Tokit ·元資訊監控:實時監控類似,實時收集使用者行為操作資訊 ·日誌收集:將資料抽象成日誌進行處理 ·流處理:對原始資料進行實時計算,實時處理等等到展示轉換 ·事件源:回溯這些事件的源的處理 ·永續性日誌(commit log):可以在節點間備份日誌
Kafka的簡單案例
啟動
簡單生產者
簡單消費者
1,啟動安裝包中的Zookeeper
➜ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
2,啟動kafka
➜ bin/kafka-server-start.sh config/server.properties
3,建立topic
➜ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
4,檢視topic
➜ bin/kafka-topics.sh --list --zookeeper localhost:2181
test
5,檢視kafka是否啟動
jps
6,開啟消費者視窗
➜ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
7,生產者視窗下作業並觀察消費者視窗是否有響應
➜ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Hello world!