初识kafka

1、消息队列介绍

在介绍kafka之前先简单提一下消息队列,或发布与订阅消息系统。这个系统很重要,其特点是消息(数据)的发送者不会直接将消息发送给接受着,发布者将消息发送给系统,然后接收者订阅这个消息,以此来接收消息。就像订阅杂志一样。

消息队列从简单的消息队列或进程之间的通信到多个应用之间到多个系统之间,数据之间的通信,联系越来越多,越复杂,变成多个发布订阅系统。由于维护和使用越发复杂,最终需要将这部分独立出来成为一个单一的集中式的系统,由此kafka出场了。

2、kafka介绍

kafka是分布式,基于发布/订阅的消息系统

2.1 主题和分区

kaka的消息(数据)是通过主题进行分类的。主题类比数据库的表,文件系统中的文件夹。主题会被分为若干个分区,一个分区就是一个提交日志,消息是以追加的方式写入分区,遵循先入先出的原则顺序读取。因为一个主题通常包含多个分区,因此无法保证在整个主题范围内消息是有序的,但可以保证单个分区内是顺序的。kafka通过分区来实现数据冗余和伸缩性,分区可以分布在不同服务器上,意味着一个主题可以跨多个服务器,来提供更强大的性能

2.2 消息和批次

kafka的数据单元称为消息,可以将消息理解为数据库中一行数据。为提高写入效率,消息被分批次写入kafka,批次就是指一组消息,这些消息同属于一个主和分区,以批次的方式传输数据可以减少网络开销,不过这个需要在时间延迟和吞吐量之间做权衡,批次越大,单位时间内处理消息越多,但单个消息的传输时间就越长,时间延迟越高。

2.3 生产者和消费者

在发布订阅系统中有生产者和消费者。生产者负责创建消息,写入数据到主题中,生产者默认将消息均衡的的分布在主题的所有分区中,不过也可以指定分区,通过消息键和分区器实现。消费者订阅之后可以读取消息,消费者可以订阅多个主题,按照顺序读取,通过检查消息的偏移量来判断已经读取过的消息。偏移量是一种元数据,不停递增的数值。

2.4 broker和集群

kafka的服务器被称为broker,broker接收来自生产者的消息,设置偏移量,并提交消息到磁盘持久化。broker也为消费者服务,提供读取消息的服务。

broker是集群的组成部分,每个集群会由一个broker充当集群控制器的角色,由集群中的活跃broker选取出来。控制器负责分区的分配,监控broker。在集群中一个分区从属于一个broker,该broker被称为分区的首领,一个分区可以分配给多个broker,就会发生分区复制。这种复制机制为分区提供了消费冗余也就是副本的概念。

3、kafka优点

  • 支持多个生产者和多个消费者,与其他消息队列不同的是,其他消息队列中的消息消费过一次之后便不能再被读取,kafka支持多个消费者读取,另外多个消费者可以组成群组,共享一个消息流,并能保证整个群组对每个给定的消息只处理一次

  • 解耦

    将数据从应用和业务中解耦,生产方和接收方只需要按照要求定义接口即可,并且支持一份数据多次处理

  • 冗余

    kafka提供分区复制,也就是副本的概念,并支持设置副本数

  • 基于磁盘的数据存储

    支持消费者非实时读取消息,kafka会保留数据,写入磁盘中,避免因为处理速度过慢或突发的流量激增带来的处理延迟的问题,并保证数据不会丢失

  • 伸缩性

    作为专为处理大量数据而设计的kafka,设计之初就是一个灵活伸缩的系统,可以扩展broker,从3个到10个,甚至上百个,可以根据实际的数据量的需求决定

  • 高性能

    上面的有点让kafka拥有处理海量数据的能力,高并发、高吞吐、实时性

原文地址:https://www.cnblogs.com/lrxvx/p/13195364.html