Kafka组件

Kafka组件

Kafka核心组件

  • Topic :消息根据Topic进行归

  • Producer:发送消息者

  • Consumer:消息接受者

  • broker:每个kafka实例(server)

  • Zookeeper:依赖集群保存meta信息。

Kafka名词解释和工作方式

  • Producer :消息生产者,就是向kafka broker发消息的客户端。

    • 生产者复杂生产(采集)数据并把数据对接到kafka,比如flume、logstash,生产者往往会监控一个目录或者是一个服务负责把数据传到kafka
    • 生产者就群(组)是有多个进程组成,一个生产者是一个独立的进程
    • 多个生产者发送的数据可以存在同一个topic的同一个partition中
    • 一个生产者生产的数据可以同时传输到多个topic
    • 单个生产者具有数据分发的能力
  • Consumer :消息消费者,向kafka broker取消息的客户端

  • Topic :我们可以理解为一个队列。

  • Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。

  • Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

  • Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。

  • Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka。

Consumer与topic关系

本质上kafka只支持Topic;

  • 每个group中可以有多个consumer,每个consumer属于一个consumer group;
    通常情况下,一个group中会包含多个consumer,这样不仅可以提高topic中消息的并发消费能力,而且还能提高"故障容错"性,如果group中的某个consumer失效那么其消费的partitions将会有其他consumer自动接管。

  • 对于Topic中的一条特定的消息,只会被订阅此Topic的每个group中的其中一个consumer消费,此消息不会发送给一个group的多个consumer;那么一个group中所有的consumer将会交错的消费整个Topic,每个group中consumer消息消费互相独立,我们可以认为一个group是一个"订阅"者。

  • 在kafka中,一个partition中的消息只会被group中的一个consumer消费(同一时刻);一个Topic中的每个partition,只会被一个"订阅者"中的一个consumer消费,不过一个consumer可以同时消费多个partition中的消息。

  • kafka的设计原理决定,对于一个topic,同一个group中不能有多于partition个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。kafka只能保证一个partition中的消息被某个consumer消费时是顺序的;事实上,从Topic角度来说,当有多个partitions时,消息仍不是全局有序的

### 配置和使用 Prometheus 监控 Kafka 组件 #### 使用 JMX Exporter 进行监控设置 为了使 Prometheus 能够有效地监控 Kafka 的性能指标,通常会采用 JMX Exporter 将 Java 应用程序中的 JMX 指标转换成 Prometheus 支持的格式。JMX Exporter 是一个独立进程,可以附加到任何支持 JMX 的应用程序上[^3]。 对于 Kafka 来说,在启动命令中加入特定参数来加载 JMX Exporter agent jar 文件,并指定其监听端口以及配置文件路径: ```bash java -javaagent:/path/to/jmx_prometheus_javaagent.jar=1234:/path/to/config.yaml ... ``` 其中 `config.yaml` 定义了要暴露给 Prometheus 抓取的目标 MBeans 和它们对应的度量名称。 #### 整合 Prometheus Server 完成上述操作之后,下一步是在 Prometheus server 中添加目标 job 以便定期抓取这些由 JMX Exporter 提供的数据点。编辑 `/etc/prometheus/prometheus.yml` 或者其他位置的具体配置文件,增加如下所示的任务定义部分: ```yaml scrape_configs: - job_name: 'kafka' static_configs: - targets: ['localhost:1234'] ``` 这使得 Prometheus 开始周期性地访问本地主机上的 1234 端口获取来自 Kafka broker 的统计信息[^4]。 #### Grafana 数据可视化 最后一步是利用像 Grafana 这样的工具来进行数据展示与分析工作。通过导入预先设计好的仪表板模板,能够快速构建出直观易懂的画面用于日常运维管理。具体做法是从官方仓库下载适用于 Kafka 的 JSON 文件并上传至已安装好插件版本的实例内[^2]。 #### 关键指标监测建议 当涉及到实际部署环境时,应该特别注意以下几个方面的重要测量项以评估系统的健康状况和效率表现: - Broker CPU 利用率、内存占用情况; - 主题分区副本同步状态 (ISR/AR); - 生产者发送消息延迟时间分布直方图; - 消费组滞后偏移量变化趋势图表等[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值