![](/img/trans.png)
[英]Microservices: how to effectively deal with data dependencies between microservices
[英]Microservices: how to handle scenario when data is needed between bounded contexts
我开始将node.js项目移至微服务方法,但没有得到应该如何共享数据的方法。 这是一个示例,假设我具有以下有限上下文:
在此示例中,图像和视频似乎自然地依赖于帐户绑定的上下文或微服务。 我假设我可以将帐户表复制到图像和视频数据库中,并且只存储所需的帐户数据,但是在保持一致性等方面,这似乎是一场噩梦,因为频繁更新帐户信息,更不用说其他微服务也需要相同的依赖关系。 我可以让所有三个微服务使用同一数据库,但是这违反了将每个微服务绑定到其自己的数据库的建议。
建议使用什么方法来处理这种情况? 我仍处于计划阶段,并希望确保以正确的方式执行此操作。
我假设我可以将帐户表复制到图像和视频数据库中,并且只存储所需的帐户数据,但是在保持一致性等方面,这似乎是一场噩梦,因为频繁更新帐户信息,更不用说其他微服务也需要同样的依赖
我认为那肯定是矫kill过正。 实际上,这种依赖程度似乎取决于视频和图像服务,它们需要知道与自己的实体相关联的帐户。 在两种情况下,都可以通过简单地针对实体存储帐户ID来实现。
这样可以减少由于帐户ID更改而引起的任何一致性问题,这可以通过使帐户不可变来缓解。 这意味着一旦创建帐户,便永远无法删除它。 这样,视频或图像就不可能与不再存在的帐户相关联。
您无需将帐户数据复制到视频/图像服务中。 存储视频/图片时,只需提供其accountID。
例如,当您需要获取用户及其图像时,可以使用不同的选项来获取数据:
如果使用API网关,则可以从它到服务进行2次异步并行调用,然后将这两个数据合并到DTO中并将其返回。
如果由于首先需要用户的特定数据而无法实现,则只需致电帐户服务,该帐户服务转而致电图像服务以检索其数据,然后将整个数据包发回。
由您决定是否可行。
长话短说,只需将帐户ID与每个视频/图像实体一起存储。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.