资阳市建设局网站,如何构建一个电子商务网站,简单响应式网站,改网站描述3.Gateway服务网关
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目#xff0c;该项目是基于 Spring 5.0#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…3.Gateway服务网关
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目该项目是基于 Spring 5.0Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
3.1.为什么需要网关
Gateway网关是我们服务的守门神所有微服务的统一入口。
网关的核心功能特性
请求路由权限控制限流
架构图
权限控制网关作为微服务入口需要校验用户是是否有请求资格如果没有则进行拦截。
路由和负载均衡一切请求都必须先经过gateway但网关不处理业务而是根据某种规则把请求转发到某个微服务这个过程叫做路由。当然路由的目标服务有多个时还需要做负载均衡。
限流当请求流量过高时在网关中按照下流的微服务能够接受的速度来放行请求避免服务压力过大。
在SpringCloud中网关的实现包括两种
gatewayzuul
Zuul是基于Servlet的实现属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux属于响应式编程的实现具备更好的性能。
3.2.gateway快速入门
下面我们就演示下网关的基本路由功能。基本步骤如下
创建SpringBoot工程gateway引入网关依赖编写启动类编写基础配置和路由规则启动网关服务进行测试
1创建gateway服务引入依赖
引入依赖
!--网关--
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId
/dependency
!--nacos服务发现依赖--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2编写启动类
package cn.itcast.gateway;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}3编写基础配置和路由规则
创建application.yml文件内容如下
server:port: 10010 # 网关端口
spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes: # 网关路由配置- id: user-service # 路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址uri: lb://userservice # 路由的目标地址 lb就是负载均衡后面跟服务名称predicates: # 路由断言也就是判断请求是否符合路由规则的条件- Path/user/** # 这个是按照路径匹配只要以/user/开头就符合要求我们将符合Path 规则的一切请求都代理到 uri参数指定的地址。
本例中我们将 /user/**开头的请求代理到lb://userservicelb是负载均衡根据服务名拉取服务列表实现负载均衡。
4重启测试
重启网关访问http://localhost:10010/user/1时符合/user/**规则请求转发到urihttp://userservice/user/1得到了结果 5网关路由的流程图
整个访问的流程如下 总结
网关搭建步骤 创建项目引入nacos服务发现和gateway依赖 配置application.yml包括服务基本信息、nacos地址、路由
路由配置包括 路由id路由的唯一标示 路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡 路由断言predicates判断路由的规则 路由过滤器filters对请求或响应做处理