kafka依賴zookeeper緣由解析及應用場景

kafka簡介:web

kafka是一個發佈訂閱消息系統,由topic區分消息種類,每一個topic中能夠有多個partition,每一個kafka集羣有一個多個broker服務器組成,producer能夠發佈消息到kafka中,consumer能夠消費kafka中的數據。kafka就是生產者和消費者中間的一個暫存區,能夠保存一段時間的數據保證使用。

緩存

kafka+zookeeper服務器

zookeeper做爲解決分佈式一致性問題的工具而被kafka依賴。而分佈式模式,即去中心化的集羣模式,須要讓消費者知道如今有哪些生產者(對於消費者而言,kafka就是生產者)是可用的。若是沒了zk消費者如何知道呢?若是每次消費者在消費以前都去嘗試鏈接生產者測試下是否鏈接成功,效率就會變得很低。app

Kafka使用zk的分佈式協調服務,將生產者,消費者,消息儲存(broker,用於存儲信息,消息讀寫等)結合在一塊兒。同時藉助zk,kafka可以將生產者,消費者和broker在內的全部組件在無狀態的條件下創建起生產者和消費者的訂閱關係,實現生產者的負載均衡。負載均衡

1. broker在zk中註冊分佈式

kafka的每一個broker(至關於一個節點,至關於一個機器)在啓動時,都會在zk中註冊,告訴zk其brokerid,在整個的集羣中,broker.id/brokers/ids,當節點失效時,zk就會刪除該節點,就很方便的監控整個集羣broker的變化,及時調整負載均衡。工具

2. topic在zk中註冊oop

在kafka中能夠定義不少個topic,每一個topic又被分爲不少個分區。通常狀況下,每一個分區獨立在存在一個broker上,全部的這些topic和broker的對應關係都有zk進行維護測試

3. consumer(消費者)在zk中註冊日誌

  1)註冊新的消費者,當有新的消費者註冊到zk中,zk會建立專用的節點來保存相關信息,路徑ls /consumers/{group_id}/  [ids,owners,offset],Ids:記錄該消費分組有幾個正在消費的消費者,Owmners:記錄該消費分組消費的topic信息,Offset:記錄topic每一個分區中的每一個offset

  2)監聽消費者分組中消費者的變化 ,監聽/consumers/{group_id}/ids的子節點的變化,一旦發現消費者新增或者減小及時調整消費者的負載均衡。

4. kafka的應用場景

  1)日誌收集:一個公司的各類應用均可以做爲生產者將日誌吐到kafka,再由hbase,solr,es等來消費kafka的日誌做統計,查錯。
  2)消息系統:解耦和生產者和消費者、緩存消息等。

  3)用戶活動跟蹤:Kafka常常被用來記錄web用戶或者app用戶的各類活動,如瀏覽網頁、搜索、點擊等活動,這些活動信息被各個服務器發佈到kafka的topic中,而後訂閱者經過訂閱這些topic來作實時的監控分析,或者裝載到hadoop、數據倉庫中作離線分析和挖掘。

  4)運營指標:Kafka也常常用來記錄運營監控數據。包括收集各類分佈式應用的數據,生產各類操做的集中反饋,好比報警和報告

相關文章
相關標籤/搜索