Apache kafka 事件流数据模型
我正在为我们公司正在构建的一个新的事件和流处理系统设计一套模式,以便将几个当前断开连接的系统连接起来。我们已经明确定义了12个域模型,现在正试图将一组事件模式组合在一起,所有应用程序都将通过事件到外部合流(kafka)平台。然后,samza将提取并处理这些数据,以执行各种作业,然后为我们的特定领域服务填充数据库 这一切都很好,我们从每个域一个事件(例如地址)开始,但是,我们很快遇到了需要不同类型事件的不同数据的问题。例如,创建地址的事件需要域中的所有(或大部分)字段。而更新只需要id和正在更新的内容 那么,我想从过去做过这件事的人那里得到一些建议?理想情况下,我希望每个域只使用一个事件模式保持干净。这样,每个事件都有一个对应的kafka队列,可以轻松地重放该队列以恢复状态或返回到以前的特定状态。然而,感觉更简单、更实用的方法是为每个动词使用单独的模式(即创建、更新、删除) 一些相关的堆栈细节:Apache kafka 事件流数据模型,apache-kafka,schema,avro,apache-samza,bigdata,Apache Kafka,Schema,Avro,Apache Samza,Bigdata,我正在为我们公司正在构建的一个新的事件和流处理系统设计一套模式,以便将几个当前断开连接的系统连接起来。我们已经明确定义了12个域模型,现在正试图将一组事件模式组合在一起,所有应用程序都将通过事件到外部合流(kafka)平台。然后,samza将提取并处理这些数据,以执行各种作业,然后为我们的特定领域服务填充数据库 这一切都很好,我们从每个域一个事件(例如地址)开始,但是,我们很快遇到了需要不同类型事件的不同数据的问题。例如,创建地址的事件需要域中的所有(或大部分)字段。而更新只需要id和正在更新的
融合REST代理->avro->卡夫卡->桑扎->各种数据库。这个问题已经很老了,但还没有得到回答,我将尝试一下。问题是,您的事件应该反映业务模型中状态的变化,这通常会反映已发生的活动。查看您的示例,您可能会遇到以下事件:
- NewUser,地址可能在您的系统中,也可能不在系统中,但您仍然需要有一个自然密钥来决定它是否在您的系统中
- 用户重新定位,同上
- 我也一样
- AddressCorrection,可能是只需要提供部分字段的情况