Kafka-11.设计-日志压缩
2019-06-17 本文已影响0人
悠扬前奏
日志压缩可以保证Kafka总是最少保留单个主题分区的数据日志中的每个消息的key的最后的已知值。(Log compaction ensures that Kafka will always retain at least the last known value for each message key within the log of data for a single topic partition. )它address了用例和处理方案,例如应用程序崩溃或者系统故障后的状态恢复,或在运行维护期间重启应用后如何加载缓存。让我们更详细的介绍这些情况,然后描述是如何压缩的:
到目前为止,我们仅描述了简单一些的数据保留方法,其中旧的日志数据在固定时间段或者当日志达到某个预定大小时被丢弃。这适用于时间事件数据,例如记录独立的日志记录。但是,一类重要的数据流是keyed更改的日志(例如,对数据库表的更改)。
让我们讨论这种流的具体例子。假设我们有一个包含用户电子邮件地址的主题,每次用户更新其电子邮件地址时,我们都会使用其用户ID作为主键向此主题发送消息。现在如果我们在一段时间内以id为123的用户发送以下消息,每条消息对应于电子邮件地址的更改(其他ID的消息被省略):
123 => bill@microsoft.com
.
.
.
123 => bill@gatesfoundation.org
.
.
.
123 => bill@gmail.com