kafka學習(一) ---- 基本概念以及環境搭建

kafka學習(一) ---- 基本概念以及環境搭建

前言

因爲項目涉及到kafka,本身之前沒有接觸過這方面的,學習了下,將搭建kafka運行環境同你們分享(單機搭建的Windows下的運行環境,Linux下的因爲懶得裝虛擬機就沒有搭建,之後有時間在分享一次,搭建這個環境就是隻爲了學習)。html

一、基本概念

1.1 什麼是kafka

Apache Kafka is publish-subscribe messaging rethought as a distributed commit log。Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.//官方解釋apache

Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它提供了相似於JMS的特性,可是在設計實現上徹底不一樣,此外它並非JMS規範的實現。kafka對消息保存時根據Topic進行歸類,發送消息者成爲Producer,消息接受者成爲Consumer,此外kafka集羣有多個kafka實例組成,每一個實例(server)成爲broker。不管是kafka集羣,仍是producer和consumer都依賴於zookeeper來保證系統可用性集羣保存一些meta信息。 總體運行機制以下圖:windows

圖來源於官網服務器

更多內容請參看:官方文檔,這裏就不一一翻譯了。數據結構

1.2 kafka的特色

  • 經過I/O的磁盤數據結構提供消息的持久化,這種結構對於即便數以TB的消息存儲也可以保持長時間的穩定性能。
  • 高吞吐量:即便是很是普通的硬件Kafka也能夠支持每秒數百萬的消息。
  • 支持經過Kafka服務器和消費機集羣來分區消息。
  • 支持Hadoop並行數據加載

1.3 涉及的術語

  • Broker Kafka集羣包含一個或多個服務器,這種服務器被稱爲broker
  • Topic 每條發佈到Kafka集羣的消息都有一個類別,這個類別被稱爲Topic。(物理上不一樣Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker上但用戶只需指定消息的Topic便可生產或消費數據而沒必要關心數據存於何處)
  • Partition Partition是物理上的概念,每一個Topic包含一個或多個Partition.
  • Producer 負責發佈消息到Kafka broker
  • Consumer 消息消費者,向Kafka broker讀取消息的客戶端。
  • Consumer Group 每一個Consumer屬於一個特定的Consumer Group(可爲每一個Consumer指定group name,若不指定group name則屬於默認的group)

二、環境搭建

2.1 下載

下載地址http://kafka.apache.org/downloads.html分佈式

2.2 單機搭建win下的運行環境

官網沒有win版本的,下載以後直接按照Linux下解壓縮同樣,解壓以後文件結構以下:ide

2.2.1 配置kafka####

  1. 進入Kafka配置目錄:S:\devTools\kafka_2.11-0.10.0.0\config
  2. 編輯文件「server.properties」 主要配置日誌所在目錄(也可使用默認的)
  3. 找到並編輯「log.dirs=/tmp/kafka-logs」 to 「log.dirs= S:/devTools/kafka_2.11-0.10.0.0/kafka-logs」
  4. 若是Zookeeper在某些其餘的機器或集羣上運行,能夠將「zookeeper.connect:2181」修改成自定義IP與端口。在這個演示中咱們使用了同一個機器,所以不必作修改。文件中的Kafka端口和broker.id也是能夠配置的。其餘設置不變。
  5. Kafka會按照默認在9092端口上運行,並鏈接zookeeper的默認端口:2181。

2.2.2 運行kafka

重要:請確保在啓動Kafka服務器前,Zookeeper實例已經準備好並開始運行。oop

Zookeeper如何安裝運行請參看個人博客:Dubbo與Zookeeper、SpringMVC整合和使用中有關Zookeeper的介紹。性能

kafka在win下的啓動命令都在bin目錄下的Windows文件下,以下圖: 學習

不知道是否是win腳本問題,直接運行這些命令都是失敗的啓動不了kafka,沒有辦法仍是cmd啓動吧。

  1. 進入Kafka安裝目錄S:\devTools\kafka_2.11-0.10.0.0\
  2. 按下Shift+右鍵,選擇「打開命令窗口」選項,打開命令行。
  3. 如今輸入.\bin\windows\kafka-server-start.bat .\config\server.properties 並回車。
  4. 若是一切正常,命令行應當是這樣:
  5. 如今Kafka已經準備好並開始運行,能夠建立主題來存儲消息了。咱們也能從Java/Scala代碼中,或直接從命令行中生成或使用數據。

2.2.3 建立主題

  1. 如今建立主題,命名爲「demo」,replication factor=1(由於只有1個Kafka服務器在運行)。若是集羣中所運行的Kafka服務器不止1個,能夠相應增長replication-factor,從而提升數據可用性和系統容錯性。
  2. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打開新的命令行。
  3. 輸入下面的命令,回車:

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo

結果以下:

2.2.4 建立生產者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打開新的命令行。
  2. 輸入下面的命令,回車:

kafka-console-producer.bat --broker-list localhost:9092 --topic demo

2.2.5 建立消費者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打開新的命令行。
  2. 輸入下面的命令,回車:

kafka-console-consumer.bat --zookeeper localhost:2181 --topic demo

2.2.6 演示

執行以上的命令以後有兩個窗口:一個生產者,一個消費者。

在producer命令行中任意輸入內容,回車;在其餘consumer命令行中能看到相應消息。若是可以將消息推送到consumer端並顯示出來的話,Kafka安裝就完成了。

最後上個成功的截圖:

2.3 經常使用的命令

  1. 列出主題:kafka-topics.bat --list --zookeeper localhost:2181
  2. 描述主題:kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
  3. 從頭讀取消息:kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from -beginning
  4. 刪除主題:kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
  5. 演示一個刪除的:

相關文章
相關標籤/搜索