【原创】Kakfa metrics包源代码分析
生活随笔
收集整理的這篇文章主要介紹了
【原创】Kakfa metrics包源代码分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這個(gè)包主要是與Kafka度量相關(guān)的。
一、KafkaTimer.scala 對代碼塊的運(yùn)行進(jìn)行計(jì)時(shí)。僅提供一個(gè)方法: timer——在運(yùn)行傳入函數(shù)f的同時(shí)為期計(jì)時(shí) 二、KafkaMetricsConfig.scala 指定reporter類,以逗號分隔的reporter類,比如kafka.metrics.KafkaCSVMetricsReporter,這些類必須要在claasspath中指定。另外指定了度量的輪詢間隔,默認(rèn)是10秒。 三、KafkaMetricsReporter.scala KafkaMetricsReporterMBean是基本trait??蛻羧绻约憾ㄖ苧eporter的話除了要實(shí)現(xiàn)KafkaMetricsReporter之外還要實(shí)現(xiàn)這個(gè)MBean以滿足標(biāo)準(zhǔn)的MBean規(guī)范。該trait定義了3個(gè)抽象方法: 1. startReporter: 調(diào)用yammer的CsvReporter的start方法開啟reporter 2. stopReporter: 調(diào)用yammer的CsvReporter的shutdown方法關(guān)閉reporter 3. getMBeanName: 獲取MBean的名稱,格式為:kafka:type=kafka.metrics.KafkaCSVMetricsReporter 該scala文件還提供了第二個(gè)trait: KafkaMetricsReporter,該trait只有一個(gè)方法init,在KafkaCSVMetricsReporter.scala中實(shí)現(xiàn)了該init方法 最后,該scala還有一個(gè)object: KafkaMetricsReporter。該object維護(hù)了一個(gè)AtomicBoolean的ReporterStarted變量,標(biāo)識該reporter是否已經(jīng)啟動(dòng),并在啟動(dòng)reporter的過程中充當(dāng)鎖的作用。該object唯一的方法startReporters就是啟動(dòng)MetricConfig中定義的所有reporter——具體方法是調(diào)用Utils.createObject方法通過反射機(jī)制創(chuàng)建所有reporter,并初始化每個(gè)reporter,最后將reporter注冊到MBean中。 四、KafkaCSVMetricsReporter.scala 該scala可以說Kafka默認(rèn)提供的一個(gè)具體reporter。一共提供了兩個(gè)MBean:KafkaCSVMetricsReporterMBean和KafkaCSVMetricsReporter。我們先說第一個(gè):KafkaCSVMetricsReporterMBean。該trait是一個(gè)私有trait,就是簡單地繼承了KafkaMetricsReporterMBean。 而第二個(gè)trait繼承了KafkaMetricsMBean和KafkaCSVMetricsReporterMBean,因而實(shí)現(xiàn)了前兩個(gè)trait的4個(gè)方法,分別是init, getMBeanName, startReporter和stopReporter。值得一提的是,在init方法中它會創(chuàng)建一個(gè)默認(rèn)為kafka_metrics的子目錄,然后判斷是否kafka.csv.metrics.reporter.enabled設(shè)定為true,如果true的話調(diào)用startReporter方法開啟report,否則就直接結(jié)束。 五、KafkaMetricsGroup.scala 該scala定義了一個(gè)trait和一個(gè)object。就KafkaMetricsGroup trait而言,顧名思義,這應(yīng)該是個(gè)metric組,定義了很多方法,主要的方法就是newGauge、newMeter、newHistogram和newTimer調(diào)用yammer框架的api創(chuàng)建不同的度量元對象。 而該scala的object: KafkaMetricsGroup分別為consumer、server、producer定義了各自的metric列表。當(dāng)然還提供了remove方法刪除給定clientId的metric轉(zhuǎn)載于:https://www.cnblogs.com/huxi2b/p/4401461.html
總結(jié)
以上是生活随笔為你收集整理的【原创】Kakfa metrics包源代码分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TortoiseSVN与VisualSV
- 下一篇: 正则表达式(开源框架)