Kafka架构最全详解
Kafka,作为关键消息中间件,广泛应用于大型架构与顶尖企业。本篇深入解析Kafka架构,掌握其核心技术要点。
Kafka
Apache Kafka 是一个分布式发布-订阅消息系统,由LinkedIn开创的分布式发布-订阅消息系统,于2010年贡献给Apache基金会,迅速成为顶级开源项目,引领消息处理新潮流。
Kafka应用场景有:日志收集系统和消息系统。
Kafka架构
Kafka架构,由多个组件组成,如下图所示:
主要会包含:Topic、生产者、消费者、消费组等组件。
服务代理(Broker)
如下图所示:
Topic(主题)
每个Topic可以被分成多个分区,每个分区在不同的Broker节点上进行存储。
Topic主题的数据以一系列有序的消息进行组织。
生产者(Producer)
可以选择将消息发送到特定分区,或让Kafka自动选择分区。
如下图所示:
生产者负责将消息进行缓冲和批量发送,以提高性能和吞吐量。
消费者(Consumer)
Consumer是Kafka的客户端,订阅并接收一个或多个主题的消息,直接从对应分区拉取数据,实现高效消息处理。
如下图所示:
消费者可按消费组形式组织,组内成员共享消费主题消息,有效实现负载均衡与容错机制,确保系统高效稳定运行。
Consumer Group(消费组)
如果消费者组中的消费者数量多于主题分区的数量,那么一些消费者将处于空闲状态。
ZooKeeper
ZooKeeper是Kafka使用的协调服务,用于管理和协调整个Kafka集群。
它负责维护Broker的元数据、主题的配置信息和消费者组的状态信息。
如下图所示:
ZooKeeper还用于进行Leader选举、分区分配和故障恢复等操作。
总结:
1. 主题(Topic):消息以流的形式存储在主题中,主题是消息的分类名。
2. 生产者(Producer):生产者是能够发布消息到主题的任何对象。生产者将数据发送到 Broker 代理。
3. 服务代理(Broker):已发布的消息保存在一组服务器中,这些服务器被称为代理(Broker)或 Kafka 集群。
4. 消费者(Consumer):消费者可以订阅一个或多个主题,并从 Broker 拉取数据,从而消费这些已发布的消息。
5. Zookeeper:Kafka 使用 Zookeeper 作为其分布式协调框架,用于保证系统的可用性,保存一些元信息,并实现负载均衡。
6. Consumer Group:组内多个的 Consumer 可以共用一个 Consumer Id,组内所有的 Consumer 只能注册到一个分区上去消费,一个 Consumer Group 只能到一个 Topic 上去消费。
7. 位移主题:位移主题的主要作用是保存 Kafka 消费者的位移信息。在 Kafka 新版本中,Consumer 的位移信息 offset 会作为普通消息提交到位移主题(_consumer_offsets)中。
8. 顺序写入和批量处理:Kafka 采用顺序写入和批量处理技术,使用消息累加器将多个消息批量发送,既节省带宽又提高了发送速度。
9. 消息压缩:Kafka 支持消息压缩,支持 gzip、snappy、lz4 格式,可以通过 `compression.type` 配置。
10. 页缓存和零拷贝技术:Kafka 在消息发送后,并没有等到消息写入磁盘后才返回,而是到 page cache 中就返回。同时,Kafka 使用零拷贝技术,提高了数据传输效率。
Kafka 的特性包括高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性和高并发。Kafka 可以处理每秒几十万条消息,并且延迟可以低至几毫秒。它支持消息的持久化存储到本地磁盘,并允许数据备份以防止数据丢失。此外,Kafka 集群支持热扩展,可以灵活地应对不同的负载需求。
-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-