更新/添加为单独的服务并作为单独的服务获取

时间:2018-06-04 20:22:49

标签: microservices

我们开始将现有项目迁移到微服务架构中。经过大量的视频/讲座后,我们得出的结论是,服务应该完成一项任务而且只需要完成一项任务,并且应该做得很好。服务应围绕NounVerb设计。

我们有一个基本上有CRUD操作的实体。现在添加,更新和删除是最少使用的操作,但GET请求与这些操作相比过高。通常,更新/添加/删除由管理员完成。

我们想到的是将CRUD实体分解为两个服务

  • EntityCUDService(创建/更新/删除)
  • EntityLookupService(get)

现在这两个服务都指向mongo中的相同集合或者说一些SQL。 现在,如果EntityCUDService对集合/表做了一些更改,则EntityLookupService会失败。

我们听说保持语义版本控制,听起来不错但我们也听说过微服务不应该共享模型/数据源。那么处理这个问题的最佳解决方案是什么呢?我们有大量的获取但是相同实体的数十次更新/添加

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

通常,微服务应该管理单个实体。因此,在您的情况下,您可以使用一个微服务来管理实体(用于实体上的各种操作)。现在,如果要在读取和写入操作的基础上再次拆分服务,那么您将遵循CQRS模式。在CQRS中,您可以在读写操作的基础上拆分微服务。所以现在你将有2个服务,一个叫做命令服务,另一个叫同一个实体的被叫查询服务。我建议首先使用一个服务来管理实体,然后根据需要将其拆分为单独的服务以进行读写操作。如果您打算使用CQRS,那么请看一下事件采购,因为它非常适合微服务设计中的CQRS。