Microservices 更新/添加为单独服务和获取为单独服务

Microservices 更新/添加为单独服务和获取为单独服务,microservices,Microservices,我们开始将现有项目迁移到微服务体系结构中。在观看了大量视频/讲座后,我们得出结论,一项服务应该完成一项任务,而且只能完成一项任务,而且应该非常出色。服务的设计应围绕名词和动词 我们有一个基本上有CRUD操作的实体。现在,添加、更新和删除是使用最少的操作,但与这些操作相比,获取请求的速度太高。通常,更新/添加/删除由管理员完成 我们想到的是将CRUD实体分解为两个服务 EntityCUDService(创建/更新/删除) EntityLookupService(get) 现在,这两个服务都指向

我们开始将现有项目迁移到微服务体系结构中。在观看了大量视频/讲座后,我们得出结论,一项服务应该完成一项任务,而且只能完成一项任务,而且应该非常出色。服务的设计应围绕
名词
动词

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

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

  • EntityCUDService(创建/更新/删除)
  • EntityLookupService(get)
现在,这两个服务都指向mongo中的同一个集合,或者说一些SQL。 现在,如果
EntityCUDService
对集合/表做了一些更改,则
EntityLookupService
将失败

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


非常感谢您的帮助。

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

您正在尝试一次性打开所有潘多拉盒子。我的建议是继续使用最简单的解决方案,在一个服务中公开REST实体的CRUD操作。尝试使用负载平衡器分配负载。如果所有其他东西都不能满足要求的比例/负载,则选择CQR。