在微服务架构的上下文中,单个业务操作可能需要两个或多个服务之间的协作。
假设我们有一个订单管理服务和一个产品目录服务。当用户将订单项目添加到订单时,订单管理服务将保留一个 OrderItem 对象,该对象具有以下属性:
OrderItem
+ Id
+ ProductId
+ ProductName
为了让 Order Management Service 填充 ProductName 属性,我们有 4 个选择,如我所见:
选择 1:ProductName 由客户端应用程序给出,因为它可能已经拥有来自先前请求的数据
选择 2:如果架构使用 Api 网关,网关将负责从产品目录服务中检索产品名称,然后将其提供给订单管理服务。
选择 3:订单管理服务将直接调用产品目录服务并要求他提供产品 ID 给定的产品名称。
选择 4:订单管理服务在其自己的数据库中有重复的(但不是详尽的)产品信息,每次从产品目录服务接收到更新事件时,这些数据都会更新。
在这 4 个选择中,n°1 对我来说似乎不太合适,因为我们不能相信客户会给我们一个正确和更新的 ProductName 值。
我想听听您对您认为最好的选择是什么以及原因的看法!
谢谢 !
里亚纳