电子商务网站建设 实验,重庆唐卡装饰口碑怎么样,网址大全123上网丛这里开始苕,在线生成网页工具GateWay工作流程GateWay搭建
核心流程图如下#xff1a; 核心概念#xff1a; 客户端向 Spring Cloud Gateway 发出请求。如果Gateway Handler Mapping确定请求与路由匹配#xff0c;则将其发送到Gateway Web Handler 处理程序。此处理程序通过特定于请求的Fliter链运行请求…GateWay工作流程GateWay搭建
核心流程图如下 核心概念 客户端向 Spring Cloud Gateway 发出请求。如果Gateway Handler Mapping确定请求与路由匹配则将其发送到Gateway Web Handler 处理程序。此处理程序通过特定于请求的Fliter链运行请求。Fliter被虚线分隔的原因是Fliter可以在发送代理请求之前pre和之后post运行逻辑。执行所有pre过滤器逻辑。然后进行代理请求。发出代理请求后将运行“post”过滤器逻辑。
过滤器作用
Filter在pre类型的过滤器可以做参数效验、权限效验、流量监控、日志输出、协议转换等。Filter在post类型的过滤器可以做响应内容、响应头的修改、日志输出、流量监控等这两种类型的过滤器有着非常重要的作用
在GateWay的内部有三个核心点我们先来看一下
核心点 Route路由 路由是构建网关的基础模块它由ID目标URI包括一些列的断言和过滤器组成如果断言为true则匹配该路由 Predicate断言 参考的是Java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容例如请求头或请求参数请求与断言匹配则进行路由 Filter过滤 指的是Spring框架中GateWayFilter的实例使用过滤器可以在请求被路由前或者之后对请求进行修改。 三个核心点连起来 当用户发出请求到达GateWayGateWay会通过一些匹配条件定位到真正的服务节点并在这个转发过程前后进行一些及细化控制。其中Predicate就是我们匹配的条件而Filter可以理解为一个拦截器有了这两个点再加上目标URI就可以实现一个具体的路由了。 总结
GateWay核心的流程就是路由转发执行过滤器链
GateWay搭建 依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.12.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.mashibing/groupIdartifactIdcloud-gateway-9999/artifactIdversion0.0.1-SNAPSHOT/versionnamecloud-gateway-9999/namedescriptioncloud-gateway-9999/descriptionpropertiesjava.version1.8/java.versionspring-cloud-alibaba.version2.2.10-RC1/spring-cloud-alibaba.versionspring-cloud.versionHoxton.SR12/spring-cloud.version/propertiesdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
## 应用名称
#spring.application.namecloud-gateway-9999
## Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
## Nacos认证信息
#spring.cloud.nacos.discovery.usernamenacos
#spring.cloud.nacos.discovery.passwordnacos
## Nacos 服务发现与注册配置其中子属性 server-addr 指定 Nacos 服务器主机和端口
#spring.cloud.nacos.discovery.server-addrmse-6d50f4f0-p.nacos-ans.mse.aliyuncs.com:8848
## 注册到 nacos 的指定 namespace默认为 public
#spring.cloud.nacos.discovery.namespacepublicserver:port: 9999
spring:application:name: cloud-gateway-servicecloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: true #开启注册中心路由功能routes: # 路由- id: nacos-provider #路由ID没有固定要求但是要保证唯一建议配合服务名uri: http://localhost:9001/nacos-provider # 匹配提供服务的路由地址predicates: # 断言- Path/msb/** # 断言路径相匹配进行路由
更改9001的DemoController加上一个入口
package com.paic.test.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/msb)//路由路径
public class IndexController {Value(${server.port})private String port;GetMapping(value /nacos)public String getServerPort(){return this is nacos server: port ;}GetMapping(value /testGateway)public String testGateway(){return this is testGateway test port ;}} 最后测试启动Nacos、9001和9999网关通过网关访问9001的/msb/get接口同时查看Nacos控制台