1 面向服务的路由配置
微服务一般是由几十、上百个服务组成,对于一个URL请求,最终会确认一个服务实例进行处理。如果对每个服务实例手动指定一个唯一访问地址,然后根据URL去手动实现请求匹配,这样做显然就不合理。Zuul支持与Eureka整合开发,根据ServiceID自动的从注册中心中获取服务地址并转发请求,这样做的好处不仅可以通过单个端点来访问应用的所有服务,而且在添加或移除服务实例的时候不用修改Zuul的路由配置。
- 添加Eureka客户端依赖(zuul工程)
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
- 开启Eureka客户端发现功能
@SpringBootApplication
// 开启zuul网关
@EnableZuulProxy
// eureka的服务发现
@EnableDiscoveryClient
public class ZuulServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulServerApplication.class, args);
}
}
- 添加Eureka配置,获取服务信息
server:
port: 8080
spring:
application:
name: api-zuul-server #服务名称
# 路由配置
zuul:
routes:
product-server: # 路由id,随便写
path: /product-service/** #映射路径 localhost:8080/product-service/sxxxx
#url: http://localhost:9002 #映射路径对应的实际微服务地址url
serviceId: service-product #配置转发的微服务的服务名称
eureka:
client:
service-url :
defaultZone: http://localhost:9000/eureka/
instance:
prefer-ip-address: true # 使用 ip 地址注册
- 重启 zuul 工程
2 简化路由配置
- zuul 工程
2.1 默认路由
在使用Zuul的过程中,上面讲述的规则已经大大的简化了配置项。但是当服务较多时,配置也是比较繁琐的。因此Zuul就指定了默认的路由规则:
- 默认情况下,一切服务的映射路径就是服务名本身。
- 例如服务名为: shop-service-product ,则默认的映射路径就是: /shop-serviceproduct/**