【问题标题】:cqrs: Sharing Command and Event semantics between servicescqrs:在服务之间共享命令和事件语义
【发布时间】:2018-05-09 21:38:31
【问题描述】:

我不太明白如何在服务之间共享命令和事件类。

  1. 共享罐子?这里有一个大问题,因为在服务之间创建了依赖关系!
  2. 我一直在阅读有关 Avro 和 schema.org 的信息,但我不太了解如何使用它们。

有什么想法吗?

【问题讨论】:

    标签: jakarta-ee cqrs


    【解决方案1】:

    我不太明白如何在服务之间共享命令和事件类。

    您不会在服务之间共享命令和事件类。您在服务之间共享命令和事件模式

    Udi Dahan, 2014

    服务共享契约和架构,而不是类或类型....除了通信协议,没有别的。

    此外,您将设计资本投入到架构中,以便您可以向前/向后兼容的方式发展您的消息。 Greg Young 关于Versioning in an Event Sourced System 的书是我在这方面的参考资料,但实际上许多消息传递标准都有讨论相同想法的参考资料。

    基本思路是这样的;您获取一些您想要传达的信息,然后使用您的架构将该信息转换为字节,然后发送给我。我使用我的模式将字节转换回信息。如果我的架构和你的架构兼容,那么我会理解你的信息。

    这样做的动机是您试图支持服务的独立部署。如果您需要扩展您的消息模式,您应该能够在不破坏系统的情况下重新部署蓝色服务,然后再部署红色服务(反之亦然)。红蓝模式不需要同步,兼容即可。

    Avro、Thrift、Protocol Buffers 都是以字节为单位描述信息的系统。

    Schema.org 是一个模式;它是标识符(如http://schema.org/telephone)到语义(如telephone number)的映射。这是一个通用词汇表,允许与领域无关的组件做有用的事情。

    这些通常出现在消息的超媒体表示中,它们具有描述数据和告诉您在哪里查找更多信息的双重目的。

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 2017-05-27
      • 2019-03-17
      • 1970-01-01
      相关资源
      最近更新 更多