事件流数据模型

时间:2016-02-12 17:08:38

标签: apache-kafka schema avro apache-samza bigdata

我正在努力为我们公司正在建立的新事件和流处理系统提供一套模式,以便将几个当前断开连接的系统连接在一起。我们已经明确定义了12个域模型,现在正在尝试将一组事件模式组合在一起,所有应用程序都将事件发送到汇合(kafka)平台。然后,这些将由samza进行处理和处理,以执行各种作业,然后为我们的特定于域的服务填充数据库。

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

那么,我正在寻找的是那些过去做过这些的人的一些推荐?理想情况下,我想保持每个域只有一个事件架构。这样,我们每个事件都有一个相应的kafka队列,可以轻松重放以重新获得状态或返回到特定的先前状态。但是,感觉更简单,更实用的方法是为每个动词使用单独的模式(即创建,更新,删除)

堆叠一些相关的细节:

Confluent REST代理 - > avro - > kafka - > samza - >各种dbs。

1 个答案:

答案 0 :(得分:2)

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

  • NewUser,地址可能在您的系统中,也可能不在您的系统中,但您仍然需要一个自然键来决定是否属于这种情况。
  • UserRelocating,与上述相同
  • UserLeaving,同样
  • AddressCorrection,可能是一个只需要提供部分字段的场景

它们显然只是示例,您决定的事件取决于您的业务模式。