Zuul 实现路由、鉴权(过滤)、负载均衡、熔断
1.Zuul面向服务的路由配置
- 创建module Zuul-6001
- 配置application.yml将Zuul注册到eureka
server: port: 6001 eureka: instance: instance-id: Zuul-6001 prefer-ip-address: true client: service-url: defaultZone: http://server7001:7001/eureka/,http://server7002:7002/eureka/,http://server7003:7003/eureka/
2. 解决eureka控制台中的Info页面错误问题
info:
app.name: com.xyz.microservice
build.artifactId: $project.artifactId$ #使用maven内置变量project.artifactId和project.version完成对变量的赋值
build.version: $project.version$
spring:
application:
name: microservicezuul
```
- 在主启动类中增加对Zuul开启的配置
@SpringBootApplication @EnableZuulProxy public class Zuul6001 { public static void main(String[] args) { SpringApplication.run(Zuul6001.class, args); } }
- 通过路由访问
http://localhost:6001/microservice-provider/provider/list
3. Zuul路由访问映射规则(application.yml中增加配置)
- 对微服务名称增加对外访问的映射地址
http://loclalhost:6001/mydept/provider/list
- zuul默认的路由规则是:微服务ID+请求路路径的方式
http://localhost:6001/microservice-provider/provider/list
,可以通过设置zuul.ignoredServices="*"
禁止通过zuul对原微服务地址访问,只能通过映射地址访问 - 增加访问前缀
http://localhost:6001/xyz/mydept/provider/list
- 如果路由ID与微服务的serviceId一致的话,可以简化配置
- 配置不希望被API网关路由的URL表达式
- 在API网关上实现本地跳转
zuul:
prefix: /xyz #统一增加访问前缀
ignoredServices: "*" #禁止所有的微服务通过zuul的原路径访问`http://localhost:6001/xyz/microservice-provider/provider/list`
routes:
# microservice-provider: /mydept/** #简化路由配置方法1:如果路由ID与微服务的serviceId一致的话
mydept: #路由ID
path: /mydept/** #zuul对外提供的映射路径
serviceId: microservice-provider #映射对应的微服务名称
myforward: #在API网关上实现本地跳转 `http://localhost:6001/xyz/myforward/provider/list?accessToken=1`
path: /myforward/**
url: forward:/local
# ignored-patterns: /**/list #配置不希望被API网关路由的URL表达式
同类产品比较
产品 | 是否阻塞 | 是否支持长链接 |
---|---|---|
Zuul 1.x | 阻塞API | 不支持长链接,如websockets |
SpringCloud geteway | 非阻塞API | 支持长链接 |
代码示例-github
参考
- Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】-程序猿DD
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】-程序猿DD
- Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】-程序猿DD
- Spring Cloud Zuul中使用Swagger汇总API接口文档-程序猿DD
- Spring Cloud Zuul的fallback优化-程序猿DD
- Spring Cloud实战小贴士:Zuul处理Cookie和重定向-程序猿DD
- Spring Cloud源码分析(四)Zuul:核心过滤器-程序猿DD
- Spring Cloud实战小贴士:Zuul统一异常处理(一)-程序猿DD
- Spring Cloud实战小贴士:Zuul统一异常处理(二)-程序猿DD
- Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】-程序猿DD
- www.cnblogs.com/baizhanshi/…
- springcloud(十):服务网关zuul初级篇-纯洁的微笑
- springcloud(十一):服务网关Zuul高级篇-纯洁的微笑