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
Apache kafka 事件流数据模型_Apache Kafka_Schema_Avro_Apache Samza_Bigdata - Fatal编程技术网

Apache kafka 事件流数据模型

Apache kafka 事件流数据模型,apache-kafka,schema,avro,apache-samza,bigdata,Apache Kafka,Schema,Avro,Apache Samza,Bigdata,我正在为我们公司正在构建的一个新的事件和流处理系统设计一套模式,以便将几个当前断开连接的系统连接起来。我们已经明确定义了12个域模型,现在正试图将一组事件模式组合在一起,所有应用程序都将通过事件到外部合流(kafka)平台。然后,samza将提取并处理这些数据,以执行各种作业,然后为我们的特定领域服务填充数据库 这一切都很好,我们从每个域一个事件(例如地址)开始,但是,我们很快遇到了需要不同类型事件的不同数据的问题。例如,创建地址的事件需要域中的所有(或大部分)字段。而更新只需要id和正在更新的

我正在为我们公司正在构建的一个新的事件和流处理系统设计一套模式,以便将几个当前断开连接的系统连接起来。我们已经明确定义了12个域模型,现在正试图将一组事件模式组合在一起,所有应用程序都将通过事件到外部合流(kafka)平台。然后,samza将提取并处理这些数据,以执行各种作业,然后为我们的特定领域服务填充数据库

这一切都很好,我们从每个域一个事件(例如地址)开始,但是,我们很快遇到了需要不同类型事件的不同数据的问题。例如,创建地址的事件需要域中的所有(或大部分)字段。而更新只需要id和正在更新的内容

那么,我想从过去做过这件事的人那里得到一些建议?理想情况下,我希望每个域只使用一个事件模式保持干净。这样,每个事件都有一个对应的kafka队列,可以轻松地重放该队列以恢复状态或返回到以前的特定状态。然而,感觉更简单、更实用的方法是为每个动词使用单独的模式(即创建、更新、删除)

一些相关的堆栈细节:


融合REST代理->avro->卡夫卡->桑扎->各种数据库。

这个问题已经很老了,但还没有得到回答,我将尝试一下。问题是,您的事件应该反映业务模型中状态的变化,这通常会反映已发生的活动。查看您的示例,您可能会遇到以下事件:

  • NewUser,地址可能在您的系统中,也可能不在系统中,但您仍然需要有一个自然密钥来决定它是否在您的系统中
  • 用户重新定位,同上
  • 我也一样
  • AddressCorrection,可能是只需要提供部分字段的情况
很明显,它们只是示例,您决定的事件取决于您的业务模式