C# 如何从另一个微服务检查用户是否存在

C# 如何从另一个微服务检查用户是否存在,c#,.net,asp.net-core,.net-core,microservices,C#,.net,Asp.net Core,.net Core,Microservices,我想了解微服务体系结构,我有一个这样的问题:我有一个用于注册和发行令牌的微服务,还有一个用于订单的微服务,每个订单都有自己的数据库。因此,在下订单时,我需要以某种方式检查传递id的用户是否确实存在。 我考虑过对用户微服务的api调用,但我认为这不是一个好主意,这将在微服务之间创建连接。 也有消息代理,但它们在这里也不起作用,因为如果用户的微服务很忙,那么我们就不会等待太久的响应。 有什么好的建议吗?我认为在典型的微服务体系结构中,您会有一个称为API网关的单一API,供您的客户调用。该API网关

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

我认为在典型的微服务体系结构中,您会有一个称为API网关的单一API,供您的客户调用。该API网关负责顺序调用微服务公开的每个其他API。这样,微服务就不会互相呼叫


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

是的,我有一个api网关,但它只用于在重定向到主路由之前验证自定义令牌。它使用Ocelot包,没有自己的api,只有路由重定向和令牌验证的设置。如果api网关对微服务的每个请求都有单独的api,那么这是一种好方法吗?您可以让客户端负责在进行POST调用以创建订单之前检查用户是否存在。。。?如果您自己编写客户机,或者如果您可以相信客户机应用程序的作者会这样做,那么这似乎是合理的,并且您不需要向API网关添加更多功能。但是,如果您不能信任客户机执行该检查,那么您可能需要网关API来完成的不仅仅是重新路由请求。只要我的两分钱