针对不同类型实体的微服务设计



我只想了解如何为以下用例设计/编写微服务:

客户端微服务媒体商店(我们称之为A(与另外两个不同的微服务进行对话

  1. 微服务电影(B(
  2. 微服务手册(C(

用户可能希望从MediaStore查看/订购电影或书籍。据我所知,Movie微服务将有其Movie实体和MovieDB,同样,Book微服务也将有其Book实体和BookDB。由于用户可以订购,因此在MediaStore微服务端有一个"订购"实体。

但是如何在客户端MediaStore微服务上设计/编写/使用它们呢?

a( 我是否应该使用另一个通用实体(比如Item(作为电影和书籍的父接口,以便与通用实体(Item(交互?原因是,我想在MediaStore微服务中创建一个实体"订单"。订单可以是电影或书籍。

b( 还是应该将它们单独用作"电影"one_answers"图书"实体?从而在MediaStore微服务中创建MovieOrder和BookOrder作为订单。

c(如果我能从StackOverflow社区获得关于这个用例的任何其他建议/知识/提示,那将非常有帮助。:(

如果这些实体(电影和书籍(之间有不同的属性,我想是这样,微服务A必须管理两个不同的实体,所以你应该选择B选项。

使用这种方法,您的订单实体将包括一个项目列表,项目必须存储项目类型,这样您就可以将其转换为原始实体,以便获得其特定信息

DDD的一个主要部分是识别定义何时发生变化(这些变化描绘了有界的上下文(。通常,让您的微/宏服务(为此,宏服务是作为协作微服务部署的单个服务(保持在一个有限的上下文中是一个好主意。

因此,考虑到这一点,您可能需要思考MediaStore的用途。如果它的目的只是管理订单,那么书籍和电影真的有区别吗?如果没有,那么在MediaStore的上下文中,你所需要的就是";项目";并且可以具有这样的属性:;这是一本书还是一部电影";。它不会有任何特定于书籍或电影的东西:作家、明星、导演等都是书籍和电影实体的属性,这些实体将有一个属性(甚至可能是零或一个,或一个或多个,或零或多个:想想你可能如何处理非卖品/预购品,或有许多不同版本的书籍或电影…(将它们与物品联系起来。然后,您将拥有图书/电影服务来管理图书/电影的特定信息。