Kafka主题与分区主题

时间:2015-01-07 09:20:58

标签: java apache-kafka kafka-consumer-api

我想知道简单主题与简介之间有什么区别?分区主题。根据我的理解,平衡负载,主题已被分区,每条消息都有偏移&消费者将承认确保以前的消息已被消费。如果没有分区和消息。消费者不匹配kafka完成的重新平衡是否有效管理。

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

1 个答案:

答案 0 :(得分:20)

来自kafka documentation

  

日志中的分区有多种用途。首先,它们允许日志扩展到超出适合单个服务器的大小。每个单独的分区必须适合托管它的服务器,但主题可能有许多分区,因此它可以处理任意数量的数据

对于任何给定主题具有多个分区允许Kafka在Kafka群集中分发它。因此,处理来自不同分区的数据的请求可以在整个集群中的多个服务器之间划分。此外,还可以跨多个服务器复制每个分区,以最大限度地减少数据丢失。再次来自doc页面

  

日志的分区分布在Kafka集群中的服务器上,每个服务器处理数据并请求分区的共享。每个分区都在可配置数量的服务器上进行复制,以实现容错。

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

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