gpt4 book ai didi

architecture - 根据来自另一个服务的数据在微服务中进行输入验证

转载 作者:行者123 更新时间:2023-12-04 17:38:58 26 4
gpt4 key购买 nike

我正在使用微服务设计照片管理解决方案。

  • 一项服务负责跟踪特定用户拥有的单张照片数据。
  • 另一项服务负责相册。

我需要阻止用户将不属于自己的照片添加到他的相册中。很明显,我需要对“专辑服务”做一些验证。但有关照片所有者的信息在“照片服务”中。

我想到的一种可能的解决方案是将具有相关属性的照片记录复制到“相册服务”。但我不太喜欢,因为在这种情况下“相册服务”会有很多照片记录,这些照片记录不在任何相册中。

另一种选择是从“相册服务”到“照片服务”的同步调用。但这会打破微服务范式。

问题是,实现此类验证的好方法是什么。

最佳答案

ID 为 9876 的用户想要将 ID 为 1234 的照片添加到相册 333:

PUT /albums/333/photos/1234
user-id:9876 (in header)

相册服务调用照片服务来验证照片是否属于用户:

GET /photos/9876/1234 <- a bit contrived
404 Not Found

未找到向相册服务表明照片不属于用户,因此它向调用者返回 403(并且不更新相册)。

如您所说,这可能破坏微服务范式,但您已将问题定义为实时验证问题。实时问题需要实时解决方案。

如果不期望实时验证,那么您可以允许用户发出将照片添加到相册的请求,然后在稍后可能通过消息队列进行实际验证操作,使用通过 websockets 或其他通知机制将任何负面结果返回给用户。

关于architecture - 根据来自另一个服务的数据在微服务中进行输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com