Spring Cloud微服务【Finchley.RELEASE版本】(八)zuul网关
介绍
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
实践
本篇延续此前的注册中心,消费端,服务提供端,我们用一个新的spring boot项目来实现zuul网关。
依赖引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
启动类注解添加
@EnableZuulProxy
@SpringCloudApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
将zuul注册到注册中心
spring.application.name=api-gateway
server.port=2101
# 连接注册中心的服务地址
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
测试
我们先依次启动注册中心,两个服务提供端和zuul,查看注册中心:
加上zuul网关(api-gate)一共有3个服务。
zuul不仅提供了负载均衡,还有权限控制路由等功能,高级的功能后续会讨论,现在我们访问具体的服务可以通过网关来实现:
比如要访问eureka-client的/clientTest服务,可以通过:
http://localhost:2101/eureka-client/clientTest
访问eureka-consumer-hystrix的/consumer服务,则是:
http://localhost:2101/eureka-consumer-hystrix/consumer
zuul网关成功生效!