Spring Cloud系列(4):Spring Cloud zuul
spring cloud zuul 动态路由
在上一篇中,我们提到了,在启动了eureka server ,eureka invoker,eureka provider之后,服务注册中心,服务提供者,服务调用者就已经都起来了,可以通过invoker访问到provider的资源。
用户直接操作invoker的接口,但是当服务提供者有很多种的时候,比如一个系统中既有鉴权,又有处理业务的服务invoker的时候,如果用户也是操作对应的服务接口,那么接口不易维护,对代码的侵入也比较大。
zuul是提供动态路由的功能,相当于网关。所有的外部接口请求都是到zuul,由zuul进行路由分配。
创建一个zuul子模块,在pom文件中引入:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
在启动类上添加@EnableZuulProxy注解,指明这是一个路由代理的服务。
@SpringBootApplication
@EnableZuulProxy
public class SpringCloudZuulApplication
{
public static void main( String[] args )
{
SpringApplication.run(SpringCloudZuulApplication.class, args);
}
}
添加application.yml配置文件:
server:
port: 8088
spring:
application:
name: acs-zuul
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
zuul:
routes:
acs-eureka-invoker:
path: /acs/**
service-id: acs-eureka-invoker
ribbon:
eureka:
enabled: false
acs-eureka-invoker:
ribbon:
listOfServers: http://localhost:8086/
指定zuul这个服务的端口为8088,应用名称为acs-zuul,注册到中心服务的地址是:http://localhost:8761/eureka/
zuul.routes.acs-eureka-invoker.path:指明请求路径匹配/acs/**
zuul.routes.acs-eureka-invoker.service-id:指明服务的id
ribbon.eureka.enabled:false 指明不使用ribbon默认的分发策略
acs-eureka-invoker.ribbon.listOfServers 指明可以使用的服务列表
启动后,访问http://localhost:8761/
发现又多了一个acs-zuul服务注册到了服务注册中心。
上一篇文章中,我们知道可以访问http://localhost:8086/acs/hello 查询到服务提供者中返回的“hello”
这里有了zuul,之后,我们暴露给别人只有zuul的端口8088.
我们在这里可以直接访问http://localhost:8088/acs/hello 返回同样的结果
参考:服务网关
上一篇: touch示例程序
推荐阅读