kafka:
分布式的發布-訂閱訊息系統,主要用於處理活躍的資料
特點:高吞吐量:
每秒百萬級別的生產消費----生產消費
永續性:
由完善的訊息儲存機制,確保資料的高效安全的持久化----中間儲存
分布式:
基於分布式的儲存和容錯機制----整體的健壯性
kafka的元件:
kafka服務:
topic:(主題) kafka處理的訊息的不同分類,每個topic都是有分割槽的
broker:(訊息**) kafka中的乙個kafka服務節點稱為broker,用來儲存訊息資料,存在硬碟中
partition:(topic物理上的分割槽) 乙個topic在broker上有乙個或者多個partition,分割槽在建立topic的時候指定
message:(訊息) 通訊的基本單位,乙個message在乙個partition
kafka相關服務:
producer:資料和訊息的生產者,向kafka的乙個topic傳送訊息
consumer:訊息和資料的消費者,定於topic並處理其發布的訊息
zookeepr:協調kafka的正常執行
kakfa特點:
解耦:訊息系統在處理過程中插入乙個隱含、基於資料的介面層。
冗餘:訊息佇列持久化,防止資料丟失。
擴充套件性:訊息佇列解耦處理過程,容易擴充套件處理過程。
可恢復性:處理過程失效,恢復後可繼續處理。
順序保證:訊息佇列保證順序。kafka保證乙個partition內訊息有序。
非同步通訊:訊息佇列允許訊息加入佇列,等需要時再處理。
kafka 的術語
kafka 架構
典型kafka架構
乙個典型的kafka集群中包含若干producer(可以是web前端應用產生的訊息,也可以是類似通過上網flume收集上網日誌產生的events等),若干broker(kafka支援水平擴充套件,一般broker數量越多,集群吞吐率越高),若干consumer group,以及乙個zookeeper集群。kafka通過zookeeper管理集群配置及服務協同。producer使用push模式將訊息發布到broker,consumer通過監聽使用pull模式從broker訂閱並消費訊息。
多個broker協同合作,producer和consumer部署在各個業務邏輯中被頻繁的呼叫,三者通過zookeeper管理協調請求和**。這樣乙個高效能的分布式訊息發布和訂閱系統就完成了。圖上有個細節需要注意,producer刡broker的過程是push,也就是有資料就推送給broker,而consumer給broker的過程是pull,是通過consumer主動去拉資料的,而不是broker把資料主動傳送給consumer端的。
producer、consumer、broker以及zookeeper返四者的關係
我們看上面的圖,我們把broker的數量減少,叧有一台。現在假設我們按照上圖進行部署:
server-1 broker其實就是kafka的server,因為producer和consumer都要去連它。broker主要還是做儲存用。
server-2是zookeeper的server端,zookeeper的具體作用你可以去上網查,在這裡你可以先想象,它維持了一張表,記錄了各個節點的ip、埠等資訊(以後還會講到,它裡面還存了kafka的相關資訊)。
server-3、4、5他們的共同之處就是都配置了zkclient,更明確的說,就是執行前必須配置zookeeper的位址,道理也很簡單,這之間的連線都是需要zookeeper來進行分發的。
server-1和server-2的關係,他們可以放在一台機器上,也可以分開放,zookeeper也可以配集群。目的是防止某一台掛了。
簡單說下整個系統執行的順序:
1. 啟動zookeeper的server
2. 啟動kafka的server
3. producer如果生產了資料,會先通過zookeeper找到broker,然後將資料存放進broker
大資料(Kafka) 原理
在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調 kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic...
部署 kafka 大資料Kafka集群部署
2 kafka集群部署 1 解壓安裝包 atguigu hadoop102 software tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 2 修改解壓後的檔名稱 atguigu hadoop102 module mv kafka 2.11 0.11.0...
大資料平台與kafka
為什麼大資料平台需要引入kafka呢?是用來解決什麼問題呢?我讀到一篇文章,秒速的很好,這裡引入,作為筆記記錄一下 場景一 我們開發過乙個裝置資訊挖掘平台。這個平台需要實時將採集網際網路關採集到的路由節點的狀態資訊存入資料中心。通常乙個閘道器一次需要上報幾十甚至幾百個變化的路由資訊。全區有幾萬個這種...