【发布时间】:2019-02-01 01:43:30
【问题描述】:
我很困惑我的前端应用程序应该是调用微服务还是后端?
例如:假设我有一个使用“Auth”和“Products”服务的“App A”。我的“App A”服务器应该调用身份验证和产品服务吗?还是我的前端应该直接调用这些服务?
我认为在许多情况下,直接调用我的服务更正确,因为我注意到否则,我的应用服务器端点纯粹是这些服务的代理,这毫无用处。
【问题讨论】:
标签: architecture microservices
我很困惑我的前端应用程序应该是调用微服务还是后端?
例如:假设我有一个使用“Auth”和“Products”服务的“App A”。我的“App A”服务器应该调用身份验证和产品服务吗?还是我的前端应该直接调用这些服务?
我认为在许多情况下,直接调用我的服务更正确,因为我注意到否则,我的应用服务器端点纯粹是这些服务的代理,这毫无用处。
【问题讨论】:
标签: architecture microservices
您提到的方法与 API Gateway 的用例非常吻合。 它不仅仅是一个代理。围绕它可以做的事情太多了,但也许最重要的是安全性和抽象。 通过允许前端直接访问服务,您将所有服务暴露在互联网上,您必须建立机制来解决每个服务中的漏洞。在一个地方做是有意义的。
其次是端点的发现和可维护性,这样的解决方案会更好
这可能会增加一跳,但你可以用它做些什么就值得了。
如果您不直接公开服务,那么日志记录、路由、停机/错误处理都可以得到很好的管理。
关于 Auth 服务的另一点,它可能位于您的代理之后,或者可能是唯一暴露的其他服务。这些方法中的任何一种都有一些好处,但由于它不是您要求的,我将对其进行调整。
话虽如此,最终这一切都取决于您的需求和您的用例。如果安全不是主要问题,或者您更多地围绕 POC 工作。但只要考虑拥有一个的利弊
【讨论】:
一如既往...这取决于。如果您的后端纯粹是代理调用,那是没有用的。但是您也可以将它用于日志记录、负载平衡等。例如,Javascript 应用程序不能并行运行并利用您的所有内核。因此,这也可能是在后端处理请求的原因。真的没有万能的解决方案。
【讨论】: