Spring Cloud 之 Zuul 常用配置与基本使用


提示:本人是小白,仅供参考

一、Zuul是什么?

zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用,将所有微服务接口统一聚合,统一对外暴露,结合Ribbon实现负载均衡,可以在Zuul中统一做身份和权限认证,防止非法请求API,可实现流量监控功能,高流量情况下对服务进行降级处理。

二、构建Zuul

1.创建工程

创建SpringBoot项目,选择Eureka Client 和 Zuul依赖

2.配置yml

zuul:
  # 路由规则
  routes:
    # 自定义名称
    eureka-client:
      # 需要路由拦截的请求前缀,支持通配符匹配,不配置默认为/user-server/**
      path: /port/**
      # 微服务spring.application.name
      serviceId: eureka-client
      # 配置该微服务是否支持前缀,false的话访问该微服务就不需要加zuul.prefix配置项的内容
      stripPerfix: false
      # 将请求发送至指定的服务器,不会走ribbon、hystrix,正常请求是走RibbonRoutingFilter,此请求会走SimpleHostRoutingFilter
      url: http://lg2:8886
      # 配置该微服务请求头禁止项,优先级高于全局配置
      sensitive-headers:
        - Cookie
        - Set-Cookie
        - Authorization
        - token
      # 是否启用自定义配置,默认为false,初始化时会根据sensitive-headers的长度来判断,长度大于0则为true
      custom-sensitive-headers: false

    feign-client:
      path: /port/**
      serviceId: feign-client
  # prefix: /api设置全局访问前缀,配置后所有请求前缀都需要加/api
  prefix:
  #是否开启重试
  retryable: false
  # 全局配置请求头禁止传递项,配置此项将回禁止header中的某些属性向下传递,默认为"Cookie","Set-Cookie","Authorization"
  sensitive-headers:
    - Cookie
    - Set-Cookie
    - Authorization
    - token
  host:
    # 最大连接数,默认为200
    max-total-connections: 200
    # 单个路由可以使用的最大连接数,默认为20
    max-per-route-connections: 20
    # http client 从connection pool中获取一个connection的超时时间,默认为-1,不超时
    connection-request-timeout-millis: -1
    # 连接建立的超时时间,默认为2000ms
    connect-timeout-millis: 2000
    # 响应超时时间,默认为10000ms
    socket-timeout-millis: 10000
  # 可配置THREAD(线程池模式), SEMAPHORE(信号量模式),默认为SEMAPHORE
  # 此功能是基于hystrix实现,将请求包装为一个HystrixCommond,hystrix内部自身实现了熔断、隔离等机制
  ribbonIsolationStrategy: SEMAPHORE
  # 可以通过这个配置控制所有服务的信号量,默认为100,这里指的是每个服务都是100不是所有服务加起来为100
  semaphore:
    maxSemaphores: 100
  # 单独配置每个服务的信号量,不配置默认为100
  eureka:
    # 用户自定义一个名称
    user-server:
      # 信号量模式
      semaphore:
        # 最大访问量,默认为全局配置的值也就是100,单独配置的优先级高于全局配置
        # 此配置的源码在AbstractRibbonCommand.getSetter(final String commandKey,ZuulProperties zuulProperties, IClientConfig config)中被使用
        maxSemaphores: 100

3.添加注释

在启动类上添加@EnableEurekaClient 和 @EnableZuulProxy注释
注意:为啥是@EnableZuulProxy,不是@EnableZuulServer
其实是有 @EnableZuulServer 这个注释的,这个是普通版的,而@EnableZuulProxy是增强版
如图:@EnableZuulServer
@EnableZuulServer
如图:@EnableZuulProxy@EnableZuulProxy

4.运行

多次访问 http://lg1:8887/eureka-client/port/get
port: 8883 和 port: 8884交替出现因为它的Ribbon是默认的负载均衡算法(轮询)
多次访问 http://lg1:8887/feign-client/port/get
乱序出现port: 8883 和 port: 8884因为它的Ribbon配置成了Random(随机)

总结

看起来简单,实战难!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值