Jakarta ee 事件源:处理事件架构更改
随着基于事件源体系结构构建的软件项目的发展,事件模式(或事件类型)是最有可能随时间变化的因素之一 事件源架构提供的一个好处是,它能够“重播所有事件”,并从旧事件构建当前状态 如果需要通过添加或删除属性或更改属性的语义来更改事件模式(事件类型),该怎么办?当前服务实现将无法处理旧事件,因为它们使用旧模式(它们不包含属性,或者语义已更改) 如何处理这种情况有什么想法吗 关于如何处理这种情况有什么想法吗 你为它设计。在确定事件模式时,首先要考虑向后兼容性,而且要尽早做到这一点,这样以后的更改就很容易了 看,格雷格·杨 基本思想是:永远不要改变模式元素的语义。可以通过添加新的可选元素来扩展架构,也可以弃用可选元素 当这还不够时:创建一个设计更好的新模式,然后将数据迁移到新模式Jakarta ee 事件源:处理事件架构更改,jakarta-ee,apache-kafka,event-sourcing,Jakarta Ee,Apache Kafka,Event Sourcing,随着基于事件源体系结构构建的软件项目的发展,事件模式(或事件类型)是最有可能随时间变化的因素之一 事件源架构提供的一个好处是,它能够“重播所有事件”,并从旧事件构建当前状态 如果需要通过添加或删除属性或更改属性的语义来更改事件模式(事件类型),该怎么办?当前服务实现将无法处理旧事件,因为它们使用旧模式(它们不包含属性,或者语义已更改) 如何处理这种情况有什么想法吗 关于如何处理这种情况有什么想法吗 你为它设计。在确定事件模式时,首先要考虑向后兼容性,而且要尽早做到这一点,这样以后的更改就很容易了
您对使用schema.org有何看法 我认为那里的模式标识符是一个很好的起点,它们真正打开了与领域无关的组件共享消息的一些细节的可能性。例如,
http://schema.org/telephone
是一种很好的方式,可以与通用表示引擎进行通信,说明附带的数据适合拨号
因此,无论如何,在设计模式时要牢记这些类型,并尽可能长时间地与它们保持一致
但是当你真的出现分歧时,给你的模式一个新的标识符。这是我在过去两年里一直在做的研究主题。 我们发现了5种可用于处理模式演变的技术:
- 修剪事件存储以保持大小可维护
- 如何保持读取模型同步
- DDD如何帮助您防止模式演变
您可以将其与Confluent平台相结合,这将允许您获得数据模式的真实性和验证来源。此外,您还可以使用Kafka Avro SerDes管理主题中的Kafka消息模式 你觉得使用schema.org怎么样?你觉得使用schema.org怎么样?以前从未见过。它看起来很有趣,但就我个人而言,我只会把它当作灵感。我不想将我的产品与可能比它需要的更通用的模式对齐。您可以扩展和修改类型。为了在客户端和服务之间共享词汇表,编写超媒体rest服务已经是一种常见的资源了……听起来很有趣,但链接是broken@pagliuca我修复了链接。