是否可以通过其API查询微服务的ORM?

问题描述 投票:0回答:1

是否有可能通过其API查询微服务的ORM,并将其用作另一个微服务的ORM?

例如假设我的微服务A具有其API(我们将其称为API_A),其DB(DB_A)和其内部对象关系映射器实例(ORM_A),它们将属于微服务的类之间的对应关系定义为关系结构数据库并管理其访问。

现在,我想拥有一个微服务B,它相对于A具有不同的功能,尽管它与A具有相同的ORM(因此,具有相同DB_A结构的DB,尽管不一定具有相同的数据,但具有不同的功能可能会产生不同的数据)。

我如何以一种智能的方式查询/复制/镜像ORM_A到微服务B,这样我就不会重复代码,并且当A更改时,ORM_B也相应地更改而无需人工干预?

是否可以通过其API将ORM_A查询到B,然后在微服务B中重新创建它?

orm microservices api-design
1个回答
1
投票

API_A内部的代码更改可能会在API_B内部产生代码更改的想法在服务和它们的数据之间建立了耦合,这表明它们不应该是两个不同的服务。

如果API_B实际上执行的功能与API_A完全不同,并且仅需要API_A所显示的结构中的一些数据,则应考虑几个不同的选项,以确保API_B可以从API_A访问相关数据:

  1. 在API_B可以访问的端点中显示来自API_A的数据。这将创建一个易于执行和测试的API合同。此解决方案相对易于实现,但是会在两个API之间创建一些依赖关系。
  2. 设置一个事件主题,每当API_A写入API_B(或其他服务)可能希望使用的数据时,您都可以通知该事件主题。通过读取这些事件,API_B可以将相关数据以其自己的格式写入其自己的DB,从而避免通过数据结构或协定与A耦合。此解决方案需要创建事件队列,但它将是API_B性能的最佳解决方案。

[我见过人们在采用微服务时遇到的一件事(我自己也为之苦恼)是数据复制是可以的]的想法。尽量不要将数据视为跨多个服务的关系,因为这样自然就可以创建微服务中要避免的那种耦合。祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.