kafka依赖zookeeper原因解析及应用场景
kafka簡介:
kafka是一個發(fā)布訂閱消息系統(tǒng),由topic區(qū)分消息種類,每個topic中可以有多個partition,每個kafka集群有一個多個broker服務(wù)器組成,producer可以發(fā)布消息到kafka中,consumer可以消費kafka中的數(shù)據(jù)。kafka就是生產(chǎn)者和消費者中間的一個暫存區(qū),可以保存一段時間的數(shù)據(jù)保證使用。
kafka+zookeeper
zookeeper作為解決分布式一致性問題的工具而被kafka依賴。而分布式模式,即去中心化的集群模式,需要讓消費者知道現(xiàn)在有哪些生產(chǎn)者(對于消費者而言,kafka就是生產(chǎn)者)是可用的。如果沒了zk消費者如何知道呢?如果每次消費者在消費之前都去嘗試連接生產(chǎn)者測試下是否連接成功,效率就會變得很低。
Kafka使用zk的分布式協(xié)調(diào)服務(wù),將生產(chǎn)者,消費者,消息儲存(broker,用于存儲信息,消息讀寫等)結(jié)合在一起。同時借助zk,kafka能夠?qū)⑸a(chǎn)者,消費者和broker在內(nèi)的所有組件在無狀態(tài)的條件下建立起生產(chǎn)者和消費者的訂閱關(guān)系,實現(xiàn)生產(chǎn)者的負載均衡。
1. broker在zk中注冊
kafka的每個broker(相當于一個節(jié)點,相當于一個機器)在啟動時,都會在zk中注冊,告訴zk其brokerid,在整個的集群中,broker.id/brokers/ids,當節(jié)點失效時,zk就會刪除該節(jié)點,就很方便的監(jiān)控整個集群broker的變化,及時調(diào)整負載均衡。
2. topic在zk中注冊
在kafka中可以定義很多個topic,每個topic又被分為很多個分區(qū)。一般情況下,每個分區(qū)獨立在存在一個broker上,所有的這些topic和broker的對應(yīng)關(guān)系都有zk進行維護
3. consumer(消費者)在zk中注冊
1)注冊新的消費者,當有新的消費者注冊到zk中,zk會創(chuàng)建專用的節(jié)點來保存相關(guān)信息,路徑ls /consumers/{group_id}/? [ids,owners,offset],Ids:記錄該消費分組有幾個正在消費的消費者,Owmners:記錄該消費分組消費的topic信息,Offset:記錄topic每個分區(qū)中的每個offset
2)監(jiān)聽消費者分組中消費者的變化 ,監(jiān)聽/consumers/{group_id}/ids的子節(jié)點的變化,一旦發(fā)現(xiàn)消費者新增或者減少及時調(diào)整消費者的負載均衡。
4. kafka的應(yīng)用場景
1)日志收集:一個公司的各種應(yīng)用都可以作為生產(chǎn)者將日志吐到kafka,再由hbase,solr,es等來消費kafka的日志作統(tǒng)計,查錯。
2)消息系統(tǒng):解耦和生產(chǎn)者和消費者、緩存消息等。
3)用戶活動跟蹤:Kafka經(jīng)常被用來記錄web用戶或者app用戶的各種活動,如瀏覽網(wǎng)頁、搜索、點擊等活動,這些活動信息被各個服務(wù)器發(fā)布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實時的監(jiān)控分析,或者裝載到hadoop、數(shù)據(jù)倉庫中做離線分析和挖掘。
4)運營指標:Kafka也經(jīng)常用來記錄運營監(jiān)控數(shù)據(jù)。包括收集各種分布式應(yīng)用的數(shù)據(jù),生產(chǎn)各種操作的集中反饋,比如報警和報告
?
轉(zhuǎn)載于:https://www.cnblogs.com/dannylinux/p/10516093.html
總結(jié)
以上是生活随笔為你收集整理的kafka依赖zookeeper原因解析及应用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态网页与动态网页区别
- 下一篇: python六十四课——高阶函数练习题(