orm - 解决微服务之间的设计依赖
问题描述
我正在使用微服务方法设计一个电子商务应用程序,使用 ORM(JPA) 为名为 OrderService 的微服务之一提供数据持久性。OrderService 拥有与持久化和报告订单相关的功能,其中主要包括客户和产品信息。客户和产品功能由不同的微服务管理。我的问题是在 ORM 层 OrderService 需要属于 ProductService 和 CustomerService 的 POJO。处理服务之间的这种依赖关系的最佳方法是什么?应用程序需要以不同的方式设计吗?
解决方案
尝试寻找解决方案时应该考虑的事项很少 1. 您无法访问其他服务的数据库,您必须拨打电话。2.您应该尽量不要将来自其他服务的数据保存到您的服务中。数据重复会导致不一致的状态,如果可以的话应该避免 3. 您应该有一种方法可以在被要求时从其他服务中查询数据。
现在有了这些要点,我将主要将来自其他服务的数据限制为一些参考 id(应该是不可变的)。在 ORM 层,我将只获取引用 ID 并通过对相关服务(业务层)进行 API 调用来膨胀它们。
您可能会意识到您使用客户 ID 向客户服务提供客户名称的调用次数过多,如果是这种情况,您可以考虑将其中一些信息保存在您的系统中。但请注意。您保存的数据不应不稳定,并确保您在拨打电话时已尽职尽责。
推荐阅读
- java - Java中的随机,重复相同的数字
- wordpress - SCSS 的 PhpStorm 文件观察器未编译 node_modules
- javascript - 如何在 vuejs 中获取特定的对象值?
- javascript - 在 const = require 中显示文件结构的正确方法?
- python-2.7 - 如何在 python 2.7 中执行我的程序逻辑之前响应 HTTP 请求
- c - Gtk-CRITICAL **: 16:04:21.737: gtk_box_pack: 断言 'GTK_IS_WIDGET (child)' 失败
- yocto - 如何将 ldd 实用程序添加到 bitbake 图像
- javascript - 如何将具有特定键、深度键的 JSON 对象中的所有值放入数组中
- php - 返回 JSON 响应而不是 401 Blade 文件
- nlog - 未找到 NLog MessageBox 目标