已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
上个月关门了。
Improve this question
场景:Kafka流提供事件流,每个事件是一条记录,必须在聚合1000条记录**后进行处理(滚动策略)。为了给予背景,每个记录提供特定移动的电话用户的移动的网络的SMS使用细节。每个记录的处理将Map一对一的下游记录(用于 * 使用计费 、 税收计算 、 使用有效性 * 等)。有多个下游。
目标:处理1000条记录(作为Kafka事件接收)后,生成1000条记录的文件(每个下游)应具有相关性。相关性意味着,如果为 * 使用计费 * 下游生成的文件有100条记录(100个特定用户),那么为 * 税务计算 * 生成的文件也应该有相同的记录序列(相同的100个特定用户)。这就是要求。
问题是,如果我们直接通过阅读Kafka事件来处理记录,则无法确保文件关联,因为我们无法一致地执行聚合逻辑
每一条记录对业务都至关重要,不能错过(处理)。处理应用将部署在kubernetes集群中。每个记录都使用列(字段)名称进行结构化
如何保证下游文件中记录的相关性?是否通过在处理前设置记录的滚动策略?如果是,为了确保滚动策略,我们是否需要将Kafka事件存储在某个文件(kubernetes PVC)或数据库(作为中间状态)中,然后处理记录?
1条答案
按热度按时间ddarikpa1#
Kafka主题被划分为多个分区。在每个分区中,消息都是严格排序的,并使用偏移量顺序编号。此外,每个消息都有一个时间戳。
Kafka API允许您从任何偏移量读取每个分区,因此,如果您定义一个一致的策略来聚合这些消息,那么您的每个消费者都可以实现相同的策略,并且它们的所有聚合都将是相同的。
例如,假设您决定,对于每个分区,您将聚合1000条消息的每个块,偏移量在n*1000和(n+1)*1000之间。这可能是最简单的有效策略。现在,您的每个下游消费者都可以实施此策略。由于它们都以相同的顺序在相同的分区中看到具有相同偏移量的相同消息,因此它们都将执行相同的聚合。