我很困惑我的前端应用程序应该是调用微服务的应用程序还是后端应用程序?
例如:假设我有一个使用“Auth”和“Products”服务的“App A”。我的“App A”服务器应该调用身份验证和产品服务吗?或者我的前端应该直接调用这些服务?
我认为在很多情况下,直接调用我的服务更正确,因为我注意到,否则我的应用程序服务器端点纯粹是这些服务的代理,这是非常无用的。
最佳答案
您提到的方法与 API Gateway 的用例非常吻合。 它不仅仅是一个代理。围绕这个问题你可以做很多事情,但也许最重要的是安全性和抽象性。 通过允许前端直接访问服务,您将所有服务暴露给互联网,并且您必须建立机制来解决每一项服务中的漏洞。在一个地方完成这件事是有意义的。
其次是端点的发现和可维护性,这样的解决方案会更好
这可能会增加一跳,但您可以用它做的事情让它值得。
如果您不直接公开服务,那么日志记录、路由、停机/错误处理都可以得到很好的管理。
关于身份验证服务的另一点,它可能位于您的代理后面,或者可能是唯一公开的其他服务。这两种方法都有一些好处,但由于这不是您所要求的,所以我将对其进行修剪。
话虽如此,最终这一切实际上取决于您的需求和用例。如果安全性不是首要问题或者您更多地围绕 POC 开展工作。但只要考虑一下拥有一个的利弊
关于architecture - 前端还是后端调用微服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023726/