Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 事件源:处理事件架构更改_Jakarta Ee_Apache Kafka_Event Sourcing - Fatal编程技术网

Jakarta ee 事件源:处理事件架构更改

Jakarta ee 事件源:处理事件架构更改,jakarta-ee,apache-kafka,event-sourcing,Jakarta Ee,Apache Kafka,Event Sourcing,随着基于事件源体系结构构建的软件项目的发展,事件模式(或事件类型)是最有可能随时间变化的因素之一 事件源架构提供的一个好处是,它能够“重播所有事件”,并从旧事件构建当前状态 如果需要通过添加或删除属性或更改属性的语义来更改事件模式(事件类型),该怎么办?当前服务实现将无法处理旧事件,因为它们使用旧模式(它们不包含属性,或者语义已更改) 如何处理这种情况有什么想法吗 关于如何处理这种情况有什么想法吗 你为它设计。在确定事件模式时,首先要考虑向后兼容性,而且要尽早做到这一点,这样以后的更改就很容易了

随着基于事件源体系结构构建的软件项目的发展,事件模式(或事件类型)是最有可能随时间变化的因素之一

事件源架构提供的一个好处是,它能够“重播所有事件”,并从旧事件构建当前状态

如果需要通过添加或删除属性或更改属性的语义来更改事件模式(事件类型),该怎么办?当前服务实现将无法处理旧事件,因为它们使用旧模式(它们不包含属性,或者语义已更改)

如何处理这种情况有什么想法吗

关于如何处理这种情况有什么想法吗

你为它设计。在确定事件模式时,首先要考虑向后兼容性,而且要尽早做到这一点,这样以后的更改就很容易了

看,格雷格·杨

基本思想是:永远不要改变模式元素的语义。可以通过添加新的可选元素来扩展架构,也可以弃用可选元素

当这还不够时:创建一个设计更好的新模式,然后将数据迁移到新模式


您对使用schema.org有何看法

我认为那里的模式标识符是一个很好的起点,它们真正打开了与领域无关的组件共享消息的一些细节的可能性。例如,
http://schema.org/telephone
是一种很好的方式,可以与通用表示引擎进行通信,说明附带的数据适合拨号

因此,无论如何,在设计模式时要牢记这些类型,并尽可能长时间地与它们保持一致


但是当你真的出现分歧时,给你的模式一个新的标识符。

这是我在过去两年里一直在做的研究主题。 我们发现了5种可用于处理模式演变的技术:

  • 版本化事件:从不更改现有事件,始终引入新事件
  • 弱模式:优雅地处理缺少的属性或多余的属性
  • Upcaster:在应用程序必须处理事件之前,在运行时转换事件
  • 就地改造:只需在商店中更改您需要更改的内容
  • 复制转换:将整个门店复制到新门店
  • 我们的论文《事件来源的黑暗面》(The Dark Side of Event Sourceing)对此进行了总结

    我们还研究了周边地区:

    • 修剪事件存储以保持大小可维护
    • 如何保持读取模型同步
    • DDD如何帮助您防止模式演变
    最后一部分尚未公开。但你可以在这里找到我昨天在DDDEurope演讲的幻灯片:

    如果需要更改事件模式(事件类型)、添加或删除属性或更改属性的语义,该怎么办

    它用于指定何时可以添加、修改和删除字段。您可以将其视为JSON的更紧凑版本,并且它支持所有主要编程语言


    您可以将其与Confluent平台相结合,这将允许您获得数据模式的真实性和验证来源。此外,您还可以使用Kafka Avro SerDes管理主题中的Kafka消息模式

    你觉得使用schema.org怎么样?你觉得使用schema.org怎么样?以前从未见过。它看起来很有趣,但就我个人而言,我只会把它当作灵感。我不想将我的产品与可能比它需要的更通用的模式对齐。您可以扩展和修改类型。为了在客户端和服务之间共享词汇表,编写超媒体rest服务已经是一种常见的资源了……听起来很有趣,但链接是broken@pagliuca我修复了链接。