首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

揭秘Kafka从入门到精通,架构最全详解

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 集群支持热扩展,可以灵活地应对不同的负载需求。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OkQIj8iuSU7r0i27wKdESUwg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券