Kafka特點(diǎn)
- 分布式
- 多分區(qū)
- 多副本
- 多訂閱者
- 基于ZooKeepler調(diào)度
- 高性能
- 高吞吐量,每秒幾十萬(wàn)
- 低延遲
- 高并發(fā)
- 時(shí)間復(fù)雜度o(1)
- 持久性與擴(kuò)展性
- 數(shù)據(jù)可持久化
- 容錯(cuò)性
- 支持在線水平擴(kuò)展
- 消息自動(dòng)平衡
應(yīng)用場(chǎng)景
- 消息隊(duì)列
- 行為跟蹤
- 元信息監(jiān)控
- 日志收集
- 流處理
- 事件源
- 持久性日志
基本概念
- Producer:消息和數(shù)據(jù)的生產(chǎn)者,向Kafka的一個(gè)topic發(fā)布消息的進(jìn)程/代碼/服務(wù)
- Consumer:消息和數(shù)據(jù)的消費(fèi)者,訂閱數(shù)據(jù)(Topic)并且處理其發(fā)布的消息的進(jìn)程/代碼/服務(wù)
- Consumer Group:邏輯概念,對(duì)于同一個(gè)topic,會(huì)廣播給不同的 group,一個(gè)group中,只有一個(gè)consumer可以消費(fèi)該消息
- Broker:物理概念,Kafka集群中的每個(gè)Kafka節(jié)點(diǎn)
- Topic:邏輯概念,Kafka消息的類別,對(duì)數(shù)據(jù)進(jìn)行區(qū)分、隔離
- Partition:物理概念,Kafka下數(shù)據(jù)存儲(chǔ)的基本單元。一個(gè)Topic數(shù)據(jù),會(huì)被分散存儲(chǔ)到多個(gè)Partition,每個(gè)Parition是有序的
- 每一個(gè)Topic被切分為多個(gè)Partitions
- 消費(fèi)者數(shù)目少于或等于Partition的數(shù)目
- Broker Group中的每一個(gè)Broker保存Topic的一個(gè)或多個(gè)Partitions
- Consumer Group中僅有一個(gè)Consumer讀取Topic的一個(gè)或多個(gè)Partition,并且是唯一的Consumer
- Replication:同一個(gè)Partition可能會(huì)有多個(gè)Replica,多個(gè)Replica之間數(shù)據(jù)是一樣的
- 當(dāng)集群中有Broker掛掉的情況,系統(tǒng)可以主動(dòng)地使用Replicas提供服務(wù)
- 系統(tǒng)默認(rèn)設(shè)置每一個(gè)Topic的replication系數(shù)為1,可以在創(chuàng)建Topic時(shí)單獨(dú)設(shè)置
- Replication的基本單位是Topic的Partition
- 所有的讀和寫都從Leader進(jìn),F(xiàn)ollowers只是作為備份
- Follower必須能夠及時(shí)復(fù)制Leader的數(shù)據(jù)
- 增加容錯(cuò)性和可擴(kuò)展性
- Replication Leader:一個(gè)Partition的多個(gè)Replica上,需要一個(gè)Leader負(fù)責(zé)該P(yáng)artition上與Producer和Consumer交互
基礎(chǔ)結(jié)構(gòu)

kafka1.png
- Producer Api
- Cnosumer Api
- Streams Api
-
Connectors Api
Kafka基礎(chǔ)結(jié)構(gòu)2.png
消息結(jié)構(gòu)

消息結(jié)構(gòu).png
