Kafka 权威指南 (3):初识 Kafka 1.1.2&1.2&1.2.1

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

Kafka权威指南(3):初识 Kafka 1.1.2&1.2&1.2.1

(独立的队列系统)

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

在你跟度量指标打得不可开交的时候,你的一个同事也正在跟日志消息奋战。还有另一个同事正在跟踪网站用户的行为,为负责机器学习开发的同事提供信息,同时为管理团队生成报告。你和同事们使用相同的方式创建这些系统,解耦信息的发布者和订阅者。图 1-4 所示的架构包含了 3 个独立的发布与订阅系统。

Kafka权威指南(3):初识 Kafka 1.1.2&1.2&1.2.1

图 1-4:多个发布与订阅系统

这种方式比直接使用点对点的连接(图 1-2)要好得多,但这里有太多重复的地方。你的公司因此要为数据队列维护多个系统,每个系统又有各自的缺陷和不足。而且,接下来可能会有更多的场景需要用到消息系统。此时,你真正需要的是一个单一的集中式系统,它可以用来发布通用类型的数据,其规模可以随着公司业务的增长而增长。


(Kafka 登场)

Kafka 就是为了解决上述问题而设计的一款基于发布与订阅的消息系统。它一般被称为“分布式提交日志”或者“分布式流平台”。文件系统或数据库提交日志用来提供所有事务的持久记录,通过重放这些日志可以重建系统的状态。同样地,Kafka 的数据是按照一定顺序持久化保存的,可以按需读取。此外,Kafka 的数据分布在整个系统里,具备数据故障保护和性能伸缩能力。


(消息和批次)

Kafka 的数据单元被称为消息。如果你在使用 Kafka 之前已经有数据库使用经验,那么可以把消息看成是数据库里的一个“数据行”或一条“记录”。消息由字节数组组成,所以对于 Kafka 来说,消息里的数据没有特别的格式或含义。消息可以有一个可选的元数据,也就是键。键也是一个字节数组,与消息一样,对于 Kafka 来说也没有特殊的含义。当消息以一种可控的方式写入不同的分区时,会用到键。最简单的例子就是为键生成一个一致性散列值,然后使用散列值对主题分区数进行取模,为消息选取分区。这样可以保证具有相同键的消息总是被写到相同的分区上。第 3 章将详细介绍键的用法。

为了提高效率,消息被分批次写入 Kafka。批次就是一组消息,这些消息属于同一个主题和分区。如果每一个消息都单独穿行于网络,会导致大量的网络开销,把消息分成批次传输可以减少网络开销。不过,这要在时间延迟和吞吐量之间作出权衡:批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。批次数据会被压缩,这样可以提升数据的传输和存储能力,但要做更多的计算处理。

Kafka权威指南(3):初识 Kafka 1.1.2&1.2&1.2.1

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

评论

发布