消息队列

消息队列原理以及各种消息中间件
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

Kafka架构解析

发布于 2021-12-05 | 更新于 2024-02-27

1. Kafka整体架构

Kafka整体架构图如下:

image-20211027225406508

Kafka基本概念:

  • Broker:Kafka以Broker集群的方式运行,一个Kafka节点就是一个Broker。理论上可以跨越多个数据中心。Broker负责数据复制,管理主题、分区、消费偏移量等。如果要跨越多个数据中心,数据中心之间的网络延迟需要非常低,因为Kafka Broker之间以及Broker和Zookeeper服务器之间有大量的通信。
    • 在上图中,Kafka集群中包含3个Broker。
  • Topic:即主题,与RocketMQ的Topic类似,使用Topic对消息进行分类,Kafka接收到的每条消息都会放入到一个Topic中。
    • Topic代表发布和消费记录的端点。生产者向主题发布消息,消费者订阅主题进行消费消息;
    • 每条记录有一个键,一个值,一个时间戳和一些元数据组成;
    • 在未指定分区的情况下发布消息时,将使用键的散列选择分区。
  • Producer:消息生产者,负责向Broker发送消息;
  • Consumer:消息消费者,从负责Broker读取并消费消息;
  • ConsumerGroup:消费分组,对于同一个主题,可以被多个消费分组分别消费,每个消费分组有自己的消费偏移量,互不影响;
  • Partition:分区,对Topic的数据进行分布式存储的最小单位。

再次说明下关键点:Kafka每个分区的消息存在在CommitLog文件中,每个Consumer各自维护各自对CommitLog的消费进度(offset),可以从头到尾消费消息,也可以指定offset来重复消费消息,或者跳过某些消息。

接下来的文章会详细讲解这些特性。

References

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/mq/kafka/architecture.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。