kafka是一款Apache組織下的一款開源流處理平臺。由Scala開發語言編寫實現。
流平臺具備三個關鍵功能:segmentfault
kafka的主要應用場景:服務器
kafka的幾個核心概念,理解這幾個概念對kafka的正確使用十分重要。spa
1. topic
消息主題,不管是發佈仍是消費都是以topic爲單位,通常一個topic對應一種業務場景blog
2. partition
分區,一個主題能夠對應1~N個分區,kafka能夠保證單個分區的消息的FIFO,而不能保證整個topic消息的FIFO(除非該topic只有一個partition)。kafka的高吞吐的原理也是主要經過增長分區實現的。隊列
3. broker
一個broker表示一臺服務器,一個broker能夠包含多個主題的多個分區。多個broker能夠構成kafka集羣。每一個broker有一個惟一的id。關於分區在broker上的分配策略後面會講到。開發
4. producer
生產者,負責往指定的topic推送消息的角色。rem
5. consumer
消費者,負責從指定topic消費消息的角色。get
6. consumer group
消費組,一個消費組能夠包含多個消費者,一個分區只能同時給同一個消費組內的一個消費者消費(這裏要注意,若是是多個消費組同時消費一個分區是容許的,並且各自的消費偏移量互不干擾)。kafka
7.replication
副本集,副本分首領(leader)副本和跟隨(follower)副本, 分區至少有一個leader副本,0~N個follower副本,producer和consumer負責跟leader副本交互,follower只負責同步leader的數據,以防在leader掛掉的時候,選舉一個follower當選新的leader從而實現高可用。同步
8.offset
偏移量,標識一個消費者在分區中消費到了哪一個位置,消費者每次消費消息的時候都會帶上offset,消費完能夠自動提交當前的offset或手動提交,取決於配置。