● 压力测试:逐渐增加指向集群的负载流量,从而计算性能水平。
● 静态响应处理:在边缘位置直接建立部分响应,从而避免其流入内部集群。
● 多区域弹性:跨越AWS(亚马逊云服务)区域进行请求路由,旨在实现负载均衡使用多样化并保证边缘位置与使用者尽可能接近。
● 验证与安全保障:识别面向各类资源的验证要求并拒绝那些与要求不符的请求。
● 审查与监控:在边缘位置追踪数据及统计结果,从而为我们提供准确的生产状态。
Zuul1的功能相对比较简单,它本质上是基于Spring MVC框架开发的一个Web Servlet应用。Zuul1的核心模块是一系列Filter过滤器,使用阻塞式的I/O,通过线程池技术实现请求的并发处理。每个请求都对应独立的线程,处理后端的业务逻辑。如下图所示是Zuul1的主要编程模型。
Zuul1的线程模型决定了Zuul1在高并发场景下存在性能瓶颈,所以Netflix为了解决网关的I/O瓶颈,开发了基于NIO(非阻塞I/O)模式的Zuul2。下图是Zuul2基于Reactor模式的架构实现。
Zuul2的设计相对复杂,采用了Netty框架实现异步非阻塞的编程模型,Zuul2虽然在性能上比Zuul1有明显的优势,然而Zuul2的问题是在编程模型和代码调试、排查问题上复杂性比较高。另外Zuul2的线程异步特性也给以本地线程方式进行请求跟踪和监控工作带来了麻烦。
在生态上,Spring Cloud Finchley继续沿用了Zuul1,没有采用Zuul2,一方面是因为Zuul2的改动比较大,从生态稳定性和兼容性上来讲,Zuul1有明显的优势,另一方面是因为Spring Cloud已经基于Spring Boot 2.0和Reactor实现了Spring Cloud Gateway异步网关。
Zuul1目前与Eureka、Ribbon、Hystrix都实现了无缝的对接融合,具备更多额外能力,Zuul1已经部署在很多在生产环境中,经过大规模验证,同时Zuul1可以使用Servlet 3.0规范支持的AsyncServlet进行优化,可以实现前端异步,支持更多的连接数,达到和Zuul2一样的效果,但是不用引入太多异步复杂性。
Spring Cloud Zuul1的接入与配置
========================
1.添加Maven依赖
2.配置文件
3.定义Zuul网关启动类
Zuul的路由配置方式
===========
默认情况下,在application.yml中配置Zuul的路由,主要有三种主要的路由配置方式。
● 单实例serviceId映射
配置文件如下:
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
[外链图片转存中…(img-8C9MlFAm-1714685291524)]