Enhancer 接入 Kafka

Apache Kafka 是一个分布式事件流平台,用于解耦和削峰。本文介绍了 Kafka 的核心概念,包括 Broker、Controller、Topic、Partition、Replication、ISR 和 Segment,并详细讲解了 Enhancer 应用如何接入 Kafka,包括生产者和消费者的创建及配置。
摘要由CSDN通过智能技术生成

什么是 Apache Kafka(以下简称 Kafka)

Kafka 是一个 分布式 事件流平台, 生产者(Producer) 可以 发布(publish) 事件到 Kafka, 消费者(Consumer) 可以通过 订阅(subscribe) 的方式来消费这些事件. Kafka 会将这些事件存储到磁盘上, 并且存放的时长是可以配置的. 所以消费者可以立即去获取事件来处理, 也可以等有空的时候再来处理.

事件也被叫做 记录(record) 或者 消息(message)

作用

  • 解耦: 通过 pub/sub 的方式实现业务的解耦
  • 削峰: 当大量 event 发送给 Kafka 时, 由于 Kafka 会先存储事件, 消费者可以根据消费能力能行消费

特性

核心概念

Broker

一个 broker 可以理解成一台 Kafka 服务器(server), 用于存放生产者发送过来的事件. 一般 Kafka 会以分布式的方式部署多个 broker, 多个 broker 通过 ZooKeeper 来统一协调, 它们一起组成了一个集群(Cluster).

Controller Broker

Kafka 集群 为了减少对 ZooKeeper 的依赖, 会选举集群内的一个 broker 作为 Controller Broker, Controller Broker 配合 ZooKeeper 一起管理和协调整个集群.

Topic

由于许多不同的生产者(比如: 数据库、传感器、其他系统应用等)实时地向 Kafka 发送大量不同类型的事件. 为了让消费者只处理自己关心的事件, Kafka 将同一类型的事件定义为一个 主题(topic). 生产者在发送事件的时候需要指定事件的主题. 消费者按照主题进行订阅.

Partition

为了提高 Kafka 的吞吐量, Kafka 将同一主题下的事件进行分区(partition)存储, Kafka 会将同一主题下的多个分区均匀的分布到集群内的各个 broker 上. 一个分区可以理解成 broker 里的一个文件夹, 一个分区内的事件会按发送顺序存储. 这样可以用多个消费者同时消费一个主题下的多个分区. 

Replication

为了提高 Kafka 的可靠性, 可以为一个分区生成多个副本(replication), 副本数是可配的. 下图的 Kafka 集群内有 3 个 broker, 并且假设当前只存储了一个主题的事件, 并且这个主题下有 3 个分区. 从图中可以看出, 一个分区有 3 个副本, 并且同一分区的不同副本要分布在不同的 broker 上.

从上图可以看到 相同分区的多个副本中有一个被选举为 leader 副本, 其他的为 follower 副本. 因为一个分区的副本的同步不是绝对实时的, 会有一定的延迟(可以通过 replica.lag.time.max.ms 和 zookeeper.session.timeout.ms 来配置), 为了保证事件的一致性所以必须从这多个副本中选举一个副本作为 leader, 由它来处理事件的存储和消费, follower 副本则只会从 leader 副本里同步数据.

ISR(In-Sync Replicas)

副本同步队列: 一个分区的多个副本组成的队列, 如果副本在这个队列中, 那说明这个副本和 leader 是保持同步的, 如果某个副本长时间未和 leader 同步, Controller Broker 会将 这个副本移除 ISR, 把它放到 OSR(Outof-Sync Replicas) 中. 当 leader 出现问题, 需用重新选举 leader 时, Controller Broker 会优先从 ISR 中选举.

Segment

为了进一步加快事件的读写速度, Kafka 会将同一个分区的事件按照分段(segment)来存储, 一个分段包含数据(log)文件和索引(index)文件. 一个分段的大小可以通过 log.segment.bytes 来配置。

当一个 event 被转发到某个分区存储时, Kafka 会给这个 event 分配一个序号(offset)(序号是递增的), 然后将这个 event 添加到最后一个 segment 的末尾.

每个分段将本分段内的第一个 event 的序号作为分段的名称, 所以第一个分段包含 00000000000000000000.log 和 00000000000000000000.index. 其中 index 文件中存储了 offset 和 offset 对应 event 在 log 文件中的位置(position). 为了减少 ind

目录

什么是 Apache Kafka(以下简称 Kafka)

作用

特性

核心概念

Broker

Controller Broker<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值