09 zuul学习

路由网关Spring Cloud Zuul

Zuul的作用

  1. 结合Ribbon和Eureka实现智能路由和负载均衡功能,Zuul能够将请求流量按某种策略分发到集群状态的多个服务实例;
  2. 聚合服务的API接口,统一对外暴露服务;
  3. 网关服务可以作为用户认证和权限认证中心,对服务器起到保护作用;
  4. 实现监控功能,实时日志输出,对请求进行记录;
  5. 对流量进行监控,在高流量的情况下,对服务进行降级;
  6. 将API接口从内部服务分离,方便测试。

 

Zuul的工作原理

zuul通过自定义的ZuulServlet对请求进行控制,核心为一系列的过滤器;

 

过滤器主要分为

PRE过滤器:请求到具体路由之前执行,主要用于安全验证

ROUTING过滤器:请求路由到具体的服务,默认情况下使用http协议请求

POST过滤器:请求已被路由到服务后执行,一般用于收集统计信息,指标和将响应传输到客户端

ERROR过滤器:当请求过程中发生错误时执行

 

过滤器之间不能直接相互通讯,通过RequestContext对象来共享数据,每个请求都会创建一个RequestContext对象

 

具体体现在ZuulServlet代码中
 
  

当请求发起进入Zuul网关的时,先经过PRE filter进行安全验证,然后交给ROUTING filter进行业务处理,再交由POST filter进行日志记录相关操作,中间发送错误就进入ERROR filter的逻辑。

 

应用

场景:通过网关服务访问其他服务

  1. 网关服务配置
  1. 添加jar包依赖

 

<dependency>

    <groupId>org.springframework.cloudgroupId>

    <artifactId>spring-cloud-starter-eurekaartifactId>

  dependency>

  <dependency>

    <groupId>org.springframework.cloudgroupId>

    <artifactId>spring-cloud-starter-zuulartifactId>

  dependency>

  <dependency>

    <groupId>org.springframework.bootgroupId>

    <artifactId>spring-boot-starter-webartifactId>

  dependency>

  <dependency>

 

  1. 启动类开通zuul功能

09 zuul学习_第1张图片

  1. 配置路径映射

09 zuul学习_第2张图片

  1. 启动服务,服务启动成功出现在eureka 的注册列表上

09 zuul学习_第3张图片

  1. 通过http://localhost:5000/defaultapi/hi?name=test访问接口,可以看到网关交替调用两个eureka-client服务

09 zuul学习_第4张图片

zuul实现熔断器

实现接口ZuulFallbackProvider即可

09 zuul学习_第5张图片

访问http://localhost:5000/V1/feignapi/hi?name=test

09 zuul学习_第6张图片

zuul中使用过滤器

集成类ZuulFilter

09 zuul学习_第7张图片

其中过滤逻辑为:请求头中需要包含token字段

 

访问路径http://localhost:5000/V1/defaultapi/hi?name=test报错,没有权限访问

请求头中包含token字段后可以正常访问

09 zuul学习_第8张图片

你可能感兴趣的:(微服务,归纳笔记,读书笔记)