本文目录:
一. Zuul简介
在之前学习的知识中,我们可以利用Eureka实现服务注册与发现,利用Ribbon实现客户端的负载均衡,利用Hystrix实现容错机制,利用Feign进行声明式调用。而Spring Cloud Zuul可以和以上组件配合使用。作为微服务网关,介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。架构图如下:
二. 使用Zuul作为微服务网关
1.新建一个基于Spring Boot 的Maven工程,pom文件中添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2.在启动类上添加注解@EnableZuulProxy,表示该类是一个Zuul代理类。
/**
* @EnableZuulProxy 这个注解使用Ribbon来定位注册到Eureka中的所有微服务,
* 整合了Hystrix,所有经过Zuul的请求都会经过Hystrix命令中执行。
*/
@SpringBootApplication
@EnableZuulProxy
public class SpringCloudZuulApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudZuulApplication.class, args);
}
}
3.编写配置文件:
spring.application.name=zuul-service
##端口号
server.port=8666
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
eureka.client.instance.prefer-ip-address=true
4.启动Eureka注册中心,(可参考:服务注册与发现 http://blog.csdn.net/u012482647/article/details/78017903)启动Eureka client 。(可参考:负载均衡 http://blog.csdn.net/u012482647/article/details/78018985)
5.在浏览器访问 http://localhost:8666/string-service/hi,出现如下界面,通过上述步骤,成功编写了一个微服务网关,并将zuul注册到了Eureka。
三、 路由配置
3.1、我们只需要通过一组zuul.routes..path与zuul.routes..serviceId参数对的方式配置即可指定微服务的serviceId和对应路径,其中route只是给路由的一个名字,可以起任意名字:
zuul.routes.string-service.path=/string-service/**
zuul.routes.string-service.serviceId=string-service
##实现了对符合/string-service/**规则的请求路径转发到名为string-service的服务实例上去的路由规则。
3.2、同时指定path和URL。
zuul.routes.string-service.url=http://localhost:8000/
zuul.routes.string-service.path=/string-service/**
3.3、自定义指定微服务的访问路径 (效果同2.1一致)。
zuul.routes.string-service=/string-service/**
3.4、忽略指定的微服务。
zuul.ignored-services=pay-service
3.5、忽略所有的微服务,只路由指定的微服务。
zuul.ignored-services='*'
zuul.routes.string-service=/string-service/**
综上所示,一个简单的Zuul示例就完成了。