Spring Cloud学习笔记11-Zuul媒婆外接业务代理高可用(给淫莲们设置规则)

自定义指定微服务的访问路径

配置zuul.routes.指定微服务的serviceId = 指定路径

上图为serviceId

zuul:
  routes:
    providerservice: /user/** #providerservice微服务会被映射到/user/**路径
    consumer: /user/** #consumer微服务会被映射到/user/**路径

忽略指定微服务

zuul:
  ignored-services:
  - consumer
  - providerservice

忽略所有微服务,只路由指定的微服务

zuul:
  ignored-services: '*'
  routes:
    providerservice: /user/** #providerservice微服务会被映射到/user/**路径

指定微服务的serviceId和对应路径

zuul:
  routes:
    myservice: #只是给路由一个名称,可以任意起名
      service-id: providerservice # service-id
      path: /user/** # service-id对应的路径

指定path和URL

zuul:
  routes:
    myservice:
      url: http://localhost:8081/
      path: /user/**

需要注意的是,使用这种方式配置的路由不会作为HystrixCommand执行,同时也不能使用Ribbon来负载均衡多个URL

指定path和URL,并且不破坏Zuul的Hystrix、Ribbon特性。

zuul:
  routes:
    user-route:
      path: /user/**
      service-id: providerservice
ribbon:
  eureka:
    enabled: false
providerservice:
  ribbon:
    listOfServers: localhost:8000,localhost:8001

使用正则表达式指定Zuul的路由匹配规则

@Bean
public PatternServiceRouteMapper serviceRouteMapper() {
  // 调用构造函数PatternServiceRouteMapper(String servicePattern, String routePattern)
  // servicePattern指定微服务的正则
  // routePattern指定路由正则
  return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)", "${version}/${name}");
}

通过这段代码即可实现将诸如microservice-provider-user-v1这个微服务,映射到/v1/microservice-provider-user/**这个路径。

路由前缀

zuul:
  prefix: /api
  strip-prefix: false
  routes:
    microservice-provider-user: /user/**

访问Zuul的/api/microservice-provider-user/1路径,请求将会被转发到microservice-provider-user的/api/1

zuul:
  routes:
    microservice-provider-user: 
      path: /user/**
      strip-prefix: false

访问Zuul的/user/1路径,请求将会被转发到microservice-provider-user的/user/1

忽略某些路径

zuul:
  ignoredPatterns: /**/admin/**   # 忽略所有包含/admin/的路径
  routes:
    microservice-provider-user: /user/**

小技巧

读者如无法掌握Zuul路由的规律,可将com.netflix包的日志级别设为DEBUG。这样,Zuul就会打印转发的具体细节

logging:
  level:
    com.netflix: DEBUG


Zuul的高可用

如果调用的客户端注册到了Eureka Server上,Zuul的高可用非常简单,只需将多个Zuul节点注册到Eureka Server上,就可实现Zuul的高可用。此时,Zuul的高可用与其他微服务的高可用没什么区别。

如果调用的客户端无法注册到Eureka Server上,可以使用负载均衡器来实现Zuul的高可用,例如Nginx、HAProxy、F5等方案保证高可用。

Zuul客户端将请求发送到负载均衡器,负载均衡器将请求转发到其代理的其中一个Zuul节点。这样,就可以实现Zuul的高可用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值