把控全局,掌握 Kafka 整体架构 | 豆包MarsCode AI刷题

106 阅读3分钟

思路阐述

要了解一个中间件,是需要有层次感的,有些没有经验的同学,一上来就去看某个细节的源码,或者通读整个代码,都是吃力不讨好的方式。

更为科学的做法是整体把控+逐个击破,也就是说先对中间件的整体架构有个了解,知道它的架子是怎样的,在脑子里形成一个整体的框架,并且大概能知道里面有啥组成成分,这些组成成分各自有什么用,有个这个基础之后,后面再对每个组成成分进行剖析,如此一来事半功倍。

宏观架构

我们可以先把Kafka宏观看作三层:Producer(生产者),Server(中转者),Consumer(消费者)。

  • 生产者(Producer):很好理解,就是生产者,在 Kafka 中,Producer 负责生产消息并将其发到 Kafka 服务器。Producer 是消息的源头,负责将消息发送到特定的主题,然后给消费者(Consumer)消费。
  • Kafka(消息队列):这里主要负责消息的流转,因为生产者一般不会直接把消息发送给消费者,一般会把消息放到中转站,就和我们快递差不多,商家把快递放到快递站,然后我们有时间就去快递站取快递,Kafka 的作用就是这个快递站,不过快递站一般不会永久存放邮件,会过期进行清除策略,而消息队列是可以进行持久化,也就是将消息存储到磁盘,进行永久存储的,并不是说消费了之后就没有了。
  • 消费者(Consumer):这个是 Kafka 中另外一个重要角色,负责订阅主题并且消费其中的消息,当生产者发送消息给队列之后,如果有消费者订阅了对应的主题,那么消费者就会从队列(Kafka)中拉取消息进行对应的业务处理,可以类比我们拿到快递之后进行的操作,拆箱、使用的过程。

到这里我们就大概了解了 Kafka 的三层架构,这只是一个简单的例子,实际的 Kafka 可能会有更多的机制,比如说消息怎么不丢失,消息给重复消费怎么处理,消息如何顺序发送等。

Kafka 整体架构

上面我们简单说了一下 Kafka 的宏观架构,接下来我们来重点关注一下 Kafka 的整体架构,即把目光聚焦于 Kafka 本身。

Kafka 的本身如下图所示,主要是中间的中转站的部分:

  • Topic:这个是 Kafka 中的核心概念,它是对消息进行分类的一种方式,生产者可以把消息发送到特定的主题中,然后消费者通过订阅主题来接收相关的消息,但是需要注意一个点,主题只是一个逻辑概念,实际上一个主题可以划分为多个分区(Partition),从而实现消息的并行处理以及负载均衡,数据主要还是存储在 Partition。
  • Partition:分区这个是 Kafka 中一个重要概念,它是主题的物理存储单位。每个分区都是一个有序的、不可变的消息序列,可以被独立读写。分区在物理上对应一个文件夹以及文件夹下面的文件,分布的命名规则为主题名称后连接"-"连接符,之后再接分区编号,比如TopicA-1就表示主题A得1号分区,每个分区又可以有一至多个副本(Replica),以提高可用性。

总结

到这里 Kafka 的整体架构基本就讲完了,大概总结一下:

  • 生产消费:生产者 Producer、消费者 Consumer
  • 存储:节点 Broker、逻辑主题 Topic、物理分片 Partition

这些东西组合在一起,就构成了 Kafka 的整体架构