【问题标题】:How to check the existence of a user from another microservice如何检查来自另一个微服务的用户是否存在
【发布时间】:2021-05-11 06:21:30
【问题描述】:

我想了解微服务架构,我有一个这样的问题:我有一个用于注册和发行令牌的微服务,以及一个用于订单的微服务,它们每个都有自己的数据库。因此,在下订单时,我需要以某种方式检查所传递 id 的用户是否真的存在。 我考虑过对用户微服务的 api 调用,但我认为这不是一个好主意,这将创建微服务之间的连接。 还有消息代理,但它们也不会在这里工作,因为如果用户微服务很忙,那么我们不会等待很长时间的响应。 有什么好的提议吗?

【问题讨论】:

    标签: c# .net asp.net-core .net-core microservices


    【解决方案1】:

    我认为在典型的微服务架构中,您将拥有一个名为 API 网关 的 API,供您的客户调用。该 API 网关负责按顺序调用您的微服务公开的每个其他 API。这样微服务就不会互相调用。

    因此,在您的情况下,我希望客户端(MVC 网站、Angular 网站、iOS 或 Android 应用程序、Blazor WASM 应用程序、桌面应用程序等)会调用您的网关 API,而网关 API 会调用用户微服务和询问用户是否存在。然后,如果用户确实存在,网关 API 将调用 Orders 微服务来下订单。然后它会向客户端返回响应。

    【讨论】:

    • 是的,我有一个 api 网关,但它仅用于在重定向到主路由之前验证自定义令牌。它使用 Ocelot 包,它没有自己的 api,只有路由重定向和令牌验证的设置。如果 api 网关对每个微服务请求都有一个单独的 api,这是一个好方法吗?
    • 您可以让客户端负责在发出 POST 调用以创建订单之前检查用户是否存在...?如果您自己编写客户端,或者您可以相信客户端应用程序的作者会这样做,那么这似乎是合理的,并且您不需要向 API 网关添加更多功能。但是,如果您不能信任客户端进行该检查,那么您可能需要您的网关 API 来做更多的事情,而不仅仅是重新路由请求。只是我的两分钱
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多