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

可以通过微服务的API查询其ORM吗?,orm,microservices,api-design,Orm,Microservices,Api Design,是否可以通过微服务的API查询微服务的ORM,并将其用作另一个微服务的ORM 例如,假设我有微服务A及其API(我们称之为API_A)、DB(DB_A)和内部对象关系映射器实例(ORM_A),它们定义了属于微服务的类与关系数据库结构之间的对应关系,并管理其访问 现在想象一下,我想要一个微服务B,具有与a相关的不同功能,尽管具有与a相同的ORM(因此具有相同结构的DB_a,尽管不一定具有相同的数据,因为不同的功能可能产生不同的数据) 我如何以智能的方式查询/复制/镜像ORM_A到microserv

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

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

现在想象一下,我想要一个微服务B,具有与a相关的不同功能,尽管具有与a相同的ORM(因此具有相同结构的DB_a,尽管不一定具有相同的数据,因为不同的功能可能产生不同的数据)

我如何以智能的方式查询/复制/镜像ORM_A到microservice B中,这样我就不会有代码重复,当A更改时,ORM_B也会相应地更改,而无需手动干预


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

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

如果ApIIIB实际上与APIIa有着完全不同的功能,只需要来自APIIa A的结构的几段数据,就应该考虑几个不同的选项,以确保相关数据可以从APIIAA访问:

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

  • 我看到人们在采用微服务时遇到的一件事(我自己也遇到过),就是认为重复数据是可以的。尽量不要将数据视为跨多个服务的关系型数据,因为这是您自然创建希望在微服务中避免的耦合的方式。祝你好运

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

    如果ApIIIB实际上与APIIa有着完全不同的功能,只需要来自APIIa A的结构的几段数据,就应该考虑几个不同的选项,以确保相关数据可以从APIIAA访问:

  • 将来自API_A的数据显示在API_B可以访问的端点中。这将创建一个易于实施和测试的API契约。此解决方案相对容易实现,但会在两个API之间创建一些依赖关系
  • 设置一个事件主题,当API_A写入API_B(或其他服务)可能需要使用的数据时,可以通知该主题。通过读取这些事件,API_B可以以自己的格式将相关数据写入自己的数据库,以避免通过数据结构或合同与数据库耦合。此解决方案需要创建事件队列,但对于API_B的性能而言,它是最好的解决方案
  • 我看到人们在采用微服务时遇到的一件事(我自己也遇到过),就是认为重复数据是可以的。尽量不要将数据视为跨多个服务的关系型数据,因为这是您自然创建希望在微服务中避免的耦合的方式。祝你好运