欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Cloud Zuul介绍

程序员文章站 2022-07-14 22:42:02
...

什么是Spring Cloud Zuul?

Zuul是Netflix开源的微服务网关组件,具有动态路由、过滤、压力测试、监控、弹性伸缩和安全等功能。

为什么需要Spring Cloud Zuul?

1.Zuul和Ribbon以及Eureka相结合,可以实现智能路由和负载均衡的功能,可以将流量按照某种策略分发到集群中的多个实例。
2.统一对外暴露接口,外界系统不需要知道微服务系统中各服务之间调用的复杂性,也保护了内部微服务的api接口。
3.可以统一做用户身份认证,权限验证,这样就不用在每个微服务中进行认证了。
4.可以统一实现监控、日志的输出。
5.客户端请求多个微服务时,可以只请求Zuul一次,在Zuul中请求多个微服务,减少客户端和微服务的交互次数。

如何使用Spring Cloud Zuul?

1.新建一个微服务网关的项目spring-cloud-zuul,并且注册到Eureka Server上。
pom中引入依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

创建启动类

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy // 声明这是一个zuul代理
public class SpringCloudZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudZuulApplication.class, args);
    }
}

@EnableZuulProxy声明这是一个Zuul代理,该代理使用Ribbon来定位注册在Eureka Server中的服务,同时,该代理还整合了Hystrix,从而实现了容错,所有经过Zuul的请求都会在Hystrix命令中执行。
配置文件:

server.port=9100
spring.application.name=microservice-gateway
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

配置文件中,定义服务名为microservice-gateway,启动端口为9100,同时,该服务也作为一个Eureka Client向Eureka Server注册。
到此为止,我们的spring-cloud-zuul项目就写完了,启动这个项目,可以发现这个项目注册到了Eureka Server上。
Spring Cloud Zuul介绍

我们还有microservice-provider和microservice-consumer两个服务,microservice-consumer的启动端口是9000,对外暴露了一个接口,访问路径是http://localhost:9000/consumer,以前直接访问这个地址就可以了,但是现在有了microservice-gateway这个服务,我们就可以访问http://localhost:9100/microservice-consumer/consumer,这个地址,这个请求会访问到microservice-gateway上,microservice-gateway再根据中间的这个serviceId找到并访问对应的服务提供者。

访问microservice-gateway的url规则为 http://zuul_host:zuul_port/微服务serviceId/**,默认情况下,Zuul会代理所有注册到Eureka Server的微服务。

Zuul的服务非常关键,一般情况下,所有的请求都会先经过Zuul,在请求到对应的微服务上,所以,需要保证Zuul的高可用。
Zuul也是注册到Eureka Server上的,所以,可以启动多台Zuul实例注册到Eureka Server上形成Zuul集群,来避免单点故障。

参考资料:
1.《Spring Cloud与Docker微服务架构实战》 周立 著
2.《Spring Cloud微服务实战》 翟永超 著
3.《深入理解Spring Cloud与微服务构建》 方志朋 著