• 【原创】Kakfa metrics包源代码分析


    这个包主要是与Kafka度量相关的。

    一、KafkaTimer.scala
    对代码块的运行进行计时。仅提供一个方法: timer——在运行传入函数f的同时为期计时
    二、KafkaMetricsConfig.scala
    指定reporter类,以逗号分隔的reporter类,比如kafka.metrics.KafkaCSVMetricsReporter,这些类必须要在claasspath中指定。另外指定了度量的轮询间隔,默认是10秒。
    三、KafkaMetricsReporter.scala
    KafkaMetricsReporterMBean是基本trait。客户如果要自己定制reporter的话除了要实现KafkaMetricsReporter之外还要实现这个MBean以满足标准的MBean规范。该trait定义了3个抽象方法:
    1. startReporter: 调用yammer的CsvReporter的start方法开启reporter
    2. stopReporter: 调用yammer的CsvReporter的shutdown方法关闭reporter
    3. getMBeanName: 获取MBean的名称,格式为:kafka:type=kafka.metrics.KafkaCSVMetricsReporter
    该scala文件还提供了第二个trait: KafkaMetricsReporter,该trait只有一个方法init,在KafkaCSVMetricsReporter.scala中实现了该init方法
     
    最后,该scala还有一个object: KafkaMetricsReporter。该object维护了一个AtomicBoolean的ReporterStarted变量,标识该reporter是否已经启动,并在启动reporter的过程中充当锁的作用。该object唯一的方法startReporters就是启动MetricConfig中定义的所有reporter——具体方法是调用Utils.createObject方法通过反射机制创建所有reporter,并初始化每个reporter,最后将reporter注册到MBean中。
    四、KafkaCSVMetricsReporter.scala
    该scala可以说Kafka默认提供的一个具体reporter。一共提供了两个MBean:KafkaCSVMetricsReporterMBean和KafkaCSVMetricsReporter。我们先说第一个:KafkaCSVMetricsReporterMBean。该trait是一个私有trait,就是简单地继承了KafkaMetricsReporterMBean。
    而第二个trait继承了KafkaMetricsMBean和KafkaCSVMetricsReporterMBean,因而实现了前两个trait的4个方法,分别是init, getMBeanName, startReporter和stopReporter。值得一提的是,在init方法中它会创建一个默认为kafka_metrics的子目录,然后判断是否kafka.csv.metrics.reporter.enabled设定为true,如果true的话调用startReporter方法开启report,否则就直接结束。
    五、KafkaMetricsGroup.scala
    该scala定义了一个trait和一个object。就KafkaMetricsGroup trait而言,顾名思义,这应该是个metric组,定义了很多方法,主要的方法就是newGauge、newMeter、newHistogram和newTimer调用yammer框架的api创建不同的度量元对象。
    而该scala的object: KafkaMetricsGroup分别为consumer、server、producer定义了各自的metric列表。当然还提供了remove方法删除给定clientId的metric
  • 相关阅读:
    ubuntu
    ubuntu
    ubuntu14.04,安装Gnome 15.10 (桌面)
    ubuntu14.04,安装Gnome 15.10 (桌面)
    Ubuntu 14.04.3 LTS如何安装谷歌输入法
    Ubuntu 14.04.3 LTS如何安装谷歌输入法
    ubuntu 安装 删除 卸载 Deb 包文件
    失去爆破音规律
    单词发音规律
    英式音标和美式音标的差异
  • 原文地址:https://www.cnblogs.com/huxi2b/p/4401461.html
Copyright © 2020-2023  润新知