目录
一个完整的项目项目除了spirngcloud 后端各个模块实现的动态接口外,还有大量的静态资源:比如前端页面相关的js、html 、css 图片等资源。客户端(app或者浏览器)一般都是通过统一域名访问这些资源的,那么就需要统一的网关绑定域名作为出口, 而nginx就是这个统一出口比较好的选择,主要是性能方面的考虑。
原因分析:
1.Nginx的高性能
Nginx是一个基于C++编写的高性能Web服务器和反向代理服务器,它以事件驱动的方式处理请求,能够高效地处理大量并发连接。
Nginx的底层实现使其在处理静态资源、SSL终止、HTTP压缩等方面具有显著优势。
2. SpringCloud Gateway的Java性能瓶颈
SpringCloud Gateway是基于Java编写的,虽然Java语言本身具有强大的功能和丰富的生态系统,但在处理高并发请求时,其性能可能受到JVM(Java虚拟机)和垃圾回收机制的限制。
因此,在高并发场景下,Nginx的性能优势更加明显。
各自的职责:
它们性能的差别决定了它们职责不同:
Nginx的静态资源处理:
Nginx非常适合作为静态资源的服务器,它可以高效地缓存和分发静态文件,如图片、CSS、JavaScript等。这有助于减轻后端服务的压力,提高系统的整体性能。
因为在流量处理上的能力很强,所以转发后端接口对nginx来说就是小case了,所以后端接口也会经过nginx转发到SpringCloud Gateway。
SpringCloud Gateway的动态路由和API管理:
SpringCloud Gateway 是springcloud 全家桶体系,所以和其他组件交互就比较容易,能和其他组件顺畅对接,实现复杂的业务网关能力: