Spring Cloud Zuul介绍

什么是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上。
这里写图片描述

我们还有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与微服务构建》 方志朋 著

猜你喜欢

转载自blog.csdn.net/chayangdz/article/details/81533659