暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

微服务架构解决方案-服务网关Zuul

原创 棉花糖老丫 2024-11-13
136

一、什么是服务网关

服务网关是在微服务前边设置一道屏障,请求先到服务网关,网关会对请求进行过虑、校验、路由等处理,并将这些请求路由到相应的后端微服务。服务网关可以提高微服务的安全性,校验不通过的请求将被拒绝访问。

前面章节介绍的Ribbon客户端负载均衡技术可以不用经过网关,因为通常使用Ribbon完成微服务与微服务之间的内部调用,而对那些对外提供服务的微服务,比如:用户登录、提交订单等,则必须经过网关来保证微服务的安全。

二、服务网关主要作用
  1. 请求路由:API Gateway接收客户端的所有请求,并将它们转发给正确的后端微服务。这有助于简化客户端与多个后端服务之间的交互,因为客户端只需要知道API Gateway的地址,而不需要了解每个微服务的具体位置。
  2. 协议转换:API Gateway可以处理不同类型的客户端请求(例如HTTP、WebSocket等),并将它们转换成适合后端服务使用的协议。这对于支持多种设备和平台的客户端应用尤其有用。
  3. 负载均衡:通过API Gateway,可以实现对后端服务实例的负载均衡,确保请求均匀地分布在各个实例上,提高系统的稳定性和可用性。
  4. 安全控制:API Gateway可以实施各种安全措施,如身份验证、授权检查等,保护后端服务免受未授权访问。
  5. 请求聚合:对于某些复杂的请求,可能需要从多个微服务获取数据才能完成。API Gateway可以聚合这些请求,减少客户端与后端服务之间的通信次数,提高效率。
  6. 缓存:API Gateway可以缓存常用的数据或响应,减少对后端服务的直接调用,加快响应速度并减轻后端负载。
  7. 限流与熔断:为了防止后端服务过载,API Gateway可以设置请求限制,并在检测到故障时自动熔断,避免级联失败。
  8. 日志记录与监控: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实战

1、部署用户信息服务A、单点登录服务B,每个服务部署至少两台机器。
2、将用户信息服务A、单点登录服务B注册到EurekaServer中。
3、开发并部署zuul


4、在zuul中配置路由


5、可以定义filter,需要集成zuul提供filter类,进行校验拦截。
6、在spring boot的启动类中配置注解

7、根据上边的路由配置访问微服务。


凡是以/sso/打头的请求,路由到 itcast-microservice-sso微服务:
http://localhost:6677/sso/login/test

4.2 总结

zuul网关,不仅提供对外服务访问,微服务也可以通过zuul请求其它的微服务。
往期回顾:
软件架构演进(单体结构、垂直架构、SOA架构到微服务架构的过程)
SpringCloud技术栈

微服务架构解决方案-服务治理Eureka

微服务架构解决方案-负载均衡Ribbon

微服务架构解决方案-容错保护Hystrix

最后修改时间:2024-11-21 08:29:34
文章转载自棉花糖老丫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论