Kafka筆記基礎概念和安裝配置

1       定義

Kafka是一個分佈式消息隊列,是由apache開源的一個消息系統,用scala寫成。

它提供了類似於JMS的特性,但是在設計實現上完全不同,此外它並不是JMS規範的實現。

kafka對消息保存時根據Topic進行歸類,發送消息者成爲Producer,消息接受者成爲Consumer,此外kafka集羣有多個kafka實例組成,每個實例(server)成爲broker。

無論是kafka集羣,還是producer和consumer都依賴於zookeeper來保證系統可用性集羣保存一些meta信息。

2       概念

一個topic可分爲多個partitions,每個partition爲一個目錄,partition命名規則爲:topic名稱+有序序號,序號從0開始,最大值爲partition數量減一。每個partition(目錄)包含多個大小相等的segment數據文件,相當於一個大文件被平均分配到多個大小相等的segment中,每個segment包含多個消息,消息數不一定相同。

topicànpartitions(目錄)

partitionànsegments

segmentàn msgs

一個topic可以被多個group訂閱,topic會發送到所有的group。

topic中的一條特定的消息,只會被訂閱此topic的每個group中的其中一個consumer消費,此消息不會發送給一個group中的多個consumer。

一個consumer可以同時消費多個partition。

kafka保證一個patition中的消息被某個consumer消費時是有序的,不保證patitions之間消息的有序性。

即:一個消息或partition只能被一個consumer消費,消費完就沒了。

同一個group中不能有多餘partitions個數的consumer同時消費,否則某些consumer將無法得到消息。

一個group可以有多個consumer,一個consumer只能屬於一個group。通常情況下,一個group中會包含多個consumer,這樣不僅可以提高topic中消息的併發消費能力,還能提高“故障容錯”性,如果group中的某個consumer失效了,那麼其消費的patitions將會由其他consumer自動接管(觸發kafka的rebalance)。

3       安裝配置

3.1         安裝

上kafaka.apache.org下載、解壓、配置環境變量即完成安裝。kafka依賴zookeeper,需先安裝zookeeper。

環境變量:

export KAFKA_HOME=xxx

export PATH=${KAFKA_HOME}/bin:$PATH

3.2         配置

3.2.1       配置server.properties

各服務器上的server.properties裏的broker.id值不能重複。

host.name爲本機IP,若不改則報錯connection to localhost:port unsuccessful。

3.2.2       配置consumer.properties

3.2.3       配置producer.properties

3.3         啓動

[root@yhnormal kafkahome]#bin/kafka-server-start.shconfig/server.properties

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章