Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Apache kafka 使用Kafka作为EventStore时恢复Flink中的状态一致性 问题_Apache Kafka_Aggregate_Microservices_Apache Flink_Event Sourcing - Fatal编程技术网

Apache kafka 使用Kafka作为EventStore时恢复Flink中的状态一致性 问题

Apache kafka 使用Kafka作为EventStore时恢复Flink中的状态一致性 问题,apache-kafka,aggregate,microservices,apache-flink,event-sourcing,Apache Kafka,Aggregate,Microservices,Apache Flink,Event Sourcing,我将微服务实现为事件源聚合,而事件源聚合又实现为Flink FlatMapFunction。在基本设置中,聚合从两个kafka主题读取事件和命令。然后,它将新事件写入第一个主题,并在第三个主题中处理结果。因此,卡夫卡充当事件存储。希望这张图有助于: RPC Request RPC Result | | ~~~~> Comman

我将微服务实现为事件源聚合,而事件源聚合又实现为Flink FlatMapFunction。在基本设置中,聚合从两个kafka主题读取事件和命令。然后,它将新事件写入第一个主题,并在第三个主题中处理结果。因此,卡夫卡充当事件存储。希望这张图有助于:

  RPC Request                              RPC Result
  |                                                 |
  ~~~~> Commands-|              |---> Results ~~~~~~|
                 |-->Aggregate--|
  ~> Input evs. -|              |---> output evs. ~~~
  |                                                 |
  ~~~~~<~~~~~~~~~~~<~~~feedbak loop~~~~~<~~~~~~~~<~~~
  • 如果无法实现3中的基础设施,KafkaSource可以实现一个构造函数,指定一个特殊的水印事件,该事件可以传递给运营商,但这将要求所有运营商依赖于这些水印,然后重新发射

  • 另一种不同的方法是不处理比标准旧的命令。例如,命令具有条目时间戳。如果使用时间,则时间同步至关重要

  • 相关问题

  • 创建新的Conmuter运算符类型。这就像一个来源。它由多个表示事件和命令主题的源组成。它开始于“恢复”状态。在此状态下,它将从事件主题读取最新的事件主题。同时,对于命令,它存储或删除它们。一旦更新,它将考虑恢复并“打开”命令的方式。它可以作为一个源和一个操作符单独实现

    FlinkKafkaProducerXX不足以做到这一点,但它将是实现它的基础

    interface WatermarkNotifiable  {
        void started(String watermarkId);//KafkaSourceStartedWatermark watermark
        void upToDate(String watermarkId);//KafkaSOurceUpToDateWatermark watermark
    }