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

网站云模板网站开发相关会议

网站云模板,网站开发相关会议,网站开发过程阶段,宣城公司做网站目录 一、简介 二、为什么需要网关 二、gateway快速入门 1. 创建gateway服务#xff0c;引入依赖 2. 编写启动类 3. 编写基础配置和路由规则 4. 重启测试 5. 网关路由的流程图 6. 总结 三、断言工厂 四、过滤器工厂 1. 路由过滤器的种类 2. 请求头过滤器 3. 默认…目录 一、简介 二、为什么需要网关 二、gateway快速入门 1. 创建gateway服务引入依赖 2. 编写启动类 3. 编写基础配置和路由规则 4. 重启测试 5. 网关路由的流程图 6. 总结 三、断言工厂 四、过滤器工厂 1. 路由过滤器的种类 2. 请求头过滤器 3. 默认过滤器 4. 总结 五、全局过滤器 1. 全局过滤器作用 2. 自定义全局过滤器 3. 过滤器执行顺序 六、跨域问题 1. 什么是跨域问题 2. 模拟跨域问题 3. 解决跨域问题 七、微服务目前知识梳理 一、简介 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目该项目是基于 Spring 5.0 Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关 它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 二、为什么需要网关 Gateway网关是我们服务的守门神所有微服务的统一入口。 网关的核心功能特性 请求路由权限控制限流 架构图 权限控制网关作为微服务入口需要校验用户是是否有请求资格如果没有则进行拦截。 路由和负载均衡一切请求都必须先经过gateway但网关不处理业务而是根据某种规则把请求转发到某个微 服务这个过程叫做路由。当然路由的目标服务有多个时还需要做负载均衡。 限流当请求流量过高时在网关中按照下流的微服务能够接受的速度来放行请求避免服务压力过大。 在SpringCloud中网关的实现包括两种 gatewayzuul Zuul是基于Servlet的实现属于阻塞式编程。 而SpringCloudGateway则是基于Spring5中提供的WebFlux属于响应式编程的实现具备更好的性能。 二、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 com.cloud.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://userservice lb是负载均衡根据服务名拉取服务列表实 现负载均衡。 4. 重启测试 重启网关访问 http://localhost:10010/user/1 时 符合 /user/** 规则请求转发到urihttp://userservice/user/1得到了结果 5. 网关路由的流程图 整个访问的流程如下 6. 总结 网关搭建步骤 创建项目引入nacos服务发现和gateway依赖配置application.yml包括服务基本信息、nacos地址、路由 路由配置包括 路由id路由的唯一标示路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡路由断言predicates判断路由的规则路由过滤器filters对请求或响应做处理 接下来就重点来学习路由断言和路由过滤器的详细知识 三、断言工厂 我们在配置文件中写的断言规则只是字符串 这些字符串会被Predicate Factory读取并处理转变为路由判断的条件 例如Path/user/**是按照路径匹配这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory 类来处理的像这样的断言工厂在SpringCloudGateway还有十几个: 名称 说明 示例 After 是某个时间点后的请求 - After2037-01-20T17:42:47.789-07:00[America/Denver] Before 是某个时间点之前的请求 - Before2031-04-13T15:14:47.43308:00[Asia/Shanghai] Between 是某两个时间点之前的请求 - Between2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver] Cookie 请求必须包含某些cookie - Cookiechocolate, ch.p Header 请求必须包含某些header - HeaderX-Request-Id, \d Host 请求必须是访问某个host域名 - Host.somehost.org,.anotherhost.org Method 请求方式必须是指定方式 - MethodGET,POST Path 请求路径必须符合指定规则 - Path/red/{segment},/blue/** Query 请求参数必须包含指定参数 - Queryname, Jack或者- Queryname RemoteAddr 请求者的ip必须是指定范围 - RemoteAddr192.168.1.1/24 Weight 权重处理 我们只需要掌握Path这种路由工程就可以了。 四、过滤器工厂 GatewayFilter是网关中提供的一种过滤器可以对进入网关的请求和微服务返回的响应做处理 1. 路由过滤器的种类 Spring提供了31种不同的路由过滤器工厂。例如 名称 说明 AddRequestHeader 给当前请求添加一个请求头 RemoveRequestHeader 移除请求中的一个请求头 AddResponseHeader 给响应结果中添加一个响应头 RemoveResponseHeader 从响应结果中移除有一个响应头 RequestRateLimiter 限制请求的流量 2. 请求头过滤器 下面我们以AddRequestHeader 为例来讲解。 需求给所有进入userservice的请求添加一个请求头Truthitcast is freaking awesome! 只需要修改gateway服务的application.yml文件添加路由过滤即可 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/** filters: # 过滤器- AddRequestHeaderTruth, Itcast is freaking awesome! # 添加请求头 当前过滤器写在userservice路由下因此仅仅对访问userservice的请求有效。 3. 默认过滤器 如果要对所有的路由都生效则可以将过滤器工厂写到default下。格式如下 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/**default-filters: # 默认过滤项- AddRequestHeaderTruth, Itcast is freaking awesome! 4. 总结 过滤器的作用是什么 ① 对路由的请求或响应做加工处理比如添加请求头 ② 配置在路由下的过滤器只对当前路由的请求生效 defaultFilters的作用是什么 ① 对所有路由都生效的过滤器 五、全局过滤器 上一节学习的过滤器网关提供了31种但每一种过滤器的作用都是固定的。 如果我们希望拦截请求做自己的业务逻辑则没办法实现。 1. 全局过滤器作用 全局过滤器的作用也是处理一切进入网关的请求和微服务响应与GatewayFilter的作用一样。 区别在于GatewayFilter通过配置定义处理逻辑是固定的而GlobalFilter的逻辑需要自己写代码实现。 定义方式是实现GlobalFilter接口。 public interface GlobalFilter {/*** 处理当前请求有必要的话通过{link GatewayFilterChain}将请求交给下一个过滤器处理** param exchange 请求上下文里面可以获取Request、Response等信息* param chain 用来把请求委托给下一个过滤器 * return {code MonoVoid} 返回标示当前过滤器业务结束*/MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain); }在filter中编写自定义逻辑可以实现下列功能 登录状态判断权限校验请求限流等 2. 自定义全局过滤器 需求定义全局过滤器拦截请求判断请求的参数是否满足下面条件 参数中是否有authorizationauthorization参数值是否为admin 如果同时满足则放行否则拦截 实现 在gateway中定义一个过滤器 package com.cloud.gateway.filters;import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;Order(-1) Component public class AuthorizeFilter implements GlobalFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数MultiValueMapString, String params exchange.getRequest().getQueryParams();// 2.获取authorization参数String auth params.getFirst(authorization);// 3.校验if (admin.equals(auth)) {// 放行return chain.filter(exchange);}// 4.拦截// 4.1.禁止访问设置状态码exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);// 4.2.结束处理return exchange.getResponse().setComplete();} } 3. 过滤器执行顺序 请求进入网关会碰到三类过滤器当前路由的过滤器、DefaultFilter、GlobalFilter 请求路由后会将当前路由过滤器和DefaultFilter、GlobalFilter合并到一个过滤器链集合中排序后依次 执行每个过滤器 排序的规则是什么呢 每一个过滤器都必须指定一个int类型的order值order值越小优先级越高执行顺序越靠前。GlobalFilter通过实现Ordered接口或者添加Order注解来指定order值由我们自己指定路由过滤器和defaultFilter的order由Spring指定默认是按照声明顺序从1递增。当过滤器的order值一样时会按照 defaultFilter 路由过滤器 GlobalFilter的顺序执行。 详细内容可以查看源码 org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters() 方法是先加载defaultFilters然后再加载某个route的filters然后合并。 org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法会加载全局过滤器 与前面的过滤器合并后根据order排序组织过滤器链 六、跨域问题 1. 什么是跨域问题 跨域域名不一致就是跨域主要包括 域名不同 www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com域名相同端口不同localhost:8080和localhost8081 跨域问题浏览器禁止请求的发起者与服务端发生跨域ajax请求请求被浏览器拦截的问题 解决方案CORS这个以前应该学习过这里不再赘述了。 不知道的小伙伴可以查看跨域资源共享 CORS 详解 - 阮一峰的网络日志 2. 模拟跨域问题 找到 资料中的 indem.html 的页面文件 放入tomcat或者nginx这样的web服务器中启动并访问。 可以在浏览器控制台看到下面的错误 从localhost:8090访问localhost:10010端口不同显然是跨域的请求。 3. 解决跨域问题 在gateway服务的application.yml文件中添加下面的配置 spring:cloud:gateway:# 。。。globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求 - http://localhost:8090allowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期 七、微服务目前知识梳理 网关 nacos服务发现nacos发现服务找到nacos地址将nacos服务拉取 网关判断URI规则符合就拉取服务消费者现在网关给了负载均衡策略 一个微服务拥有多个实例根据负载均衡策略选择一个现在转到服务消费者那 服务消费者进行远程调用服务提供者服务提供者找到自己那份数据交给服务消费者 这个连贯验证了高内聚和低耦合思想一个微服务只负责自己那一项任务 如果发现请求量过大高并发情况下此时流量过大我们就要做限流 网关将它降到能够处理微服务的速度下去处理请求以缓解服务压力 后面我又想要在请求期间做一些中间处理这个时候就需要借助相应拦截器器去实现比如权限认证 这就像是我们前面 JavaWeb 所接触的过滤器类似具体思想又可以在本人的设计模式中的过滤器思路梳理章节去 查看具体思想 然后现在我们又想实现跨域处理然后就开启一些跨域配置具体思想 可以去本人前后端交互技术章节查看跨域问题的具体介绍 现在还没到高级的现在自己搭建实践的先粗略整理的就这些
http://www.hkea.cn/news/14488099/

