kafka02-基本架构
Posted apeLew
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka02-基本架构相关的知识,希望对你有一定的参考价值。
1.4基本架构
消息和批次
Kafka的数据单元称为消息。可以把消息看成是数据库里的一个“数据行”或一条“记录”。消息由字节
数组组成。
消息有键,键也是一个字节数组。当消息以一种可控的方式写入不同的分区时,会用到键。
为了提高效率,消息被分批写入Kafka。批次就是一组消息,这些消息属于同一个主题和分区。
把消息分成批次可以减少网络开销。批次越大,单位时间内处理的消息就越多,单个消息的传输时
间就越长。批次数据会被压缩,这样可以提升数据的传输和存储能力,但是需要更多的计算处理
批次数据不会立马传送,当批次达到条件会传输,所以传输时间会长
模式
消息模式(schema)有许多可用的选项,以便于理解。如JSON和XML,但是它们缺乏强类型处理能力。Kafka的许多开发者喜欢使用Apache Avro。Avro提供了一种紧凑的序列化格式,模式和消息体分开。当模式发生变化时,不需要重新生成代码,它还支持强类型和模式进化,其版本既向前兼容,也向后兼容。
数据格式的一致性对Kafka很重要,因为它消除了消息读写操作之间的耦合性。
主题和分区
主题是抽象概念,将一个或多个分区抽象为一个主题
多分区实现了主题的横向扩展,多副本实现了主题的高可用
Kafka的消息通过主题进行分类。主题可比是数据库的表或者文件系统里的文件夹。主题可以被分为若干分区,一个主题通过分区分布于Kafka集群中,提供了横向扩展的能力。
生产者和消费者
生产者创建消息。消费者消费消息。
一个消息被发布到一个特定的主题上。
生产者在默认情况下把消息均衡地分布到主题的所有分区上:
-
直接指定消息的分区
-
根据消息的key散列取模得出分区
-
轮询指定分区。
消费者通过偏移量来区分已经读过的消息,从而消费消息。
消费者是消费组的一部分。消费组保证每个分区只能被一个消费者使用,避免重复消费
broker和集群
一个独立的Kafka服务器称为broker。broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消费者提供服务,对读取分区的请求做出响应,返回已经提交到磁盘上的消息。单个broker可以轻松处理数千个分区以及每秒百万级的消息量。
每个集群都有一个broker是集群控制器(自动从集群的活跃成员中选举出来)。
控制器负责管理工作:
-
将分区分配给broker
-
监控broker
集群中一个分区属于一个broker,该broker称为分区首领。
一个分区可以分配给多个broker,此时会发生分区复制。
分区的复制提供了消息冗余,高可用。副本分区不负责处理消息的读写。
以上是关于kafka02-基本架构的主要内容,如果未能解决你的问题,请参考以下文章