Topic与Partition

示意图



1. Topic:

每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic(主题).

2.Partition:

Partition是物理上的概念,每个Topic包含一个或多个partition.

Topic在逻辑上可以被认为是一个Queue,每条消息都必须指定它的Topic,可以简单理解为

必须指明把这条消息放进那个Queue里

3.说明:

为了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件.

若创建Topic1和Topic2两个Topic,且分别有13和19个分区


因为每条消息都被Append到该Partition中,属于顺序写磁盘,因此效率非常高(经验证,顺序写磁盘效率比随机写内存还要高,这是kafka高吞吐率的一个很重要的保证)


对于传统的Messqge queue而言,一般会删除已经被消费的消息,而Kafka集群会保留所有的消息,无论其被消费与否.当然因为磁盘限制,不可能永久保留所有数据(实际上也没必要),

因此Kafka提供两种策略删除旧数据,

一: 是基于时间

二: 是基于Partition文件大小.例如可以通过配置

$KAFKA_HOME/config/server.properties,让Kafka删除一周前的数据,也可在Partition文件超过1GB时删除旧数据,配置如下所示。

Kafka拓扑结构

1. Producer:

消息生产者,发布消息到kafka集群的终端或服务

你可能感兴趣的:(Topic与Partition)