Kafka 主题与分区主题

Kafka Topic vs Partition topic

我想知道简单主题和分区之间的区别topic.As 根据我的理解,为了平衡负载,主题已经分区,每条消息都有偏移量,消费者将确认以确保之前的消息已经 consumed.In 分区和消费者不匹配的情况 kafka 完成的重新平衡是否有效管理。

如果创建多个主题而不是分区,是否会影响运行效率。

来自kafka documentation

The partitions in the log serve several purposes. First, they allow the log to scale beyond a size that will fit on a single server. Each individual partition must fit on the servers that host it, but a topic may have many partitions so it can handle an arbitrary amount of data

为任何给定的主题设置多个分区允许 Kafka 将它分布在整个 Kafka 集群中。因此,可以将处理来自不同分区的数据的请求分配给整个集群中的多个服务器。此外,每个分区都可以跨多个服务器进行复制,以最大限度地减少数据丢失。再次来自文档页面

The partitions of the log are distributed over the servers in the Kafka cluster with each server handling data and requests for a share of the partitions. Each partition is replicated across a configurable number of servers for fault tolerance.

因此,只有一个分区的主题不允许您使用这些灵活性。另请注意,在现实生活环境中,您可以使用不同的主题来保存不同类别的消息(尽管也可以使用具有多个分区的单个主题,其中每个分区都可以在生成时使用 messgae 密钥具有特定类别的消息)。

我不认为创建多个主题而不是分区会对整体性能产生太大影响。但是想象一下,您想要跟踪用户在您网站上发布的所有推文。然后,您可以拥有一个名为 "User_tweet" 的主题和多个分区,以便在生成消息时 Kafka 可以跨多个分区分发数据,而在消费者端,您只需要让一组消费者从同一主题中提取数据。相反,保留 "User_tweet_1"、"User_tweet_2"、"User_tweet_3" 只会让您在生成和使用消息时变得复杂。