让我们说,我正在设计一个电子学习门户,用户可以在其中选择他想参加的课程,然后在线进行付款,然后他/她可以使用这些课程。因此,我具有以下模块:1)课程2)付款3)用户管理。我选择设计3个独立的微服务,即a)课程b)付款和c)基于域的用户管理。现在,如果该系统是一个整体,那么我们可以使用外键,并可以链接用户,课程和付款表以关联数据。现在,由于这三个是不同的微服务,并且将拥有自己的数据库,那么如何将数据链接在一起?即,如果我想证明某个特定的用户“ X”已经注册了“ A”,“ B”,“ C”课程?
答案 0 :(得分:0)
另一个其他微服务的微服务使用者可以存储特定外部资源的标识符,并在其数据库(RDBMS或任何数据库类型)中将其逻辑与其自身资源关联。
那不是数据库约束关系,但是如果必须要有此约束,那么您当然可以添加一些有关其存在性和一致性的检查。
假设微服务之间的关系为:
User Management -> Courses
uses
用户管理可以存储与用户相关联的课程资源的资源标识符。
这样,您便可以通过一种特定的方式来合并两个域的数据。
如果需要其他依赖方式(“课程->用户管理”),则没有什么可以阻止您执行相同的逻辑。
不是您的问题,而是微服务之间的数据关系的重要结果:必须处理外部资源的数据更新。拉,推?有无缓存?这实际上取决于您的用例。