Micro Service跨服务依赖项

Ada*_*ley 7 architecture microservices

为了简化我的情况,我目前有3个微服务.

  1. 认证
  2. 地点
  3. 库存

身份验证服务对用户进行身份验证并发送回JWT访问令牌,并将其用于其他服务.它的无国籍,一切运作良好.

我在位置服务中的其他一些设置位置,这很好,并按预期工作.

但现在我在库存服务,我需要添加一些库存,但它链接到一个位置.我可以轻松地在API调用中传递locationId,但我无法授权当前用户向该位置添加内容,除非我再调用位置服务来验证这一点.

然后,这会在彼此之间创建服务依赖关系,这是我试图不惜一切代价避免的事情,否则你只会失去微服务的大部分好处.

验证当前用户是否具有该位置的权限的推荐方法是什么?到目前为止我唯一想到的是其中之一

  1. 获取位置API以发出另一个访问令牌,其中包含他们有权访问的位置的其他声明.
  2. 或者发出另一种完全独立的某种令牌,并通过标头将其传递给库存微服务,以进行类似于JWT验证方式的验证.

编辑

如下面提到的聚合根(或者我假设它与API网关相同),它将提供另一个服务的第三个选项,以便与两者进行通信以提供信息.

然而,它留下了第3个服务依赖于其他2个,所以我只是增加了我的服务依赖性.

jlv*_*ero 8

你的微服务设计很差.你正在建模(locationitems)1 class = 1微服务,这不是一个好主意.

你应该像Aggregate Roots在里面那样建模微服务DDD; 即使有自己的有限背景.所以,你的情况,你应该模拟一个Aggregate Rootlocation, itemsuser允许在检查域规则item addition user action.这可能是,即你的Stock Context.

当然,这并不意味着您不应该Wharehouse Context添加,修改和/或删除locations(如果不需要依赖关系来检查域规则),那Aggregate Root就是Location class.但这是另一种情况下的其他微服务.

这篇文章应该对你有帮助.它将为您带来一个大A-HA!在阅读之后,在你的脑海里.