首页 > 解决方案 > 更新/添加为单独的服务和获取为单独的服务

问题描述

我们开始将现有项目迁移到微服务架构中。在浏览了很多视频/讲座之后,我们得出一个结论,一个服务应该做一个任务,只做一个任务,并且应该擅长它。服务应该围绕Noun和设计Verb

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

我们想到的是把 CRUD 实体分成两个服务

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

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

任何帮助是极大的赞赏。

标签: microservices

解决方案


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


推荐阅读