Kafka得到其他国家的命令。
我需要把这些订单按国家分组。我应该创建更多具有国家名称的主题,还是将有一个具有不同分区的主题?
另一个是有一个主题,并使用斯特兰Kafka过滤命令,并发送到特定的国家主题?
如果一个国家的数量超过180,有什么更好的呢?
我要在特定国家/城市的执行者之间分发订单。
备注:
所以,order有关于国家/城市的数据。然后Kafka必须在这个国家/城市找到执行者,并向他们发出同样的命令。
Kafka得到其他国家的命令。
我需要把这些订单按国家分组。我应该创建更多具有国家名称的主题,还是将有一个具有不同分区的主题?
另一个是有一个主题,并使用斯特兰Kafka过滤命令,并发送到特定的国家主题?
如果一个国家的数量超过180,有什么更好的呢?
我要在特定国家/城市的执行者之间分发订单。
备注:
所以,order有关于国家/城市的数据。然后Kafka必须在这个国家/城市找到执行者,并向他们发出同样的命令。
1条答案
按热度按时间am46iovg1#
热释光;博士
在你的情况下,我会创建一个主题
countries
使用country_id
或者country_name
作为消息键,以便将同一国家的消息放在同一分区中。这样,每个分区都将包含特定国家(或多个国家,视情况而定)的信息。我想说这个决定取决于多种因素;
逻辑/关注点分离:您可以根据尝试实现的逻辑决定是否在多个分区上使用多个主题。通常,不同的实体需要不同的主题。例如,假设您想要流式处理
users
以及companies
. 在第一个分区所在的位置创建一个包含两个分区的主题没有多大意义users
第二个拿着companies
. 另外,为多个分区设置一个主题将不允许您实现消息排序users
这只能通过使用键控消息来实现(具有相同键的消息放在同一分区中)。主机存储能力:一个分区必须适合主机的存储,而一个主题可以通过跨多个分区来分布在整个kafka集群中。Kafka博士对此有更多的启示:
日志中的分区有多种用途。首先,它们允许日志扩展到可以容纳单个服务器的大小之外。每个单独的分区必须适合承载它的服务器,但是一个主题可能有许多分区,因此它可以处理任意数量的数据。第二,它们在一点上充当了并行的单位。
吞吐量:如果您具有高吞吐量,那么为每个实体创建不同的主题并将其拆分为多个分区更为合理,这样多个使用者就可以加入使用者组。不要忘记,kafka中的并行级别是由分区数(显然是活动的使用者)定义的。
保留策略:kafka中的消息保留在分区/段级别上工作,您需要确保所做的分区与所选的所需保留策略一起支持您的用例。