springcloud-网关路由-zuul

Zuul简介

Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一系列的过滤器,这些过滤器帮助我们完成以下功能:

  • 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求;
  • 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而为我们带来精确的生产视图;
  • 动态路由:动态地将请求路由到不同的后端集群;
  • 压力测试:逐渐增加指向集群的流量,以了解性能;
  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求;
  • 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群;
  • 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Balancing)使用的多样化;以及让系统的边缘更贴近系统的使用者。

注1:以上介绍来自Zuul官方文档,但其实开源版本的Zuul以上功能一个都没有——开源的Zuul只是几个Jar包而已,以上能力指的应该是Netflix官方自用的Zuul的能力。

注2:Netflix自用的Zuul能力是比较强大的,可使用Groovy编写过滤器,并且可动态加载/卸载、修改规则,而且使用Cassandra作为数据库,然而开源版本这些一个都没有。

注3:Spring Cloud中,Zuul绝大部分功能都是Spring Cloud团队为Zuul开发的。

注4:所以Zuul 2.x的开源进度延后一年,Spring Cloud团队开发了自己的Spring Cloud Gateway,并宣布Spring Cloud不打算支持Zuul 2.x,你还觉得意外吗?

注5:看到这里,很多人可能没有动力学习Zuul了,个人认为还是可以了解一下的,后面讲到Spring Cloud Gateway时,你会发现很多设计理念是相通的。

Spring Cloud对Zuul进行了整合与增强。目前,Zuul使用的默认HTTP客户端是Apache HTTP Client,也可以使用RestClient或者 okhttp3.OkHttpClient 。 如果想要使用RestClient,可以设置 ribbon.restclient.enabled=true ;想要使用 okhttp3.OkHttpClient,可以设置 ribbon.okhttp.enabled=true

创建spring-cloud-zuul模块:

pom.xml:



    4.0.0
    
        com.example
        spring-cloud-wsl
        0.0.1-SNAPSHOT
    
    com.example
    spring-cloud-zuul
    0.0.1-SNAPSHOT
    spring-cloud-zuul
    Demo project for Spring Cloud Zuul

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.projectlombok
            lombok
        
    

配置文件application.yml:

server:
  port: 8884
spring:
  application:
    name: gateway-zuul
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
zuul:
  routes:
    consumer-feign: /feign/**

启动类添加注解

@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }
}

依次启动注册中心、提供者、消费者、网关:


此处我启动了两个provider

浏览器打开输入http://localhost:8884/consumer-feign/feign/test/wangshilin


这是最简单的zuul路由方法,之后我尽量更新更多路由配置规则和fallback等功能演示,敬请期待

你可能感兴趣的:(springcloud-网关路由-zuul)