SpringCloud微服务之服务网关-gateway的使用
前言
springcloud技术栈:
一、服务网关?
在计算机网络中,服务网关是一种连接不同网络的设备或程序。它提供了一个连接不同网络的桥梁,它可以将数据包从一个网络传递到另一个网络。它可以是硬件设备,也可以是软件程序。服务网关则是指在微服务架构中,负责将对外提供的API请求路由到相应的微服务上,并提供负载均衡、服务降级、故障恢复等功能。在实际应用中,Gateway可以使用开源框架如Nginx、Zuul、Kong等来实现。
二、springcloud gateway和zuul的区别
我们最常见的服务网关实现莫过于是springcloud gateway和zuul。而两者的区别是什么呢?
Spring Cloud Netflix Zuul是由Netflix开源的API网关,在微服务架构下,网关作为对外的门户,实现动态路由、监控、授权、安全、调度等功能。Zuul基于servlet 2.5(使用3.x),使用阻塞API。 它不支持任何长连接,如websockets。而Gateway建立在Spring Framework 5,Project Reactor和Spring Boot 2之上,使用非阻塞API。 比较完美地支持异步非阻塞编程,Gateway 中Websockets得到支持,并且它是spring开发,完美集成在spring中,使用起来体验感会更好,本文叙述的是gateway的使用方式。
Springcloud gateway有三大概念:Route(路由)、 Predicate(断言)和Filter(过滤器)。
三、使用步骤
本次配置是gateway微服务的模块配置,在启动和测试本模块之前,需要新建好注册中心模块和服务提供者微服务模块,不清楚的可以查看上几篇文章。
1.Route路由
1.1 pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->