是否可以通过API查询微服务的ORM?
Is it possible to query the ORM of a microservice through its API?
是否可以通过API查询一个微服务的ORM,并作为另一个微服务的ORM使用?
例如假设我有微服务 A,它的 API(我们称它为 API_A)、它的数据库(DB_A)和它的内部对象关系映射器实例(ORM_A)定义属于微服务的 类 与关系数据库的结构和管理其访问之间的对应关系。
现在假设我想要一个微服务 B,它具有与 A 不同的功能,尽管与 A 具有相同的 ORM(因此具有与 DB_A 相同结构的数据库,尽管不一定与相同的数据,因为不同的功能可能会产生不同的数据)。
我如何 query/copy/mirror ORM_A 以一种聪明的方式进入微服务 B,这样我就没有代码重复,当 A 发生变化时, ORM_B 也相应地发生变化而无需手动干预?
是否可以选择通过其 API 将 ORM_A 查询到 B,并在微服务 B 中重新创建它?
API_A 内的代码更改可能会在 API_B 内产生代码更改的想法在服务及其数据之间创建了耦合,这表明它们不应该是两个不同的服务。
如果 API_B 实际上执行的功能与 API_A 完全不同,并且只需要 API_A 浮出水面的结构中的几条数据,您应该考虑几个不同的选项确保相关数据可供 API_B 从 API_A:
访问
- 在 API_B 可访问的端点中显示来自 API_A 的数据。这将创建一个更易于执行和测试的 API 合约。此解决方案相对容易实施,但会在两个 API 之间创建一些依赖关系。
- 设置一个事件主题,只要 API_A 写入 API_B(或其他服务)可能想要使用的数据,您就可以通知该主题。通过读取这些事件,API_B 可以将相关数据以自己的格式写入自己的 DB,以避免通过数据结构或契约与 A 耦合。此解决方案需要创建事件队列,但对于 API_B.
的性能来说是最佳解决方案
我看到人们在采用微服务时遇到的一件事(我自己也遇到过)是 数据复制没问题。尽量不要将数据视为跨多个服务的关系,因为这就是您自然会创建您希望在微服务中避免的那种耦合的方式。祝你好运!
是否可以通过API查询一个微服务的ORM,并作为另一个微服务的ORM使用?
例如假设我有微服务 A,它的 API(我们称它为 API_A)、它的数据库(DB_A)和它的内部对象关系映射器实例(ORM_A)定义属于微服务的 类 与关系数据库的结构和管理其访问之间的对应关系。
现在假设我想要一个微服务 B,它具有与 A 不同的功能,尽管与 A 具有相同的 ORM(因此具有与 DB_A 相同结构的数据库,尽管不一定与相同的数据,因为不同的功能可能会产生不同的数据)。
我如何 query/copy/mirror ORM_A 以一种聪明的方式进入微服务 B,这样我就没有代码重复,当 A 发生变化时, ORM_B 也相应地发生变化而无需手动干预?
是否可以选择通过其 API 将 ORM_A 查询到 B,并在微服务 B 中重新创建它?
API_A 内的代码更改可能会在 API_B 内产生代码更改的想法在服务及其数据之间创建了耦合,这表明它们不应该是两个不同的服务。
如果 API_B 实际上执行的功能与 API_A 完全不同,并且只需要 API_A 浮出水面的结构中的几条数据,您应该考虑几个不同的选项确保相关数据可供 API_B 从 API_A:
访问- 在 API_B 可访问的端点中显示来自 API_A 的数据。这将创建一个更易于执行和测试的 API 合约。此解决方案相对容易实施,但会在两个 API 之间创建一些依赖关系。
- 设置一个事件主题,只要 API_A 写入 API_B(或其他服务)可能想要使用的数据,您就可以通知该主题。通过读取这些事件,API_B 可以将相关数据以自己的格式写入自己的 DB,以避免通过数据结构或契约与 A 耦合。此解决方案需要创建事件队列,但对于 API_B. 的性能来说是最佳解决方案
我看到人们在采用微服务时遇到的一件事(我自己也遇到过)是 数据复制没问题。尽量不要将数据视为跨多个服务的关系,因为这就是您自然会创建您希望在微服务中避免的那种耦合的方式。祝你好运!