当前位置: 首页 > news >正文

花木企业网站源码wordpress 仪表板主题

花木企业网站源码,wordpress 仪表板主题,33ee紧急页面访问升级,网站提交收录软件前言 本文主要对Spring Cloud Gateway进行简单的概念介绍#xff0c;并通过多模块编程的方式进行一个简单的实操。 文章目录 前言1 什么是网关#xff08;概念#xff09;2 微服务中的网关2.1 问题12.2 问题2 3 网关作用4 Spring Cloud Gateway组成5 Spring Cloud Gateway基…前言 本文主要对Spring Cloud Gateway进行简单的概念介绍并通过多模块编程的方式进行一个简单的实操。 文章目录 前言1 什么是网关概念2 微服务中的网关2.1 问题12.2 问题2 3 网关作用4 Spring Cloud Gateway组成5 Spring Cloud Gateway基础使用5.1 父类pom.xml依赖5.2子模块Userservice5.3 子模块GatewayService5.4 实操15.5 实操25.6 注意事项 6 断言类型 1 什么是网关概念 网关是一种网络设备它用于连接不同网络之间的数据传输。它是在网络层级上工作的能够将数据从一个网络传输到另一个网络。网关可以是物理设备如路由器也可以是软件程序如网络服务器。 2 微服务中的网关 在微服务架构中网关的作用主要是用来作为客户端到内部服务端之间中间转发人因为在微服务架构中后端服务基本上会被放在私网中不对外开放地址的那么客户端身在远方不跟后端服务在一个私网中是无法通过具体地址访问到后端服务的。 那么这个时候就需要一个中间人作为连接二者的点而这个中间人在私网中唯独他的IP对外开放服务器多的情况下这个中间人还需要额外做一份请求分发的工作这个中间人我们专业一点就叫做网关 2.1 问题1 问这个时候可能会有朋友会问客户端和服务端沟通不是可以通过OpenFeignLoadBalancer吗 答现在的项目前后端分离项目比较多我们后端是JavaOpenFeignLoadBalancer的使用需要Jar包但是我们前端Vue、三剑客语言并不能适配Jar包所以就需要第三个人作为中间人衔接前端客户端和后端服务端而OpenFeignLoadBalancer则作为后端中的通信使用或者你可以理解访问过程为:前端客户端-网关-后端客户端-后端服务端 2.2 问题2 问为什么不用Nginx这种反向代理作为中间人 答在微服务架构中你要部署很多个后端且独立存在这就意味着我前脚在这台服务器上刚登录认证过后脚我的请求到另一台服务器就被认为是未认证请求这不就成了我的每一次请求都被提示未登录认证。而我们的网关可以统一认证处理就实现一次登录各服务端生效的效果当然还不止这些效果接下来便会逐一介绍。 3 网关作用 路由功能网关可以根据目标地址不同选择最佳路径将请求从源地址发送到目标地址。安全控制统一鉴权网关可以设置安全策略对数据包进行检查和过滤可以验证和授权网络数据包并阻止未授权数据包访问。防火墙是一种常用的网关设备用于保护和过滤网络免收恶意攻击和未经授权的访问协议转换不同网络使用不同的通信协议网关可以进行协议转换使不同设备之间可以互相访问例如HTTP-HTTPS网络地址转换NAT网络地址转换将内部私有IP地址转换为外部网络公共IP地址。 总而言之网关是一个关键的网络设备它起到连接不同网络之间的桥梁作用使得数据能够在不同网络之间传输和交换。 4 Spring Cloud Gateway组成 路由route定义了请求应该被发往到哪个的服务端的目标地址路由由路由ID、断言、目标URI、过滤器组成。通过配置多个路由器可以实现不同请求的路由规则。断言Predicate用于匹配请求的条件请求匹配断言条件则会被路由到对应的目标地址。断言可以基于请求的路径、请求头、请求参数等信息进行匹配。过滤器Filter用于路由请求前后统一处理如添加请求头、修改请求体等。 5 Spring Cloud Gateway基础使用 下面我们通过多模块编程的方式演示Spring Cloud Gateway的使用跳过创建过程直接展示结果 5.1 父类pom.xml依赖 ?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/modelVersiongroupIdcom.example/groupIdartifactIdSpring-Cloud-Gateway-Demo/artifactIdversion0.0.1-SNAPSHOT/versionnameSpring-Cloud-Gateway-Demo/namedescriptionSpring-Cloud-Gateway-Demo/descriptionpackagingpom/packagingmodulesmoduleUserService/modulemoduleGatewayService/module/modulespropertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version3.0.2/spring-boot.versionspring-cloud.version2022.0.0/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build /project5.2子模块Userservice ?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/modelVersiongroupIdcom.example/groupIdartifactIdUserService/artifactIdversion0.0.1-SNAPSHOT/versionnameUserService/namedescriptionUserService/descriptionparentgroupIdcom.example/groupIdartifactIdSpring-Cloud-Gateway-Demo/artifactIdversion0.0.1-SNAPSHOT/version/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.example.userservice.UserServiceApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build /project application.yml server:port: 10086controller代码 RestController RequestMapping(/user) public class UserControler {RequestMapping(/getrandom)public String getRandom(){return userservice:10086-new Random().nextInt(1000);} } 5.3 子模块GatewayService Spring Cloud Gateway分为两个步骤 导入Gateway依赖pom文件设置网关规则yml文件 ?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/modelVersiongroupIdcom.example/groupIdartifactIdGatewayService/artifactIdversion0.0.1-SNAPSHOT/versionnameGatewayService/namedescriptionGatewayService/descriptionparentgroupIdcom.example/groupIdartifactIdSpring-Cloud-Gateway-Demo/artifactIdversion0.0.1-SNAPSHOT/version/parentdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.example.gatewayservice.GatewayServiceApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/buildrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories/project application.yml server:port: 8080spring:cloud:gateway:routes:- id: userservice #服务IDuri: http://localhost:10086 #目的地址路由predicates: #断言- Path/user/** #断言匹配规则5.4 实操1 启动UserService和启动GatewayService 我们先正常访问UserService中的路由http://localhost:10086/user/getrandom 结果 现在已经确认UserService是正常的那么我们接下来就看看通过网关http://localhost:8080/user/getrandom能不能访问到它 从中可以发现我们的Gateway可以帮我们去完成请求转发到适合的服务端上。 5.5 实操2 如果是对于多组的路由该如何编写GatewayService的application.yml呢编写时又该注意什么 以下面为例进行说明 server:port: 8080spring:cloud:gateway:routes:- id: userserviceuri: http://localhost:10086 #路由predicates:- Path/user/**, /update/**- id: adminserviceuri: http://localhost:9000predicates:- Path/admin/**照虎画猫我们在创建adminservice子模块与/update/xxx服务 UpdateController类 RestController RequestMapping(/update) public class UpdateController {RequestMapping(/op)public String updateOrInsert(){return updateOrInsert;} }AdminService.AdminController RestController RequestMapping(/admin) public class AdminController {RequestMapping(/getroles)public String getRoles(){return AdminService:9000-admin;} }下面就进行访问测试网关能否正确应对多个请求的分发 http://localhost:8080/update/op √ http://localhost:8080/admin/getroles√ 补充 上面我们介绍了application.yml文件中对于数组的写法而对于application.propeties编写方式如下 server.port9000 spring.cloud.gateway.routes[0].iduserservice spring.cloud.gateway.routes[0].urihttp://localhost:10086 spring.cloud.gateway.routes[0].predicates[0]Path/user/** spring.cloud.gateway.routes[0].predicates[1]Path/update/** spring.cloud.gateway.routes[1].idadminservice spring.cloud.gateway.routes[1].urihttp://localhost:9000 spring.cloud.gateway.routes[1].predicates[0]Path/admin/**5.6 注意事项 细心的朋友可能已经发现了在多模块项目中我的SpringWeb依赖没有放到父模块pom中而是放在子模块。 这是因为父类中添加SpringWeb依赖会导致全子类都使用而我们的Spring Cloud Gateway是基于Reactive进行开发的不能使用简单的Spring Web依赖需要使用Spring Reactive Web依赖但是Spring Cloud Gateway底层中已经包含了这个依赖所以我们没有在GatewayService中导入Spring Reactive Web在其他子模块中导入Spring web依赖的原因。 假如我们错误的将Spring Web适用到Spring Cloud Gateway模块中也会有error抛出示例如下 错误中也告诉我们解决方式要么在gateway中使用Spring Reactive Web要么吧Spring Web移除 6 断言类型 Spring Cloud Gateway支持的断言类型目前有12种包含以下这些 根据时间匹配包含3中类型 a. After请求在指定时间之后才匹配 b. Before: 请求在指定时间之前才匹配 c. Between: 请求在指定时间中才匹配cookie配置请求中的Cookie值Header配置请求中的Header值Host匹配请求头中的Host值Method匹配请求头中的Method的值Path: 匹配请求路径Query 匹配请求参数RemoteAddr匹配请求的IP地址支持IPV4和IPV6Weight根据权重来分发请求权重根据Group来计算 10.XForwardRemoteAddr根据X-ForWord-For匹配 官方参考文档 https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories 其中Cookie和Header方式的匹配需要配合正则表达式来使用 正则表达式 \w匹配一个或多个字母、数字、下划线字符\s匹配一个或多个空白字符 (包括空格、制表符、换行符等。.*匹配任意字符(除了换行符) 零次或多次.匹配除了换行符之外的任意字符一次或多次。[abc]匹配字符集中的任意一个字符例如 [abc] 可以匹配a、b或c。[^abc]匹配除了字符集中的任意字符之外的任意字符例如[^abc] 可以匹配除了a、b和c之外的任意字符^匹配字符串的开始位置$匹配字符串的结束位置 9.|表示或”的意思用于匹配多个模式中的任意一个10.(): 用10.()于分组可以将一组字符作为一个整体进行匹配。 END 希望对你有所帮助
http://www.tj-hxxt.cn/news/224617.html

