
一、什么是服务网关
前面章节介绍的Ribbon客户端负载均衡技术可以不用经过网关,因为通常使用Ribbon完成微服务与微服务之间的内部调用,而对那些对外提供服务的微服务,比如:用户登录、提交订单等,则必须经过网关来保证微服务的安全。
请求路由:API Gateway接收客户端的所有请求,并将它们转发给正确的后端微服务。这有助于简化客户端与多个后端服务之间的交互,因为客户端只需要知道API Gateway的地址,而不需要了解每个微服务的具体位置。 协议转换:API Gateway可以处理不同类型的客户端请求(例如HTTP、WebSocket等),并将它们转换成适合后端服务使用的协议。这对于支持多种设备和平台的客户端应用尤其有用。 负载均衡:通过API Gateway,可以实现对后端服务实例的负载均衡,确保请求均匀地分布在各个实例上,提高系统的稳定性和可用性。 安全控制:API Gateway可以实施各种安全措施,如身份验证、授权检查等,保护后端服务免受未授权访问。 请求聚合:对于某些复杂的请求,可能需要从多个微服务获取数据才能完成。API Gateway可以聚合这些请求,减少客户端与后端服务之间的通信次数,提高效率。 缓存:API Gateway可以缓存常用的数据或响应,减少对后端服务的直接调用,加快响应速度并减轻后端负载。 限流与熔断:为了防止后端服务过载,API Gateway可以设置请求限制,并在检测到故障时自动熔断,避免级联失败。 日志记录与监控:API Gateway还可以用于记录请求日志和监控系统性能,帮助开发团队快速定位问题并优化系统。
三、Zuul与Gateway对比
Zuul
功能特点:Zuul 是Netflix 开源的微服务网关,主要功能包括动态路由、监控、弹性、安全等。
性能:在高并发场景下的性能表现不如Nginx和Spring Cloud Gateway。
社区支持:虽然Zuul 1.x版本的社区活跃度有所下降,但Zuul 2.x版本仍然得到了一定的支持。
易用性:与Spring Cloud生态系统的集成良好,易于在Java应用中使用。
Spring Cloud Gateway
功能特点:Spring Cloud Gateway 是Spring Cloud 生态系统的一部分,旨在为微服务架构提供一种简单有效的统一API路由管理方式。
性能:基于Netty非阻塞模型,性能优于Zuul。
社区支持:受益于Spring Cloud强大的社区支持。
易用性:配置简单,与Spring Boot和Spring Cloud生态兼容性好。
四、Spring Cloud Zuul
Spring Cloud Zuul是整合Netflix公司的Zuul开源项目实现的微服务网关,它实现了请求路由、负载均衡、校验过虑等功能。Zuul是Netflix开发的一款提供动态路由、监控、弹性、安全等边缘服务的网关。
Zuul1 是基于 Servlet 框架构建,如图所示,采用的是阻塞和多线程方式,即一个线程处理一次连接请求,这种方式在内部延迟严重、设备故障较多情况下会引起存活的连接增多和线程增加的情况发生。
Zuul 2完全重写了Zuul的核心,采用了异步非阻塞I/O的架构,大大提高了性能和可伸缩性。Zuul 2还引入了更多新特性和改进,比如更灵活的路由规则、动态加载和卸载过滤器等,使得它更加强大和易用。

4.1 Zuul实战









