跨微服务构建对象

时间:2018-02-22 11:03:48

标签: java oop domain-driven-design microservices soa

我们有三个微服务MSA,MSB和MSC。微服务MSA创建部分对象O1并仅通过专用消息主题发送给MSB。在从MSA接收到部分对象O1之后,MSB在O1中填充更多属性并共享MSC从中消耗对象O1的公共消息总线。

问题是,这是一种在多个微服务中共享对象构建的好方法吗?

2 个答案:

答案 0 :(得分:2)

这是你的回答:

在面向对象的编程中,God对象是一个知道太多或太多的对象。上帝的对象是反模式的一个例子。

一种常见的编程技术是将一个大问题分成几个较小的问题(分而治之的策略)并为每个问题创建解决方案。一旦解决了较小的问题,整个大问题就解决了。因此,针对小问题的给定对象仅需要了解自身。同样,对象只需要解决一组问题:它自己的问题。

答案 1 :(得分:1)

所以你有一个微服务订购和一个微服务定价。两个微服务都需要有关产品实体的信息。

你应该问问自己:

  • 这两个不同的世界是否以同样的方式实现了产品实体?他们俩都需要相同的信息吗?
  • 产品信息是否会因两个微服务的相同原因而发生变化?

如果不是(可能是这种情况),则必须在它们之间添加一个抽象层,以确保它们使用相同的语言。 如果是,您可以继续共享同一个对象。

顺便说一下,你所拥有的这些担忧并不是一件新鲜事。 这是Martin Fowler关于bounded contexts

的文章
  

因此,DDD将大型系统划分为有界上下文   其中可以有统一的模型 - 本质上是一种结构化方式   MultipleCanonicalModels。

进一步研究的关键词: DDD,背景图,有界背景,反腐层。