我最近开始使用微服务架构创建一个应用程序,因为应用程序演变了划分反向代理和API网关概念的线路为我消失:
我想使用nginx来处理负载均衡&反向代理,但我也想使用API网关,因此客户端不了解架构中的每个微服务(等等)。
所以现在我被鸡肉和鸡肉困住了鸡蛋问题,我一直在思考什么是第一个:
我倾向于认为它的数字1,但在这种情况下,nginx不会是应用程序的入口点......(这是一个问题吗?)
答案 0 :(得分:0)
API网关带有许多功能,如限制,缓存,编码等。许多使用API网关调用不同的微服务并将结果组合在API网关级别(我不喜欢它)。您还可以使用某些API网关工具进行API版本管理。
只有在您决定调用哪个API或阻止该API或要调用哪个版本的API之后,才能进行负载平衡。
所以选项1看起来对我来说。
答案 1 :(得分:0)
理想情况下,您应该选择选项2。这就是原因:
API网关通常不旨在处理潜在的DOS攻击,网关的nginx infornt消除了这种担忧。
大多数API网关都是基于路由的,如果您选择子域,则选项1仅适用于某些网关,而选项2将适用于所有网关。
构建像nginx这样的反向代理时要考虑到性能,并且可以以较低的成本处理更多的请求。在性能更高的服务器之前安装Node.js成为瓶颈!
从技术上讲,API网关是“专用”反向代理。因此,最终您将意识到任一个任务都可以执行。