相关文章:

  • 沈阳网站建设模块维护目前最好用的网络管理软件
  • 成都网页编辑器开发英文网站seo推广
  • 怎么做网站zwnet通河县机场建设网站
  • 公司企业网站有哪些虚拟空间怎么做网站目录指向
  • 小网站做几个关键词生产管理软件app
  • 10个免费网站重庆建设工程招标投标交易信息网
  • 价格便宜的网站建设高校网站建设规范
  • 北京网站优化对策如何给网站做地图
  • 案例学 网页设计与网站建设班级优化大师官网下载
  • 山西疾控最新通告今天汕头网络推广seo渠道
  • 如何给网站更换域名市场调研报告500字
  • tomcat做公司网站如何查找做网站的服务商
  • 小说网站做编辑济南网站建设制作
  • 营销型网站建设价值福建省建设工程继续教育网站
  • asp网站搭建软件婚庆公司一条龙项目
  • 服务器怎么用数据库建设网站免费做图片的网站有哪些
  • 镇江网站关键字优化如何外贸公司做网站该去哪里找
  • 南宁网站开发培训php 怎么做视频网站
  • 怎么样上传网站资料asp access网站架设教程
  • 外贸怎么建立自己的网站亚马逊 wordpress
  • 深圳网站建设定制开发服务dede网站地图
  • 机械网站建设开发东莞常平美食
  • 中国建设银行网站查行号化妆品网站设计报告
  • jsp做网站毕业设计房地产网站开发文档
  • 增加网站访客营销型网站建设论坛
  • 外国网站的风格怎么免费弄网站
  • wordpress建站网页无法运广州手机网站建设报价
  • 网站优化步骤已经有备案的公司网站 还能不能加网站
  • 怎么在一个网站做编辑男女做那个的的视频网站
  • 哪里有手机网站建设联系方式常德做网站专业公司哪家好