【发布时间】:2021-07-29 19:40:41
【问题描述】:
我们实现了如下架构:
-
身份服务器 4:我们将其用作身份验证/授权服务,我们有两个内部客户端,用户在身份上被重定向以登录/注册。
-
Ocelot API Gateway:是一个简单的网关,这个、Identity 和两个前端客户端是我们唯一直接暴露在网络上的服务。我们的前端调用网关,充当我们微服务的某种代理。它还检查用户的授权。
-
微服务:在这个网关后面有 6 个微服务,显然负责各种事情。其中一个微服务负责处理用户信息。
现在我们的问题是,每当用户在 Identity 上注册时,我们都会通过 rabbit 发送消息来更新用户微服务。但我们也需要做相反的事情:每当用户更新他的姓名或姓氏时,我们必须在用户微服务中更改它并通知身份。
关于此类问题的最佳做法是什么?
我们曾考虑在 rabbit 中仅通过队列监听身份,但这意味着来自身份的信息流将是双向的,这可能是一个问题。
我们还考虑更改“更新配置文件”消息的“接收者”,将其发送到身份,最终将更新姓名和姓氏,并通过 rabbit 将信息转发到我们的微服务,但这意味着:
-
Identity 将收到一个巨大的有效负载,并且将有效地使用该有效负载的两个字段。
-
此方法将不再位于网关后面。
我们也在考虑不关心身份中保存的姓名和姓氏,并将它们从身份中的数据库中完全删除。
您对此有何看法?
【问题讨论】:
标签: c# architecture microservices identityserver4 gateway