最近公司在搞springcloud微服务迁移,从原有一个系统按照业务拆分为6个子系统,客户端的调用会变得很复杂导致难以维护。因此就需要微服务网关来解决,通过Zuul来构建微服务网关,所有外部请求都会经过微服务网关。提前学习下,作为迁移前的知识储备。本文主要记录下Zuul的路由配置相关功能;
架构演进后的图:
Zuul简介
首先对Zuul按照网上的概念大概做一个介绍:
- Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。
- Zuul的核心是一系列的过滤器,大致可以完成以下功能:
- 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
- 审查与监控: 在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
- 动态路由: 动态地将请求路由到不同的后端集群。
- 压力测试:逐渐地增加指向集群的流量,以了解性能。
- 负载分配:为每一种负载类型分配对应容量,并弃用超过限定值的请求。
- 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
Zuul的github: https://github.com/netflix/zuul
Netflix如何使用Zuul: https://github.com/netflix/zuul/wiki/How-We-Use-Zuul-At-Netflix
路由配置详解
Zuul
默认可以代理所有注册到Eukeka Server
的微服务. 在我们现实生产环境中可能只想让Zuul代理部分微服务,又或者对URL进行更加精确的控制。
Zuul的路由配置非常灵活、简单,下面我整理了一些场景,结合例子说明一下;
-
自定义指定微服务访问路径。
配置zuul.routes.
指定微服务serviceId = 指定路径即可。例如:zuul: routes: microservice-provider-user: /user/**
这样设置,microservice-provider-user微服务就会被