日志上報系統(tǒng)Kafka消息隊列優(yōu)化實踐(下)

消費模塊已經(jīng)運行一段時間了,如何查看消費的狀況呢?

KafkaOffsetMonitor

KafkaOffsetMonitor是一個可以用于監(jiān)控Kafka的Topic及Consumer消費狀況的工具。

  1. Visualizations選項卡 > Cluster Overview:查看當(dāng)前Kafka集群的Broker情況;
  2. Topic List選項卡:查看當(dāng)前Kafka集群上topic列表
有兩個Consumer正在消費當(dāng)前topic.png

點擊進(jìn)入Consumer可以查看該Consumer當(dāng)前的消費狀況。

  • 左上角顯示了當(dāng)前Topic的生產(chǎn)速率
  • 右上角顯示了當(dāng)前Consumer的消費速率。
  • 藍(lán)色線條表示當(dāng)前Topic中的Message數(shù)目
  • 灰色線條表示當(dāng)前Consumer消費的offset位置;
  • 紅色線條表示藍(lán)色灰色的差值,即當(dāng)前Consumer滯后于Producer的message數(shù)目。
image.png
image.png
  1. Consumer Groups項卡:查看各partition中的message消費情況
  • topic:創(chuàng)建時topic名稱
  • partition:分區(qū)編號
  • offset:表示該parition已經(jīng)消費了多少條message
  • logSize:表示該partition已經(jīng)寫了多少條message
  • Lag:表示有多少條message沒有被消費。
  • Owner:表示消費者
  • Created:該partition創(chuàng)建時間
  • Last Seen:消費狀態(tài)刷新最新時間。

當(dāng)前有4個Partition,每個Partition中的message數(shù)目分布均勻。其各Partition的Lag(消息堆積)幾乎為0,表示該消費者組的消費能力是可以的。刷新頁面會發(fā)現(xiàn)Lag全變成0,說明消息很快就被消費掉了。


image.png
消息堆積嚴(yán)重情況.png

查看Kafka Topic流量 可以知道當(dāng)前服務(wù)狀態(tài),上報數(shù)據(jù)量的具體情況。

image.png

image.png

總結(jié)

  1. 根據(jù)上述數(shù)據(jù),生成速率和消費速率基本一致,目前狀態(tài)一個消費者完全hold??;
    Q:如果消息堆積嚴(yán)重,消費速率遠(yuǎn)遠(yuǎn)低于生產(chǎn)速度,如何提升呢?
    在當(dāng)前消費組中創(chuàng)建4個消費者,指定每個消費者消費其中一個分區(qū)的消息,在保證消息不會被重復(fù)消費的前提下提升消費速率。
  2. 生成時消息丟失:當(dāng)重啟服務(wù)的時候,服務(wù)會重新實例化會導(dǎo)致日志被清空,如果此時Flume沒有上報會導(dǎo)致部分?jǐn)?shù)據(jù)丟失。但Flume秒級別的延遲這種清空丟失的數(shù)據(jù)非常非常少。我們系統(tǒng)對數(shù)據(jù)有一定的容錯率。
  3. 消費時消息丟失:初始化ConsumerGroup的時候我們設(shè)置 fromOffset值為 latest。
    默認(rèn)情況下,當(dāng)消費者拉取到了分區(qū)的某個消息之后,消費者會自動提交了 offset。設(shè)置為latest:當(dāng)各分區(qū)下有已提交當(dāng)offset時,從提交的offset開始消費;無提交的offset時,消費新產(chǎn)生的該分區(qū)下的數(shù)據(jù)。
    ??? 如果消費者剛拿到這個消息準(zhǔn)備進(jìn)行真正消費的時候,突然掛掉了,消息實際上并沒有被消費,但是 offset 卻被自動提交了... 這怎么辦呢?關(guān)閉閉自動提交 offset,每次在真正消費完消息之后之后再自己手動提交 offset 。
  4. 如何避免重復(fù)消費?同一主題的一條消息只能被同一個消費組下的某一個消費者消費

好文推薦:

如何保證Kafka不丟失消息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容