kafka消息隊列、環境搭建與使用(.net framework)

一:kafka介紹html

kafka(官網地址:http://kafka.apache.org)是一種高吞吐量的分佈式發佈訂閱的消息隊列系統,具備高性能和高吞吐率。git

1.1 術語介紹github

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

可擴展性
在不須要下線的狀況下進行擴容
數據流分區(partition)存儲在多個機器上
高性能
單個broker就能服務上千客戶端
單個broker每秒種讀/寫可達每秒幾百兆字節
多個brokers組成的集羣將達到很是強的吞吐能力
性能穩定,不管數據多大
Kafka在底層摒棄了Java堆緩存機制,採用了操做系統級別的頁緩存,同時將隨機寫操做改成順序寫,再結合Zero-Copy的特性極大地改善了IO性能。
1.3 消息格式apache

一個topic對應一種消息格式,所以消息用topic分類
一個topic表明的消息有1個或者多個patition(s)組成
一個partition應該存放在一到多個server上,若是隻有一個server,就沒有冗餘備份,是單機而不是集羣;若是有多個server,一個server爲leader(領導者),其餘servers爲followers(跟隨者),leader須要接受讀寫請求,followers僅做冗餘備份,leader出現故障,會自動選舉一個follower做爲leader,保證服務不中斷;每一個server均可能扮演一些partitions的leader和其它partitions的follower角色,這樣整個集羣就會達到負載均衡的效果
消息按順序存放;消息順序不可變;只能追加消息,不能插入;每一個消息都有一個offset,用做消息ID, 在一個partition中惟一;offset有consumer保存和管理,所以讀取順序其實是徹底有consumer決定的,不必定是線性的;消息有超時日期,過時則刪除
1.4 原理解析bootstrap

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

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

consumer從kafka裏poll數據,poll到必定配置大小的數據放到內存中處理。每一個group裏的consumer共同消費所有的消息,不一樣group裏的數據不能消費一樣的數據,即每一個group消費一組數據。服務器

consumer的數量和partition的數量相等時消費的效率最高。這樣,kafka能夠橫向的擴充broker數量和partitions;數據順序寫入磁盤;producer和consumer異步負載均衡

二:環境搭建(windows)

Win10下kafka簡單安裝及使用

版權聲明:本文爲博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處連接和本聲明。
本文連接: https://blog.csdn.net/github_38482082/article/details/82112641

      新手教程,老鳥忽略

      使用具體參見http://kafka.apache.org/quickstart#quickstart_multibroker文檔使用說明,若有問題歡迎交流。


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

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

 

下載成功後解壓到本地文件夾D:\Kafka下面

 

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.0\\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-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 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

 

 

相關文章
相關標籤/搜索