kafka--Topics and Logs

来源:互联网 发布:金钱永不眠世基版软件 编辑:程序博客网 时间:2024/05/20 19:15

一、Topic

  topic是被发布记录的类别或提要名称。在kafka中, topic 是多租户的,一个topic可以工多个用户订阅

  对于每个主题,Kafka集群维护一个分段日志,该日志看起来如下:

            这里写图片描述
每个分区都是一个有序的、不可变的记录序列,这些记录一直被附加到结构化的提交日志中。分区中的记录分别被分配一个称为偏移量(offset)的顺序id号,它惟一地标识分区内的每个记录。

kafka的集群保留了所有已发布的记录,不管它们是否被使用了一个可配置的保留期。例如,如果保留策略设置为两天,那么在发布记录之后的两天内,它可以用于消费,之后将被丢弃以释放空间。kafka的性能相对于数据大小来说是有效的,所以长期存储数据不是问题。
     这里写图片描述

实际上,在每个consumer基础上保留的唯一元数据是日志中的消费者的offset或postion。这个偏移量是由消费者控制的,通常情况下,消费者会随着读取记录而线性提升它的偏移量,但是实际上,由于这个位置是由消费者控制的,它可以根据它喜欢的任意顺序来消耗记录。例如,消费者可以重新设置为旧的偏移量来重新处理过去的数据,或者跳过最近的记录,并从“现在”开始消费。

这种特性的结合意味着kafka的消费者非常cheap, 它们可以在不影响集群或其他用户的情况下来来去去,例如,您可以使用我们的命令行工具来“tail”任何topic的内容,而不改变任何现有使用者所使用的内容。

日志中的分区有多种用途。首先,它们允许日志的规模超过一个服务器上的大小。每个单独的分区必须适合承载它的服务器,但是一个主题可能有多个分区,因此它可以处理任意数量的数据。其次,它们作为并行的单元,在这一点上更多。

Distribution

原创粉丝点击