Kafka学习笔记 | 青训营笔记

84 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记

初识Kafka

  1. 为什么要用发布与订阅消息系统

在最简单的消费场景下,可以使用直连的模型,比如服务器需要把产生的度量指标发送给度量服务器。

image.png

随着数据量的增加,单个度量服务器无法应对,因此每个生产者都需要与多个消费者连接,将数据发送给不同的消费者。

image.png

可以用一个队列,用于缓存和转发消息

image.png

如果系统更加复杂,又需要有更多的不同种类的消息需要转发,那就需要多个队列,每个队列用于转发不同类型的数据。这样,系统又会变得复杂起来。

image.png

这时候就轮到Kafka出场了!

  1. kafka组件

消息:Kafka的消息处理单元

批次:一组消息。如果每次只转发一条消息,会造成大量的网络开销,导致网络吞吐率太低,如果一批次包含太多消息,就会导致发送一个消息的延迟太高。

主题和分区:一个主题就是一类消息,一个主题内有多个分区。消息在分区内以先入先出的顺序被消费,但是无法保证在整个主题内的先后顺序。不同分区可以在不同的服务器上,因此一个主题可以跨越多个不同的服务器。

image.png

broker:一个broker是一个独立的kafka服务器实例。一个分区从属于一个broker,这个broker作为这个分区的首领,一个分区可以分配给多个broker,此时分区就会复制多份,这样提供了消息冗余,当首领宕机时,就可以选一个从服务器作为新的首领。一个broker可以分配给多个分区。

集群:多个broker的集合

  1. kafka的优势
  • 多个生产者
  • 多个消费者
  • 基于磁盘的信息存储,可以支持消费者非实时的处理数据
  • 伸缩性:对在线集群的扩展不影响整体系统的可用性
  • 高性能:提供亚秒级的消息延迟

未完待续……