kafka項目實例


 一.Kafka概述

  Kafka是Linkedin於2010年12月份創建的開源消息系統,它主要用於處理活躍的流式數據。活躍的流式數據在web網站應用中非常常見,這些活動數據包括頁面訪問量(Page View)、被查看內容方面的信息以及搜索情況等內容。 這些數據通常以日志的形式記錄下來,然后每隔一段時間進行一次統計分析。

  傳統的日志分析系統是一種離線處理日志信息的方式,但若要進行實時處理,通常會有較大延遲。而現有的消息隊列系統能夠很好的處理實時或者近似實時的應用,但未處理的數據通常不會寫到磁盤上,這對於Hadoop之類,間隔時間較長的離線應用而言,在數據安全上會出現問題。Kafka正是為了解決以上問題而設計的,它能夠很好地進行離線和在線應用。

1.1 Kfka部署結構:

 

1.2 Kafka關鍵字:

•Broker : Kafka消息服務器,消息中心。一個Broker可以容納多個Topic。

•Producer :消息生產者,就是向Kafka broker發消息的客戶端。

•Consumer :消息消費者,向Kafka broker取消息的客戶端。

•Zookeeper :管理Producer,Broker,Consumer的動態加入與離開。

•Topic :可以為各種消息划分為多個不同的主題,Topic就是主題名稱。Producer可以針對某個主題進行生產,Consumer可以針對某個主題進行訂閱。

•Consumer Group: Kafka采用廣播的方式進行消息分發,而Consumer集群在消費某Topic時, Zookeeper會為該集群建立Offset消費偏移量,最新Consumer加入並消費該主題時,可以從最新的Offset點開始消費。

•Partition:Kafka采用對數據文件切片(Partition)的方式可以將一個Topic可以分布存儲到多個Broker上,一個Topic可以分為多個Partition。在多個Consumer並發訪問一個partition會有同步鎖控制。

(圖2)

1.3 消息收發流程:

•啟動Zookeeper及Broker.

•Producer連接Broker后,將消息發布到Broker中指定Topic上(可以指定Patition)。

•Broker集群接收到Producer發過來的消息后,將其持久化到硬盤,並將該消息保留指定時長(可配置),而不關注消息是否被消費。

•Consumer連接到Broker后,啟動消息泵對Broker進行偵聽,當有消息到來時,會觸發消息泵循環獲取消息,獲取消息后Zookeeper將記錄該Consumer的消息Offset。

 

1.4 Kafka特性:

•高吞吐量

•負載均衡:通過zookeeper對Producer,Broker,Consumer的動態加入與離開進行管理。

•拉取系統:由於kafka broker會持久化數據,broker沒有內存壓力,因此,consumer非常適合采取pull的方式消費數據

•動態擴展:當需要增加broker結點時,新增的broker會向zookeeper注冊,而producer及consumer會通過zookeeper感知這些變化,並及時作出調整。

•消息刪除策略:數據文件將會根據broker中的配置要求,保留一定的時間之后刪除。kafka通過這種簡單的手段,來釋放磁盤空間。

二. Kafka啟動命令:

啟動Zookeeper服務:

zookeeper-server-start.bat ../../config/zookeeper.properties

啟動Broker服務:

kafka-server-start.bat ../../config/server.properties

通過Zookeeper的協調在Broker中創建一個Topic(主題)

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

查詢當前Broker中某個指定主題的配置信息

kafka-run-class.bat kafka.admin.TopicCommand --describe --zookeeper localhost:2181 --topic testTopic

啟動一個數據生產者Producer

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

啟動一個數據消費者Consumer

kafka-console-consumer.bat --zookeeper localhost:2181 --topic testTopic --from-beginning

 

Zookeeper配置文件,zookeeper.properties配置片段

Broker配置文件,server.properties配置片段


免責聲明!

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



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