【发布时间】:2019-07-31 21:44:40
【问题描述】:
假设我们有两个微服务,Customers 和 Orders,它们之间没有依赖关系,即它们不互相调用,也不知道彼此。但是,每个订单都通过客户 ID 引用客户。换句话说,一个客户可能有零个或多个订单,而一个订单恰好属于一个客户。
就示例而言,删除客户完全没问题除非有属于该客户的订单。如果一个或多个订单引用了该客户,那么对客户实施约束以防止删除该客户的最合适方法是什么?类似于关系数据库中的参照完整性。
这些是我能想到的方法:
- 让客户询问订单是否给定客户有任何订单,例如通过 API 调用。
- 让客户跟踪分配给每个客户的订单,例如通过让每个客户记录维护一个订单 ID 列表。
- 将客户和订单合并到一个微服务中并在内部进行管理。
我不确定哪种方法最适合微服务上下文中的给定示例。我可以看到所有三种方法的优缺点,但我不会在这里列出它们,因为我想听听其他人对这个问题的看法,包括上面未列出的方法。谢谢。
【问题讨论】:
标签: microservices