Zuul —— SpringCloud

Posted 观沧听白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zuul —— SpringCloud相关的知识,希望对你有一定的参考价值。

什么是Zuul?

  Zuul是Netflix开源的微服务网关。

  Zuul可以和Eureka、Ribbon、Hystrix等组件配合使用。

  Zuul的核心是一系列的过滤器,可以完成以下功能。

    身份认证和安全:识别每个资源的验证请求,并拒绝那些与要求不符的请求。

    审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。

    动态路由:动态地将请求路由到不同的后端集群。

    压力测试:逐渐增加指向集群的流量,以了解性能。

    负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。

    静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。

    多区域弹性:跨越AWS Region进行请求路由,意图在实现ELB使用的多样化,以及让系统的边缘更加贴近系统的使用者。

  SpringCloud对Zuul进行了整合和增强。

  目前,Zuul使用的默认HTTP客户端是Apache Http Client,也可以使用RestClient或者okhttp3.0HttpClient。

  如果想要使用RestClient,可以设置 ribbon.restclient.enable=true 

  想要使用okhttp3.0HttpClient,可以设置 ribbon.okhttp.enable=tue

 

初步使用Zuul

编写配置

server:
  port: 10010 #服务端口
spring:
  application:
    name: api-gateway #指定服务名

 

编写引导类

  通过 @EnableZuulProxy 注解开启Zuul功能。

@SpringBootApplication
@EnableZuulProxy // 开启网关功能
public class ItcastZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(ItcastZuulApplication.class, args);
    }
}

 

编写路由规则

  映射规则:

server:
  port: 10010 #服务端口
spring:
  application:
    name: api-gateway #指定服务名
zuul:
  routes:
    service-provider: # 这里是路由id,随意写
      path: /service-provider/** # 这里是映射路径
      url: http://127.0.0.1:8081 # 映射路径对应的实际url地址

 

负载均衡和熔断

  Zuul中默认就已经继承了Ribbon负载均衡和Hystrix熔断机制。但是所有的超时策略都是默认值。

  比如,熔断超时时间只有1s,很容易就被触发了,所以建议手动配置:

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 2000 # 设置hystrix的超时时间为6000ms

 

以上是关于Zuul —— SpringCloud的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud----zuul权限校验接口限流

Springcloud zuul 路由配置规则

springcloud5-服务网关zuul及gateway

springcloud5-服务网关zuul及gateway

springcloud-zuul进阶篇

springcloud2020版本使用zuul和nacos服务发现