我正在为我们正在我的公司构建的新事件和流处理系统提出一组模式,以将几个当前断开连接的系统连接在一起。我们已经明确定义了 12 个领域模型,现在正尝试将所有应用程序将事件发送到融合 (kafka) 平台的一组事件模式组合在一起。然后这些将由 samza 提取和处理,以执行各种工作,然后为我们的特定领域服务填充数据库。
这一切都很好,我们从每个域的一个事件开始(例如地址)但是,我们很快遇到了需要为不同类型的事件提供不同数据的问题。例如,创建地址的事件需要域中的所有(或大部分)字段。而更新只需要一个 id 和正在更新的内容。
那么,我正在寻找的是那些过去做过这件事的人的一些建议?理想情况下,我希望每个域只使用一个事件模式来保持干净。这样,我们每个事件都有一个对应的 kafka 队列,可以轻松地重播以重新获得状态或返回到特定的先前状态。然而,感觉更简单、更实用的方法是为每个动词使用单独的模式(即创建、更新、删除)
一些相关的堆栈细节:
Confluent REST 代理 -> avro -> kafka -> samza -> 各种数据库。