Jor*_*rdi 7 java-ee event-sourcing apache-kafka
一个软件项目在发展。然后,在事件源体系结构上受支持的应用程序软件随之发展。
事件模式(或事件类型)之间最适合随时间更改的事物之间。
因此,Event Sourcing arquitecture提供的好处之一是它能够“重播所有事件”并根据旧事件建立当前状态。
如果我需要更改事件模式(事件类型),添加或删除属性或更改属性的语义该怎么办?到目前为止,我已经能够弄清楚当前的服务实现将无法处理旧事件,因为它们是某种过时的(它们不包含属性,或者语义已更改)。
关于如何处理这种情况的任何想法?
关于如何处理这种情况的任何想法?
您为它设计。确定事件模式时,首先要考虑向后兼容性,并且尽早做好,以便以后进行更改很容易。
请参阅Greg Young 的“事件源系统中的版本控制”。
基本思想:您永远不会改变架构元素的语义。您可以通过添加新的可选元素来扩展架构,并且可以弃用可选元素。
如果这还不够:您可以使用更好的设计创建新的架构,然后将数据迁移到新的架构。
您对使用schema.org有什么看法?
我认为模式标识符是一个很好的起点,并且确实为与域不可知的组件共享消息的某些细节提供了可能性。例如,这http://schema.org/telephone
是一种与通用表示引擎进行通信的好方法,其中所包含的数据适合于拨号。
因此,无论如何,在设计模式时请牢记这些类型,并尽可能与它们保持一致。
但是当您发散时,请为您的架构提供新的标识符。
这是我过去两年中一直在做的研究主题。我们发现了5种可用于处理模式演变的技术:
我们的论文“事件采购的阴暗面”(https://www.movereem.nl/files/2017SANER-eventsourcing.pdf)中对此进行了总结。
我们还研究了周围地区:
最后一部分尚未公开。但是您可以找到我昨天在DDDEurope上发表的演讲的幻灯片:https ://speakerdeck.com/overeemm/dddeurope-2018-event-sourcing-after-launch