kafka 入門

Kafka是一個 分布式的、可分區(qū)的、可復制的消息系統(tǒng)。它提供了普通消息系統(tǒng)的功能,但具有自己獨特的設(shè)計。

首先來了解一下Kafka所使用的基本術(shù)語:
Topic
Kafka將消息種子(Feed)分門別類, 每一類的消息稱之為話題(Topic).
Producer
發(fā)布消息的對象稱之為話題生產(chǎn)者(Kafka topic producer)
Consumer
訂閱消息并處理發(fā)布的消息的種子的對象稱之為話題消費者(consumers)
Broker
已發(fā)布的消息保存在一組服務器中,稱之為Kafka集群。集群中的每一個服務器都是一個代理(Broker). 消費者可以訂閱一個或多個話題,并從Broker拉數(shù)據(jù),從而消費這些已發(fā)布的消息。
partition
每一個分區(qū)都是一個順序的、不可變的消息隊列, 并且可以持續(xù)的添加。分區(qū)中的消息都被分配了一個序列號,稱之為偏移量(offset),在每個分區(qū)中此偏移量都是唯一的。 Kafka集群保持所有的消息,直到它們過期, 無論消息是否被消費了。

Client和Server之間的通訊是通過一條簡單、高性能并且?和開發(fā)語言無關(guān)的TCP協(xié)議

生產(chǎn)者(Producer)

生產(chǎn)者往某個Topic上發(fā)布消息。生產(chǎn)者也負責選擇發(fā)布到?Topic上的哪一個分區(qū)。最簡單的方式從分區(qū)列表中輪流選擇。也可以根據(jù)某種算法依照權(quán)重選擇分區(qū)。開發(fā)者負責如何選擇分區(qū)的算法。

消費者(Consumers)

Topic分區(qū)中消息只能由消費者組中的唯一一個消費者處理,所以消息肯定是按照先后順序進行處理的。但是它也僅僅是保證Topic的一個分區(qū)順序處理,不能保證跨分區(qū)的消息先后處理順序。 所以,如果你想要順序的處理Topic的所有消息,那就只提供一個分區(qū)。

kafka的保證
  • 生產(chǎn)者發(fā)送到一個特定的Topic的分區(qū)上的消息將會按照它們發(fā)送的順序依次加入
  • 消費者收到的消息也是此順序
  • 如果一個Topic配置了復制因子( replication facto)為N, 那么可以允許N-1服務器宕機而不丟失任何已經(jīng)增加的消息
消息傳遞保障
  • 最多一次 --- 消息可能丟失,但永遠不會重發(fā)
  • 至少一次 --- 消息絕不會丟失,但有可能重新發(fā)送
  • 正好一次 --- 這是人們真正想要的,每個消息傳遞一次且僅一次
性能

3臺kafka集群 3臺customer(生產(chǎn)者或者消費者):
CPU:8 vCPU, Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
內(nèi)存:16 GB
磁盤:500 GB
實驗條件:3個Broker,1個Topic,6個Partition,無Replication,異步模式,消息Payload為100字節(jié)
測試項目:測試1個Producer和1個Consumer同時工作時Consumer所能消費到的消息量
測試結(jié)果:1,215,613 records/second

#######優(yōu)點和缺點
優(yōu)點

  • 高吞吐率
  • 分布式,高擴展性
  • 容錯性
  • 持久性,可靠性
  • 高并發(fā): 支持數(shù)千個客戶端同時讀寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Kafka入門經(jīng)典教程-Kafka-about云開發(fā) http://www.aboutyun.com/threa...
    葡萄喃喃囈語閱讀 10,986評論 4 54
  • Kafka官網(wǎng):http://kafka.apache.org/入門1.1 介紹Kafka? 是一個分布式流處理系...
    it_zzy閱讀 4,013評論 3 53
  • 一、基本概念 介紹 Kafka是一個分布式的、可分區(qū)的、可復制的消息系統(tǒng)。它提供了普通消息系統(tǒng)的功能,但具有自己獨...
    ITsupuerlady閱讀 1,717評論 0 9
  • Kafka作為一個分布式的流平臺,這到底意味著什么? 我們認為,一個流處理平臺具有三個關(guān)鍵能力: 發(fā)布和訂閱消息(...
    晴天哥_王志閱讀 531評論 0 0
  • kafka的定義:是一個分布式消息系統(tǒng),由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,539評論 1 15

友情鏈接更多精彩內(nèi)容