【发布时间】:2018-05-09 21:38:31
【问题描述】:
我不太明白如何在服务之间共享命令和事件类。
- 共享罐子?这里有一个大问题,因为在服务之间创建了依赖关系!
- 我一直在阅读有关 Avro 和 schema.org 的信息,但我不太了解如何使用它们。
有什么想法吗?
【问题讨论】:
标签: jakarta-ee cqrs
我不太明白如何在服务之间共享命令和事件类。
有什么想法吗?
【问题讨论】:
标签: jakarta-ee cqrs
我不太明白如何在服务之间共享命令和事件类。
您不会在服务之间共享命令和事件类。您在服务之间共享命令和事件模式。
服务共享契约和架构,而不是类或类型....除了通信协议,没有别的。
此外,您将设计资本投入到架构中,以便您可以向前/向后兼容的方式发展您的消息。 Greg Young 关于Versioning in an Event Sourced System 的书是我在这方面的参考资料,但实际上许多消息传递标准都有讨论相同想法的参考资料。
基本思路是这样的;您获取一些您想要传达的信息,然后使用您的架构将该信息转换为字节,然后发送给我。我使用我的模式将字节转换回信息。如果我的架构和你的架构兼容,那么我会理解你的信息。
这样做的动机是您试图支持服务的独立部署。如果您需要扩展您的消息模式,您应该能够在不破坏系统的情况下重新部署蓝色服务,然后再部署红色服务(反之亦然)。红蓝模式不需要同步,兼容即可。
Avro、Thrift、Protocol Buffers 都是以字节为单位描述信息的系统。
Schema.org 是一个模式;它是标识符(如http://schema.org/telephone)到语义(如telephone number)的映射。这是一个通用词汇表,允许与领域无关的组件做有用的事情。
这些通常出现在消息的超媒体表示中,它们具有描述数据和告诉您在哪里查找更多信息的双重目的。
【讨论】: