kafka 在windows 平臺的搭建和簡單實用

1.       kafka介紹

 

1.1.       主要功能

根據官網的介紹,ApacheKafka®是一個分佈式流媒體平臺,它主要有3種功能:

  1:It lets you publish and subscribe to streams of records.發佈和訂閱消息流,這個功能類似於消息隊列,這也是kafka歸類爲消息隊列框架的原因

  2:It lets you store streams of records in a fault-tolerant way.以容錯的方式記錄消息流,kafka以文件的方式來存儲消息流

  3:It lets you process streams of records as they occur.可以再消息發佈的時候進行處理

1.2.       使用場景

1:Building real-time streaming data pipelines that reliably get data between systems or applications.在系統或應用程序之間構建可靠的用於傳輸實時數據的管道,消息隊列功能

2:Building real-time streaming applications that transform or react to the streams of data。構建實時的流數據處理程序來變換或處理數據流,數據處理功能

 

1.3.       詳細介紹

Kafka目前主要作爲一個分佈式的發佈訂閱式的消息系統使用,下面簡單介紹一下kafka的基本機制

  1.3.1 消息傳輸流程

 Producer即生產者,向Kafka集羣發送消息,在發送消息之前,會對消息進行分類,即Topic,上圖展示了兩個producer發送了分類爲topic1的消息,另外一個發送了topic2的消息。

    Topic即主題,通過對消息指定主題可以將消息分類,消費者可以只關注自己需要的Topic中的消息

    Consumer即消費者,消費者通過與kafka集羣建立長連接的方式,不斷地從集羣中拉取消息,然後可以對這些消息進行處理。

    從上圖中就可以看出同一個Topic下的消費者和生產者的數量並不是對應的。

  1.3.2 kafka服務器消息存儲策略

  談到kafka的存儲,就不得不提到分區,即partitions,創建一個topic時,同時可以指定分區數目,分區數越多,其吞吐量也越大,但是需要的資源也越多,同時也會導致更高的不可用性,kafka在接收到生產者發送的消息之後,會根據均衡策略將消息存儲到不同的分區中。

在每個分區中,消息以順序存儲,最晚接收的的消息會最後被消費。

  1.3.3 與生產者的交互

 生產者在向kafka集羣發送消息的時候,可以通過指定分區來發送到指定的分區中

    也可以通過指定均衡策略來將消息發送到不同的分區中

    如果不指定,就會採用默認的隨機均衡策略,將消息隨機的存儲到不同的分區中

  1.3.4  與消費者的交互

在消費者消費消息時,kafka使用offset來記錄當前消費的位置

    在kafka的設計中,可以有多個不同的group來同時消費同一個topic下的消息,如圖,我們有兩個不同的group同時消費,他們的的消費的記錄位置offset各不相同,不互相干擾。

    對於一個group而言,消費者的數量不應該多餘分區的數量,因爲在一個group中,每個分區至多隻能綁定到一個消費者上,即一個消費者可以消費多個分區,一個分區只能給一個消費者消費

    因此,若一個group中的消費者數量大於分區數量的話,多餘的消費者將不會收到任何消息。

2.       Kafka安裝與使用

 

2.1.       下載

  你可以在kafka官網 http://kafka.apache.org/downloads下載到最新的kafka安裝包,選擇下載二進制版本的tgz文件,根據網絡狀態可能需要fq,這裏我們選擇的版本是0.11.0.1,目前的最新版

一、安裝

      1、kafka 需要java環境;

      2、kafka 最新版本內置了 zookeeper,所以不需要安裝zookeeper;

      3、下載kafka最新版本,點擊下載,因爲下載的是tgz文件,所以不需要安裝,解壓到相應的地方就可以了。

      4、bin 目錄下放的是啓動kafka的文件,conf目錄下放的是kafka的各種配置文件。

二、運行

      簡單demo測試,不需要修改任何配置文件,只需要知道 zookeeper的默認端口是2181,生產者的默認端口是9092。

      (可在conf/producer.properties和conf/zookeeper.properties下進行修改)

      1、啓動zookeeper

bin\windows\zookeeper-server-start.bat config\zookeeper.properties

2、啓動kafka

bin\windows\kafka-server-start.bat config\server.properties

 3、創建主題topic,topic = test

bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

-- 查看創建的topic

bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

 4、啓動生產者 producer

bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

啓動生產者之後進入編輯頁面,發送了 "nihao",

       5、啓動消費者 customer

bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic demo --from-beginning

當消費者啓動之後,收到了之前生產者發送的 “nihao”。

 

 

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