相关文章:

  • 网站开发的最后5个阶段网站建设依据什么法律
  • 海宁市规划建设局网站做招聘网站需要什么
  • 郑州快速建站公司仿素材网站源码
  • 上海的设计网站单位网站中文域名到期续费
  • 深圳网站推广优如何重建网站
  • 青海网页设计与网站建设网站建设创意文案
  • 做外贸网站案例宝安网站建设方案外包
  • 唐山做网站的电话吉林城市建设学校网站
  • ip做网站需要过白名单吗上海网站建设与设计公司好
  • 展示型网站模板代码百度seo官网
  • 旅游社网站建设规划书网站建设开场白
  • 镇江网站建设方式优化网站后台添加东西不能粘贴
  • 衡水需要做网站的公司开网站做彩票赚钱吗
  • 杭州网站建站公司自己做网站卖产品怎么样
  • 网站怎么用html网页设计代码作业网站
  • 条件查询 php网站源码建外贸网站有效果吗
  • 台州网站建设服务python编写网页
  • 网站做广告投放 要求做效果评估乐天seo培训中心
  • 企业logo设计网站进一步优化落实
  • 网站公司排行榜北京师范大学学风建设专题网站
  • 网站备案管理办法wordpress学生
  • 中国铁路建设集团公司网站wordpress取消自适应
  • 网站建制作建筑模板做凳子
  • 产品详情页面设计山西搜索引擎优化
  • 深圳华企网站建设落地页制作
  • 外贸网站建设制作滨海做网站的价格
  • 盘锦网站建设公司参考消息今天新闻
  • 深圳网站建设深正互联404源码网html
  • 铜仁网站建设哪家专业网站彩铃怎么做的
  • 平台优化沈阳seo搜索引擎