cqrs:在服务之间共享命令和事件语义

时间:2018-05-08 19:30:18

标签: java-ee cqrs

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

  1. 分享罐子?这里有一个很大的问题,因为在服务之间创建依赖关系!
  2. 我一直在阅读有关Avro和schema.org的内容,但我并不清楚如何使用它们。
  3. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

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

您不能在服务之间共享命令和事件类。您可以在服务之间共享命令和事件架构

Udi Dahan, 2014

  

服务共享合同和架构,而不是类或类型....除了通信协议之外,别无其他。

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

基本理念是这样的;您获取了一些要通信的信息,并使用模式将该信息转换为您发送给我的字节。我使用我的架构将字节转换回信息。如果我的架构与您的架构兼容,那么我将理解您的消息。

这样做的动机是您正在尝试支持服务的独立部署。如果您需要扩展您的消息架构,您应该能够重新部署蓝色服务,然后重新部署红色服务(反之亦然),而不会破坏系统。红色和蓝色架构不需要同步,只需兼容。

Avro,Thrift,Protocol Buffers是用于以字节为单位描述信息的所有系统。

Schema.org是一个架构;它是标识符(如http://schema.org/telephone)与telephone number等语义的映射。它是一个常见词汇表,允许域不可知组件执行有用的操作。

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