如何在事件驱动架构中管理嵌套模式以及将它们存储在哪里?

问题描述 投票:0回答:1

我们正在开发具有事件驱动架构的物联网云解决方案。

设备产生事件并通过事件代理与消费者进行通信。所有事件消息均以 JSON 格式序列化。这些设备还侦听云到设备的消息。

我们希望为所有事件消息定义一个标准模式,例如以下格式:

{
  "metaData": {
    "eventId": "a492e40d-6950-4e89-b27c-8b2e27cbf19d",
    "timestamp": "09/19/2024, 11:56:12",
    ...
  },
  "data": {
    ...
  }
}

这种格式的模式应该在多个存储库中可用,用于消息的序列化(反)序列化和验证。我们认为这可以作为 JSON 模式存储在中央注册表中。

但是,我们还使用 Pydantic 模型的组合,它应该解释事件消息的

"data"
部分。这部分的组成取决于设备和消息类型,并且可能随着时间的推移而演变。这些模型应该被生产者和消费者使用。目前,它们是在生产者和消费者进口的包装中声明的。

问题是:这些嵌套模式应该如何存储和管理?它们都应该存在于模式注册表中吗?或者这也可以在代码中解决吗?架构版本是否应该出现在事件消息本身中?

design-patterns iot jsonschema pydantic event-driven
1个回答
0
投票

这些嵌套模式应该如何存储和管理?它们都应该存在于模式注册表中吗?或者这也可以在代码中解决吗?

如果将其放入代码中,那么每次注册表更改时,您都面临着必须强制重新部署代码的风险,这本质上是配置/数据驱动的更改。

我认为最好将它们全部存储在中央注册表中,您可以在其中集中管理它们,并且拥有单一的事实来源。 我假设事件生产者和消费者都能够在需要时访问注册表。

架构版本是否应该出现在事件消息本身中?

是的,有两个字段,一个用于数据,另一个用于指定数据符合什么架构的架构。

© www.soinside.com 2019 - 2024. All rights reserved.