跨界上下文重复数据

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

目录微服务存储带有价格的产品。假设开发购物篮微服务,其中将添加用户选择的产品。篮子项目包含对目录有界上下文中的产品的引用(引导)。需要篮子项目中的价格来实现结帐流程(篮子上下文)中的业务要求,例如验证是否超出用户限制或求和订单价格。问题是:商品价格是否也应该存储在购物篮上下文中,或者为了获取价格,购物篮上下文应该向目录上下文发出同步请求?

domain-driven-design bounded-contexts
1个回答
0
投票

正在尝试这样做。

user -> catalog -> basket 

用户上下文

由于限制是针对每个用户的,因此在用户上下文级别设置这些限制是有意义的

选项 1:商品价格是否应该存储在购物篮上下文中

  • 这会导致目录服务中的价格重复并提供 2 倍的真实来源
  • 结帐时目录服务中的价格发生变化时会发生什么情况。那么用户限制在哪里评估?
  • 旁注添加到basekt上下文时,也可以动态添加价格,以便在超出限制时向用户提供即时反馈。然而,在根据最终结帐提交交易之前进行最终检查将有助于 100% 确保遵守用户限制

选项 2:要获取价格,购物篮上下文应向目录上下文发出同步请求

  • 获得这个的系统开销是多少?致电获取一系列商品的最新价格列表是否会非常昂贵?如果没有的话,这很合理。
  • 限制存储在用户级别,需要在结帐时进行评估,以确保满足业务规则。

鉴于这 2 个选项,我的意见和分析会让我倾向于选项 2,即在结账之前进行同步调用来计算产品和用户限制的总和。

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