Kafka基礎知識及常用命令

1. 基本信息

    Linux安裝kafka:鏈接

    官方文檔:鏈接

2. 基本概念

    簡單描述:

  • Broker:已發佈的消息保存在一組服務器中,稱之爲Kafka集羣。集羣中的每一個服務器都是一個代理(Broker)。 消費者可以訂閱一個或多個主題(topic),並從Broker拉數據,從而消費這些已發佈的消息。
  • Topic:Kafka將消息分門別類,每一類的消息稱之爲一個主題(Topic)。
  • Producer:生產者可以將數據發佈到所選擇的topic(主題)中。生產者負責將記錄分配到topic的哪一個 partition(分區)中。
  • Consumer:訂閱消息並處理髮布的消息的對象稱之爲主題消費者(consumers)(扒自官方文檔):

    消費者使用一個消費組名稱來進行標識,發佈到topic中的每條記錄被分配給訂閱消費組中的一個消費者實例.消費者實例可以分佈在多個進程中或者多個機器上。
    如果所有的消費者實例在同一消費組中,消息記錄會負載平衡到每一個消費者實例.
    如果所有的消費者實例在不同的消費組中,每條消息記錄會廣播到所有的消費者進程.

    如圖,這個 Kafka 集羣有兩臺 server 的,四個分區(p0-p3)和兩個消費者組。消費組A有兩個消費者,消費組B有四個消費者。
通常情況下,每個 topic 都會有一些消費組,一個消費組對應一個"邏輯訂閱者"。一個消費組由許多消費者實例組成,便於擴展和容錯。這就是發佈和訂閱的概念,只不過訂閱者是一組消費者而不是單個的進程。
    在Kafka中實現消費的方式是將日誌中的分區劃分到每一個消費者實例上,以便在任何時間,每個實例都是分區唯一的消費者。維護消費組中的消費關係由Kafka協議動態處理。如果新的實例加入組,他們將從組中其他成員處接管一些 partition 分區;如果一個實例消失,擁有的分區將被分發到剩餘的實例。
    Kafka只保證partition 分區內的記錄是有序的,而不保證主題中不同分區的順序。每個 partition 分區按照key值排序足以滿足大多數應用程序的需求。但如果你需要總記錄在所有記錄的上面,可使用僅有一個分區的主題來實現,這意味着每個消費者組只有一個消費者進程。

  • Consumer Group:消費組,用於歸組同類消費者。每個consumer屬於一個特定的consumer group,多個消費組可以共同消息一個Topic下的消息,每消費組中的消費者消費Topic的部分消息,這些消費者就組成了一個分組。

3. Kakfa常用命令

    首先需要進入kafka安裝路徑再驗證以下命令

  • 新建topic命令,示例:新建topic:TestTopic,4分區2副本,命令如下
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic TestTopic --partitions 4 --replication-factor 2

    注意,副本數要小於broker的數量

  • 查看所有的topic列表,命令如下:
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --list
  • 查看topic詳細信息,命令如下:
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic TestTopic

    

    截圖中從左至右的列分別表示topic名稱、partition編號,此partions的leader broker編號,副本存放的broker編號,同步broker編號

  • 擴容partition,將剛纔創建的topic中的partion由3個擴容到6個
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic TestTopic --partitions 6

    擴容結果如下

    注意,partition的數量不能減少,否則會報錯,所以擴容之前一定要確認原有partition的數量

  • 刪除topic
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic TestTopic

    如果只出現下面提示,需要將kafka的service.properties配置文件中的delete.topic.enable設置爲true

    正常情況刪除返回日誌如下:

    以上對kafka的topic的增刪改查基本命令介紹完成了,後續若學習到新的實用命令還會補充

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