Kafka 权威指南 (4):初识 Kafka 1.2.2&1.2.3

阅读数:19 2019 年 11 月 24 日 22:08

Kafka权威指南(4):初识 Kafka 1.2.2&1.2.3

(模式)

内容简介
本书是关于 Kafka 的全面教程,主要内容包括:Kafka 相对于其他消息队列系统的优点,主要是它如何完美匹配大数据平台开发;详解 Kafka 内部设计;用 Kafka 构建应用的 zuijia 实践;理解在生产中部署 Kafka 的 zuijia 方式;如何确保 Kafka 集群的安全。

对于 Kafka 来说,消息不过是晦涩难懂的字节数组,所以有人建议用一些额外的结构来定义消息内容,让它们更易于理解。根据应用程序的需求,消息模式(schema)有许多可用的选项。像 JSON 和 XML 这些简单的系统,不仅易用,而且可读性好。不过,它们缺乏强类型处理能力,不同版本之间的兼容性也不是很好。Kafka 的许多开发者喜欢使用 Apache Avro,它最初是为 Hadoop 开发的一款序列化框架。Avro 提供了一种紧凑的序列化格式,模式和消息体是分开的,当模式发生变化时,不需要重新生成代码;它还支持强类型和模式进化,其版本既向前兼容,也向后兼容。

数据格式的一致性对于 Kafka 来说很重要,它消除了消息读写操作之间的耦合性。如果读写操作紧密地耦合在一起,消息订阅者需要升级应用程序才能同时处理新旧两种数据格式。在消息订阅者升级了之后,消息发布者才能跟着升级,以便使用新的数据格式。新的应用程序如果需要使用数据,就要与消息发布者发生耦合,导致开发者需要做很多繁杂的工作。定义良好的模式,并把它们存放在公共仓库,可以方便我们理解 Kafka 的消息结构。第 3 章将详细讨论模式和序列化。


(主题和分区)

Kafka 的消息通过主题进行分类。主题就好比数据库的表,或者文件系统里的文件夹。主题可以被分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。要注意,由于一个主题一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。图 1-5 所示的主题有 4 个分区,消息被追加写入每个分区的尾部。Kafka 通过分区来实现数据冗余和伸缩性。分区可以分布在不同的服务器上,也就是说,一个主题可以横跨多个服务器,以此来提供比单个服务器更强大的性能。

Kafka权威指南(4):初识 Kafka 1.2.2&1.2.3

图 1-5:包含多个分区的主题表示

我们通常会使用这个词来描述 Kafka 这类系统的数据。很多时候,人们把一个主题的数据看成一个流,不管它有多少个分区。流是一组从生产者移动到消费者的数据。当我们讨论流式处理时,一般都是这样描述消息的。Kafka Streams、Apache Samza 和 Storm 这些框架以实时的方式处理消息,也就是所谓的流式处理。我们可以将流式处理与离线处理进行比较,比如 Hadoop 就是被设计用于在稍后某个时刻处理大量的数据。第 11 章将会介绍流式处理。

Kafka权威指南(4):初识 Kafka 1.2.2&1.2.3

图灵地址 https://www.ituring.com.cn/book/2067

评论

发布