Title

kafka02-基本架构

1.4基本架构

消息和批次

Kafka的数据单元称为消息。可以把消息看成是数据库里的一个“数据行”或一条“记录”。消息由字节数组组成。

消息有键,键也是一个字节数组。当消息以一种可控的方式写入不同的分区时,会用到键。为了提高效率,消息被分批写入Kafka。批次就是一组消息,这些消息属于同一个主题和分区。

把消息分成批次可以减少网络开销。批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。批次数据会被压缩,这样可以提升数据的传输和存储能力,但是需要更多的计算处理

批次数据不会立马传送,当批次达到条件会传输,所以传输时间会长

模式

消息模式(schema)有许多可用的选项,以便于理解。如JSON和XML,但是它们缺乏强类型处理能力。Kafka的许多开发者喜欢使用Apache Avro。Avro提供了一种紧凑的序列化格式,模式和消息体分开。当模式发生变化时,不需要重新生成代码,它还支持强类型和模式进化,其版本既向前兼容,也向后兼容。

数据格式的一致性对Kafka很重要,因为它消除了消息读写操作之间的耦合性。

主题和分区

主题是抽象概念,将一个或多个分区抽象为一个主题

多分区实现了主题的横向扩展,多副本实现了主题的高可用

Kafka的消息通过主题进行分类。主题可比是数据库的表或者文件系统里的文件夹。主题可以被分为若干分区,一个主题通过分区分布于Kafka集群中,提供了横向扩展的能力。

image-20210814224141842

生产者和消费者

生产者创建消息。消费者消费消息。

一个消息被发布到一个特定的主题上。

生产者在默认情况下把消息均衡地分布到主题的所有分区上:

  1. 直接指定消息的分区

  2. 根据消息的key散列取模得出分区

  3. 轮询指定分区。

消费者通过偏移量来区分已经读过的消息,从而消费消息。

消费者是消费组的一部分。消费组保证每个分区只能被一个消费者使用,避免重复消费

image-20210814224243582

broker和集群

一个独立的Kafka服务器称为broker。broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消费者提供服务,对读取分区的请求做出响应,返回已经提交到磁盘上的消息。单个broker可以轻松处理数千个分区以及每秒百万级的消息量。

image-20210814224325598

每个集群都有一个broker是集群控制器(自动从集群的活跃成员中选举出来)。

控制器负责管理工作:

  • 将分区分配给broker

  • 监控broker

集群中一个分区属于一个broker,该broker称为分区首领

一个分区可以分配给多个broker,此时会发生分区复制。

分区的复制提供了消息冗余,高可用副本分区不负责处理消息的读写。

posted @ 2021-08-14 23:53  apeGcWell  阅读(42)  评论(0编辑  收藏  举报