rest - 可在 Internet 上访问的微服务端点
问题描述
我们有一个基于微服务的架构,其中每个服务都有一个 REST 端点。这些服务通过 REST 相互通信。
但是我注意到很多开发人员已经直接开始在我们的 Web 应用程序的 Javascript 代码中调用这些服务。我想知道是否建议通过 Internet 访问这些微服务,或者它们应该隐藏在 Facade 层后面。当然,所有端点都经过身份验证,但是所有 Web 应用程序用户只要执行 F12 就可以找到这些端点。
谢谢,
阿比
解决方案
我不会这样做,原因如下
- 安全。您正在按原样公开您的端点,它允许其他人了解很多关于您的端点的信息,而不是您希望他们知道的内容。身份验证没问题,但仍然对 DDOS 开放,用于您的个人服务、不按顺序调用、意外负载等。
- 服务发现。通过允许直接访问端点,您基本上是在强制开发人员将自己绑定到给定的 URL。这可能有效,但由于它限制您将来对您的 URL 等进行更改,因此最好不要这样做。通过在两者之间设置一层,如果需要,您将需要更改一个 url
- 代码重复在 URL 处理方面存在很多交叉问题,例如请求日志记录、https 剥离、身份验证、DDOS 预防、请求限制等。通过在您的服务之前拥有一个公共层,您可以在一个地方管理所有这些而不是为每个服务做每一个
如果您认为其中任何一个是或可能是主要问题,您应该在两者之间添加一个额外的层并通过它路由您面向互联网的 api。
推荐阅读
- python - 使用函数来模拟类的方法返回值
- python - 如何以稳定的方式使用 pytest 断言列表?
- markdown - GitHub Markdown 中的表格和图像并排
- python - 使用python构建杂乱数据
- selenium - [Ashot][Selenium] - 为 iOS 和 Android 截屏
- python - 如果将 QThread 创建为局部变量,为什么 QThread 的行为会有所不同
- gatsby - netlify-cms git 提交未显示在网站上
- mysql - 需要有关查询性能的帮助
- python - 将 Python 程序设置为在一定天数后过期
- javascript - 表单JS提交成功后想要重定向到URL