这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
初识Kafka
- 为什么要用发布与订阅消息系统
在最简单的消费场景下,可以使用直连的模型,比如服务器需要把产生的度量指标发送给度量服务器。
随着数据量的增加,单个度量服务器无法应对,因此每个生产者都需要与多个消费者连接,将数据发送给不同的消费者。
可以用一个队列,用于缓存和转发消息
如果系统更加复杂,又需要有更多的不同种类的消息需要转发,那就需要多个队列,每个队列用于转发不同类型的数据。这样,系统又会变得复杂起来。
这时候就轮到Kafka出场了!
- kafka组件
消息:Kafka的消息处理单元
批次:一组消息。如果每次只转发一条消息,会造成大量的网络开销,导致网络吞吐率太低,如果一批次包含太多消息,就会导致发送一个消息的延迟太高。
主题和分区:一个主题就是一类消息,一个主题内有多个分区。消息在分区内以先入先出的顺序被消费,但是无法保证在整个主题内的先后顺序。不同分区可以在不同的服务器上,因此一个主题可以跨越多个不同的服务器。
broker:一个broker是一个独立的kafka服务器实例。一个分区从属于一个broker,这个broker作为这个分区的首领,一个分区可以分配给多个broker,此时分区就会复制多份,这样提供了消息冗余,当首领宕机时,就可以选一个从服务器作为新的首领。一个broker可以分配给多个分区。
集群:多个broker的集合
- kafka的优势
- 多个生产者
- 多个消费者
- 基于磁盘的信息存储,可以支持消费者非实时的处理数据
- 伸缩性:对在线集群的扩展不影响整体系统的可用性
- 高性能:提供亚秒级的消息延迟
未完待续……