Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 如何使用ApacheKafka对事件源执行时态查询?_Architecture_Apache Kafka_Apache Kafka Streams_Temporal Database_Bigdata - Fatal编程技术网

Architecture 如何使用ApacheKafka对事件源执行时态查询?

Architecture 如何使用ApacheKafka对事件源执行时态查询?,architecture,apache-kafka,apache-kafka-streams,temporal-database,bigdata,Architecture,Apache Kafka,Apache Kafka Streams,Temporal Database,Bigdata,我们使用ApacheKafka作为一种事件源机制,用于有效地将事件分发到多个存储库,以基于服务于数据的服务的用例构建应用程序状态。例如,假设我们有服务A和服务B。服务A和服务B都有一个相同人员的存储库,但是数据的视图根据用例而不同。我们的想法是,由于我们需要为不同的用例提供新的数据视图,我们可以将事件流重放到新的或现有的存储库中。这是基于概述的思想,并涉及流处理和事件源,以及从事件重建应用程序状态 作为我们业务模式的一部分,我们可能会处理针对这些人的频繁变更(例如,姓名、地址和日期会频繁变更)。

我们使用ApacheKafka作为一种事件源机制,用于有效地将事件分发到多个存储库,以基于服务于数据的服务的用例构建应用程序状态。例如,假设我们有服务A和服务B。服务A和服务B都有一个相同人员的存储库,但是数据的视图根据用例而不同。我们的想法是,由于我们需要为不同的用例提供新的数据视图,我们可以将事件流重放到新的或现有的存储库中。这是基于概述的思想,并涉及流处理和事件源,以及从事件重建应用程序状态

作为我们业务模式的一部分,我们可能会处理针对这些人的频繁变更(例如,姓名、地址和日期会频繁变更)。出现的一个新用例是,我们可能需要执行一个时态查询(即,向我展示在特定日期和时间的个人数据是什么样子)。对此,最明显的答案是在某个特定时刻重播所有事件,以重建应用程序状态。虽然这在纸面上听起来很合理,但我认为,当你在未来几年中可能会发生数十亿起事件时,这种情况就无法很好地扩展

当前解决方案 如今,一般的概念是,我们的卡夫卡消费者将根据活动(例如地址更新、姓名更新等)从单个主题处理这些事件,并将个人数据的主副本更新为“现在”的样子,然后将更改增量的副本存储在一个单独的存储中,该存储被适当地键入,以便我们可以将更改与特定的人关联。理想情况下,我们认为键/值存储(NoSQL)是该数据的正确存储。这种方法是使用这个存储来重放所有的增量,以满足一个人的临时查询需求

提问 这种方法是否适合为数据的临时查询构建存储?在处理海量数据时,是否有其他方法甚至工具解决了这一需求?Kafka对于等式中的事件源部分似乎是正确的,但我担心的是,为了审计、灾难恢复和临时(时间点)查询的目的,需要将事件维护数年