一、spring cloud zuul的介绍
(1)spring cloud zuul是服务网管,是所有外部请求的统一入口。理论上服务网管是处理非业务逻辑的绝佳场所。如果服务网管出现问题,系统就会全部瘫痪,所以必须具备的要素有:稳定性、高可用、高并发、安全性以及可扩展性。
(2)spring cloud zuul最核心的组件就是一系列的过滤器,所有的请求经过zuul,都需要经过过滤器的过滤,再返回请求给客户端。zuul的过滤器分为:前置过滤器(pre)、路由过滤器(route)、后置过滤器(post)、处理异常的过滤器(error)以及自定义过滤器。
这是zuul的组件架构图,可以看到每个过滤器之间是没有通信的,都是通过requestContext这个静态类进行数据的传递的。
(3)在zuul中一次http请求的生命周期
由上图可以看出一次http请求首先经过前置过滤器(pre),可以在这里进行请求参数的加工,比如参数校验等。接下来到达路由过滤器(route),该类型的过滤器是将外部的请求转发到服务提供方,假如服务提供方有多个实例,就会用到负载均衡组件。接下来到达后置过滤器(post),在这里可以对返回的结果进行加工和处理。当前面说的这三种类型的过滤器出现异常的时候,会被error filter过滤器捕获到,因此可以在这里面进行统一的异常处理。
二、spring cloud zuul的使用
1.zuul的路由:首先要将zuul注册进eureka中,当调用一个服务的时候,zuul会拿着这个服务的服务名去eureka中寻找该服务的实例,如果只有一个服务实例就直接调用,如果有多个服务实例,就会根据负载均衡策略选择一个服务实例进行调用。
(1)添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix