spring-cloud-Zuul学习(一)--典型配置【重新定义spring cloud实践】

时间:2019-04-15
本文章向大家介绍spring-cloud-Zuul学习(一)--典型配置【重新定义spring cloud实践】,主要包括spring-cloud-Zuul学习(一)--典型配置【重新定义spring cloud实践】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • 引言

上一节是一个最基本的zuul网关实例,它是整个spring-cloud生态里面“路由-服务”的一个缩影,后续也就是锦上添花。这节主要讲述zuul的一些基本典型配置,包括路由与一些增强配置。


  • 路由配置

zuul作为微服务的“路由器”,有很多的路由功能:

  • 路由配置简化与规则

前面单实例serviceId映射:

zuul:
  routes:
    client-a:
      path: /client/**
      serviceId: client-a

是从/client/**到client-a服务的映射规则,其实还有其他的方式配置:

zuul:
  routes:
    client-a: /client/**
View Code

还有:

1 zuul:
2   routes:
3     client-a: 

这种情况会默认添加规则/client-a/**,相当于:

1 zuul:
2   routes:
3     client-a: 
4         path: /client-a/**
5         serviceId: client-a
View Code
  • 单实例url映射

除了写服务名,还可以写物理地址,将serviceId替换成url即可:

1 zuul:
2   routes:
3     client-a:
4       path: /client/**
5       url: http:localhost:7070 #client-a的地址
View Code
  • 多实例路由

在默认情况下,Zuul会使用Eureka中集成的基本负载均衡功能(策略好像是随机),如果想要使用Ribbon的负载均衡功能,就需要指定一个serviceId,而且需要禁用Ribbon使用Eureka,在E版之后新增了负载均衡策略的配置:

 1 spring:
 2   application:
 3     name: zuul-server
 4 server:
 5   port: 5555
 6 
 7 #---------其他路由写法
 8 zuul:
 9   routes:
10     client-a: /client/**
11 
12 client-a:
13   ribbon:
14     NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
15     listOfServers: http://localhost:7070,http://localhost:7071 #ribbon脱离eureka的使用,这里指定源服务列表
16     NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #声明策略模式为随机
17   eager-load:
18       clients:
19       enabled: #使用配置的方式对特定的源服务进行策略约束【规则:clientName.ribbon.*】
20 ribbon:
21   eureka:
22     enabled: false #禁用eureka
View Code

  • 路由通配符规则
规则 释义 示例
/** 匹配任意数量的路径与字符

client/add,/client/student/add,

/client/a/b

/* 匹配任意数量的字符 /client/add,/client/mul
/? 匹配单个字符 /client/a,/client/b