Spring Cloud Netflix 网关路由— Zuul 网关路由配置

在Zuul入门案例一篇我们讲述了Zuul简单用法,默认情况下通过网关的请求默认路径为http://ip:port/serviceId/**,除此之外Zuul还提供了自定义路由配置。Zuul通过zuul.routes进行配置路由转发规则。如下是一个简单的路由配置。

zuul:
  routes:
    hystrixservice: #路由名称
      path: /hyservcie/** #路由路径
      serviceId: hystrix-consume #服务Id

如上配置,我们添加完配置之后就可以通过定义的path路径访问,访问的地址可以为http://ip:port/hyservcie/hello/pharos,也可以返回hello,pharos的字符串。除了上面的写法还有一下几种简写,但是为了可读性不建议使用,简写路由配置如下:

zuul:
  routes:
    hystrix-consume: /hyservice/** #serviceId:+ path配置
#甚至可以简写为下面的配置:下面的配置其实就是Zuul的默认配置
#使用http://ip:port/serviceId/*8的访问方式方式
zuul:
  routes:
    hystrix-consume:

除了能使用ServiceId路由到服务之外,Zuul还支持URl配置路由策略,该配置只需要将serviceId属性替换为url即可,该类型配置如下:

zuul:
  routes:
    hystrix-consume:
      path: /hyservcie/** #路由路径
      url: http://127.0.0.1:9091 #路由到的URL

默认情况下,Zuul会使用Eureka中集成的负载均衡,如果想要使用Ribbon中的功能,则需要禁用调Eureka中的功能,并且配置多实例(上面的URL仅仅只能配置一个实例),采用Ribbon才可以配置多实例,配置规则如下:

zuul:
  routes:
    hystrix-consume:
      path: /hyservcie/** #路由路径
      serviceId: hystrix-consume #配置实例Id
ribbon:
  eureka:
    enabled: false  #eureka配置为false
  hystrix-consume: #配置实例Id
    ribbon: #Ribbon
      NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList #配置服务列表类
      NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  #配置负载均衡规则
      listOfServers: localhost:9091, localhost:9092 #配置服务列表

除此之外Zuul还支持跳转,路由前缀,服务屏蔽,路径屏蔽、敏感头信息、重定向。重试机制等配置,这个不再一一讲述,下面是一个综合的例子展示这些配置的用法:

zuul:
  routes:
    hyconsume: #路由名称
      path: /hyservcie/** #路由路径
      serviceId: hystrix-consume #配置实例Id
      sensitive-headers: cookie #忽略掉敏感头 cookie
    hyconsume2:
      path: /hyservice2/**  #访问/hyservices/**的服务会跳转到/client接口处理
      url: forward:/client
  prefix: /consume #路由前缀 访问时需要加该前缀 http://ip:port/consume/hyservice/**
  ignored-services: hystrix-consume #被忽略的服务不能通过http://ip:port/serviceId/path/*8访问,屏蔽多个以逗号分隔
  ignored-patterns:  /**/test/** #忽略该接口屏蔽该接口,如果屏蔽多个以逗号分隔
  ignored-headers: accept-language #用户全局配置忽略的头信息
  retryable: true #重试策略
  add-host-header: true #重定向

如上是Zuul网关路由的基本配置,如果有多个实例配置为一个路径时,它会路由到最后一个配置的实例。不论使用哪种配置方式,我们都需要为每个路由规则定义匹配表达式, 也就是上面所说的path参数。 在Zuul中,路由匹配的路径表达式采用了Ant风格定义。它一共有下面这三种通配符。

通配符

说明

?

匹配任意单个字符 /users/? 匹配/users/a

*

匹配任意数量的字符 /users/* 匹配/users/aaa,它不支持多级目录

**

匹配任意数量的字符,支持多级目录 /users/** 匹配/users/aaa 以及/users/aaa/aaa

 了解之后可以编写一个基本的网关路由服务器,Zuul作为一个网关API,除了提供路由的功能,还提供了包含了过滤器组件,路由和过滤器组件是Zuul的两大核心组件,下一篇我们会介绍网关路由的核心原理,以及过滤器的使用与原理。学习完原理之后能姮好的使用Zuul网关。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值