zuul是什么?
是spring cloud的一个组件,用于搭建网关服务,可以说是进入系统的唯一节点,能够实现服务的转发。
为什么要使用spring cloud zuul?
Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器,它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。使用Zuul可以作为资源的统一访问入口,同时也可以在网关做一些权限校验等类似的功能。
在微服务架构中,随着服务的越来越多,服务之间的相互调用就会很复杂,我们可以统一将请求全部丢给网关,然后结合Eureka,自动维护服务信息,减少手工配置,网关接收到请求后,从注册中心(Eureka)获取可用服务,继而去访问目标服务。
怎么使用zuul?
使用zuul要结合Eureka,在搭建好Eureka注册中心和Eureka客户端的前提下,搭建zuul服务
1》引入依赖:
<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>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2》在服务的启动类上添加@EnableZuulProxy注解(spring boot项目)
@EnableZuulProxy
@SpringCloudApplication
public class ScheduleCenterBootstrap {
public static void main(String[] args) {
SpringApplication.run(ScheduleCenterBootstrap.class, args);
}
}
3》配置信息:
#zuul配置
server:
port: 8030
zuul:
routes:
emos-user-center:
path: /it/**
serviceId: emos-user-center #访问时跳转的服务名 这里的服务名需要在Eureka注册中心注册过的服务,即能在Eureka Server中能找到的服务名
# url: http://www.baidu.com/ 也可以跳转到指定的服务路径,这里的配置可以让http://localhost:8030/it/**服务跳转到百度的首页
retryable: true #打开zuul重试配置 需要依赖spring的retry,所以需要引入retry的jar包
eureka:
client:
service-url:
defaultZone: http://user:password@localhost:8020/eureka
4》启动zuul网关服务,输入访问路径,即可跳转到相应的服务
例如:输入http://localhost:8030/it/user/testZuul实际访问的是跳转的 http://localhost:8020/user/testZuul接口,这就实现了在网关中服务的转发功能。
浏览器请求8010服务testZuul接口返回结果如下:
调用8030的zuul服务的http://localhost:8030/it/user/testZuul返回结果如下:
由此说明,zuul实现了服务的转发。
注:8020服务是Eureka注册中心,8030是zuul 网关服务,8010是目标服务