1. 程式人生 > >1,Kafka系列學習筆記-認識kafka

1,Kafka系列學習筆記-認識kafka

慕課學習筆記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!