Apache kafka 如何在窗口流式etl中显示中间结果?
目前,我们在事件存储中实时聚合数据。其思想是为多个时间范围(每月、每周、每天、每小时)和多个标称键可视化事务数据。我们经常有迟交的数据,所以我们需要对此做出解释。此外,要求显示运行结果,即当前窗口的值,甚至在它完成之前 目前,我们正在使用卡夫卡和阿帕奇风暴,特别是三叉戟,即微镜头来实现这一点。我们的架构大致如下所示: 为我丑陋的照片道歉。我们使用MongoDB作为键值存储来持久化状态,然后通过返回查询到的当前值的微服务以只读方式访问它。这种设计存在多个问题 代码维护性很高 以这种方式很难保证只进行一次处理 在每次聚合之后更新状态显然会影响性能,但速度足够快。 我们得到的印象是,使用ApacheFlink或Kafka streams,更好的框架,特别是从维护的角度来看——Storm往往非常冗长,自从我们开始这个项目以来,它已经变得可用。尝试这些似乎就像写入数据库,尤其是mongoDB不再是最先进的。我看到的标准用例是状态在RocksDB或内存内部持久化,然后在窗口完成后写回Kafka 不幸的是,这使得显示中间结果非常困难,而且由于状态在内部持续存在,我们需要允许事件延迟数月或数年。有没有比劫持实时流的状态更好的解决方案?就我个人而言,我觉得这是一个标准要求,但却找不到一个标准解决方案。你可以研究一下如何解决一些相关问题。这里使用的核心相关思想有: 在每次事件后触发窗口,以便不断更新其结果 使用Flink's使结果可查询 这是弗林克前进会议谈话的主题。有空 您可以将窗口更新流式输出到仪表板或数据库,而不是查询结果 另外,请注意,您可以级联窗口,这意味着每小时窗口的结果可以作为每日窗口的输入,等等。您可以学习如何处理所涉及的一些问题。这里使用的核心相关思想有: 在每次事件后触发窗口,以便不断更新其结果 使用Flink's使结果可查询 这是弗林克前进会议谈话的主题。有空 您可以将窗口更新流式输出到仪表板或数据库,而不是查询结果Apache kafka 如何在窗口流式etl中显示中间结果?,apache-kafka,stream,apache-flink,apache-kafka-streams,Apache Kafka,Stream,Apache Flink,Apache Kafka Streams,目前,我们在事件存储中实时聚合数据。其思想是为多个时间范围(每月、每周、每天、每小时)和多个标称键可视化事务数据。我们经常有迟交的数据,所以我们需要对此做出解释。此外,要求显示运行结果,即当前窗口的值,甚至在它完成之前 目前,我们正在使用卡夫卡和阿帕奇风暴,特别是三叉戟,即微镜头来实现这一点。我们的架构大致如下所示: 为我丑陋的照片道歉。我们使用MongoDB作为键值存储来持久化状态,然后通过返回查询到的当前值的微服务以只读方式访问它。这种设计存在多个问题 代码维护性很高 以这种方式很难保证只进
另外,请注意,您可以级联窗口,这意味着每小时窗口的结果可以作为每日窗口的输入,等等。Kafka Streams提供交互式查询。它基本上与Flink的可查询状态相同,但是,它没有像Flink中那样标记为beta 事实上,对于Kafka Streams,利用Kafka Streams备用任务使交互式查询高度可用的工作正在进行中 有关详细信息,请签出以下参考资料: 博文: 文件: 示例: KIP-535将包含在即将发布的Apache Kafka 2.5版本中:
Kafka Streams提供交互式查询。它基本上与Flink的可查询状态相同,但是,它没有像Flink中那样标记为beta 事实上,对于Kafka Streams,利用Kafka Streams备用任务使交互式查询高度可用的工作正在进行中 有关详细信息,请签出以下参考资料: 博文: 文件: 示例: KIP-535将包含在即将发布的Apache Kafka 2.5版本中: