.NET中 kafka消息隊列、環境搭建與使用


前面幾篇文章中講了一些關於消息隊列的知識,就每中消息隊列中間件,我們並沒有做詳細的講解,那么,今天我們就來詳細的講解一下消息隊列之一kafka的一些基本的使用與操作。

一、kafka介紹

kafka:是一種高吞吐量的分布式發布訂閱的消息隊列系統,具有高性能和高吞吐率。

1.1術語介紹

Broker

kafka集群包括一個或多個服務器,這種服務器被稱為Broker

Topic

主題:每條發布到kafka集群的消息都有一個類別,這個類別被稱為Topic,(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker,但用戶是需要指定消息的Topic即可生產或消費數據,而不必關心數據存於何處)

Partition

分區:Partition是物理上的概念,每個Topic包含一個或多個Partition,(一般kafka節點數cpu的總核數)

Producter

生產者:負責發布消息到kafka broder

Consumer

消費者:從kafka broker讀取消息的客戶端

Consumer Group

消費者組:每個Consumer屬於一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name,則屬於默認的group)。

1.2基本特性

可擴展性

在不需要下線的情況下進行擴展,數據流分區(partition)存儲在多個機器上

高性能

單個broker就能服務上千客戶端,單個broker每秒讀/寫可達美國幾百兆字節,多個brokers組成的集群將達到非常強大的吞吐能力。

性能穩定

無論數據多大,kafka在底層采用了操作系統級別的頁緩存,同時將隨機於操作改為順序寫,再結合Zero-Copy的特性集答的改善了IO性能。

1.3消息格式

一個topic對應一種消息格式,因此消息用topic分類,一個topic代表的消息有一個或多個partition組成,一個partition應該存放在多個servier上,如果只有一個server,就沒有冗余備份,是單機而不是集群;如果有多個server,一個server為leader(領導者),其他server為follower(跟隨者),leader需要接收讀寫請求,follower僅作冗余備份,leader出現故障,會自動選舉一個follower作為leader,保證服務不中斷,每個server都可能扮演一些partition的leader核其partition的follower角色,這樣整個集群就會打到負載均衡的效果。

消息按順序存放,消息順序不可改變,智能追加消息,不能插入,每個消息都有一個offset,用作消息ID,在每個partition中唯一,offset由consumer保存和管理,因此讀取順序實際上是完全由consumer決定的,不一定是線性的,消息有超時日期,過期則刪除。

1.4原理解析

producer創建一個topic時,可以指定topic為幾個partition(默認是1,配置num.partitions),然后會把partition分配到每個broker上,分配的算法是:a個broker,第b個partition分配到b%a的broker上,可以指定由每個partition有幾份副本Replication,副本的分配策略為:第c個副本存儲在第(b+c)%a的broder上,一個partition在每個broker上是一個文件夾,文件夾中的文件命名方式為:topic名稱+有序序號。每個partition中文件是一個個的segment,segment file由.index和.log文件組成,兩個文件的命名規則是,上一個segment file的最后一個offset,這樣,可以快速刪除old文件。

producer向kafka里push數據,會自動的push到所有的分區上,消息是否push成功有幾種情況:1、接受到partition的ack就算成功,2、全部副本都寫成功才算成功;數據可以存儲多久,默認是兩天;producer的數據會先存到緩存中,等大小活時間到達閾值時,flush到磁盤,consumer只能讀到磁盤中的數據。

二、win10下kafka簡單安裝以及使用。

http://kafka.apache.org/quickstart#quickstart_multibroker kafka使用文檔說明

kafka依賴於zookeeper,官網下的kafka內置了zookeeper依賴,

1、進入kafka官網,下載頁面: http://kafka.apache.org/downloads 進行下載,選擇二進制文件,在選擇任意鏡像文件下載。

 

 

 下載成功后解壓到本地文件夾,我這里解壓到了D盤

 

2、配置關鍵文件 

只需要關注bin目錄和config目錄

在kafka根目錄下,新建data和kafka-logs文件夾,后面要用到,作為kafka快照和日志的存放文件夾

 

 進入到config目錄,修改service.properties里面log.dirs路徑為log.dirs=E:\\Kafka\\kafka_2.12-2.0.0\\kafka-logs(注意:文件夾分隔符一定是“\\”)

修改zookeeper.properties里面dataDir路徑為dataDir=E:\\Kafka\\kafka_2.12-2.0.00\\data

 

 

 

 【service.properties】

 

 【zookeeper.properties】

3、進行單及實例測試簡單使用

我這里觀景是windows,使用的是路徑E:\\Kafka\kafka_2.12-2.0.0\bin\windows下批處理命令,如果有問題,參見步驟:、

1)啟動kafka內置的zookeeper

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

 

 

 

 出現binding to port…… 標識zookeeper啟動成功,不關閉頁面

2)kafka服務啟動,成功不關閉頁面

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

 

 3)創建topic測試主題kafka,成功不關閉頁面

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

 

 4)創建生產者生產消息,不關閉頁面

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

 

 5)創建消費者接收消息,不關閉頁面

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

 

 

 

 到此,測試結束。對於kafka的使用,本人還是菜鳥一枚,還請高手指點一二。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM