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

雄安智能网站建设电话自己做小程序要钱吗

雄安智能网站建设电话,自己做小程序要钱吗,制定营销推广方案,wordpress4.9邮件发送一、初识 Gateway 1. 为什么需要网关 我们所有的服务可以让任何请求访问#xff0c;但有些业务不是对外公开的#xff0c;这就需要用网关来统一替我们筛选请求#xff0c;它就像是房间的一道门#xff0c;想进入房间就必须经过门。而请求想要访问微服务#xff0c;就必须…一、初识 Gateway 1. 为什么需要网关 我们所有的服务可以让任何请求访问但有些业务不是对外公开的这就需要用网关来统一替我们筛选请求它就像是房间的一道门想进入房间就必须经过门。而请求想要访问微服务就必须通过网关再到微服务。 2. 网关的作用 身份认证和权限校验 网关是微服务的入口会验证用户是否有请求资格如果没有则进行拦截 服务路由、负载均衡 网关不处理业务根据拟定好的规则将请求转发到对应的微服务中这个过程就是路由。当对应的微服务有部署了多个同样需要根据拟定的规则做负载均衡。 请求限流 请求量过高时网关根据微服务能够接受的请求量来放行请求避免服务压力过大。就像是红绿灯避免交通堵塞的原理类似。 在 SprignCloud 中网关的实现包括两种: gatewayzuulzuul 是基于 Servlet 实现的属于阻塞式编程。而SpringCloudGateway 是基于 Spring5 中提供的 WebFlux, 属于响应式编程的实现具备更好的性能。 二、入门案例 1. 创建新的module引入SpringCloudGateway的依赖和nacos的服务发现依赖如果没有统一管理版本号需要加上version/version !--nacos服务注册发现依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--网关gateway依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency 2.  编写启动类 SpringBootApplication public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);} }3. 路由配置及nacos地址 3.1 创建application.yml文件 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes: # 网关路由配置routes: 多个 route: 一个- id: user-service # 路由id自定义只要唯一即可uri: lb://userservice # 第一种写法路由的目标地址; lbloadBalance是指负载均衡后面跟服务名称predicates: # 路由断言也就是判断请求是否符合路由规则的条件(断言一般是布尔类型)- Path/user/** # 这个是按照路径匹配只要以/user/开头就符合要求 # 可以同时配置多个服务路由- id: baidu-demouri: https://www.baidu.com # 第二种写法路由的目标地址 http就是固定地址predicates:- Path/baidu/** # 注意使用本服务测试需要开启下面截取path不然拼接的路径无效 # filters: # path断言路由的请求格式默认为uripath,如果不需要携带path可以截取掉 # - StripPrefix1 # 截取掉- Path中的第一级路径/baidu# 初学期间为了方便调试与快速定位错误可以将gateway打印日志级别调低 logging:level:org:springframework:cloud:gateway: trace路由的配置包括 1.路由id路由的唯一标示 2.路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡 3.路由断言predicates判断路由的规则一般是布尔类型 4.路由过滤器filters对请求或响应做处理 重启网关服务 访问 localhost:10010/user/1,如下图所示  被拦截状态 至此案例到此结束为了更好的了解网关在这期间默默的付出了哪些下面将网关原理聊一聊。 用户发送请求后首先会通过网关而网关是不做任何业务的会去注册中心 Nacos 中拉取服务列表然后根据负载均衡选择一个服务发送用户的请求。如下图 三、断言工厂 我们配置文件中写的断言规则是字符串这些字符串会被断言工厂Route 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.pHeader请求必须包含某些header- HeaderX-Request-Id, \dHost请求必须是访问某个host域名- Host.somehost.org,.anotherhost.orgMethod请求方式必须是指定方式- MethodGET,POSTPath请求路径必须符合指定规则- Path/red/{segment},/blue/**Query请求参数必须包含指定参数- Queryname, Jack或者- QuerynameRemoteAddr请求者的ip必须是指定范围- RemoteAddr192.168.1.1/24Weight权重处理 四、过滤器工厂 GatewayFilter是网关中提供的一种过滤器可以对进入网关的请求和微服务返回的响应做处理 Spring提供了31种不同的路由过滤器工厂。例如 名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResponseHeader从响应结果中移除有一个响应头RequestRateLimiter限制请求的流量…… 下面举个例子给所有进入userservice的请求添加一个请求头Truthitcast is freaking awesome! 实现方式 1.  局部过滤器(GatewayFilter) filters : 配置在路由下的过滤器只对当前路由的请求生效, filters 在 routes 的目录下 1. 在gateway中修改application.yml文件, 给userservice的路由添加过滤器 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/** filters: # 路由过滤器- AddRequestHeaderTruth, me is freaking awesome! # 添加请求头为了方便观察是否添加成功这里改造方法如下  2.  默认过滤器(DefaultFilter) default-filters  : 对所有路由都生效的过滤器,  default-filters 和 routes 同级目录 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/**default-filters: # 默认过滤器- AddRequestHeaderTruth, me is freaking awesome! 3. 全局过滤器(GlobalFilter) 全局过滤器 (GlobalFilter) 的作用也是处理一切进入网关的请求和微服务响应与上面的作用一样。 区别在于 GatewayFilter通过配置定义处理逻辑是固定的。而上面的逻辑需要自己写代码实现定义方式是实现GlobalFilter接口。 public interface GlobalFilter {/*** 处理当前请求有必要的话通过{link GatewayFilterChain}将请求交给下一个过滤器处理** param exchange 请求上下文里面可以获取Request、Response等信息* param chain 用来把请求委托给下一个过滤器 * return {code MonoVoid} 返回标示当前过滤器业务结束*/MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain); }3.1 自定义全局过滤器 需求定义全局过滤器拦截请求判断请求的参数是否满足下面条件 参数中是否有authorizationauthorization参数值是否为admin如果同时满足则放行否则拦截 实现步骤 1. 在 gateway 中定义一个过滤器 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();} }2. 测试访问 http://localhost:10010/user/1?authorizationadmin 可以看到成功获取到响应结果 若不符合要求则无法获取结果 4. 过滤器的执行顺序 请求进入网关会碰到三类过滤器当前路由的过滤器、DefaultFilter、GlobalFilter 请求路由后会将当前路由过滤器和 DefaultFilter、GlobalFilter合并到一个过滤器链集合中排序后依次执行每个过滤器。 过滤器执行顺序 每一个过滤器都必须指定一个int类型的order值order值越小优先级越高执行顺序越靠前。GlobalFilter通过实现Ordered接口或者添加Order注解来指定order值由我们自己指定。路由过滤器和defaultFilter的order由Spring指定默认是按照声明顺序从1递增。当过滤器的order值一样时会按照 defaultFilter 路由过滤器 GlobalFilter的顺序执行。 4.1 定义执行顺序的两种方式 5. 限流过滤器 限流对应用服务器的请求做限制避免因过多请求而导致服务器过载甚至宕机。限流算法如下 计数器算法又包括固定窗口计数器算法、滑动窗口计数器算法漏桶算法(Leaky Bucket)令牌桶算法Token Bucket 1. 计数器算法 --- 固定窗口计数器算法 将时间划分为多个窗口在每个窗口内每有一次请求就将计数器加一当时间到达下一个窗口时计数器重置。如果计数器超过了限制数量则本窗口内所有的请求都被丢弃。 但是这种会有个问题假如我们在1s内允许通过的请求数量是100如果在窗口失效的最后几毫秒发送了99个请求接着又在下一个时间窗口开始时发送99个请求那么这个用户这1s内就不止发送100个请求了这就是临界值问题。 2. 计数器算法 --- 滑动窗口计数器算法 滑动窗口计算算法就是为了解决固定窗口计算算法存在临界值的问题而出现的。假设我们1秒内允许通过100个请求但我们把1秒分成多个窗格窗格数越多流量过度越平滑。 3. 漏桶算法 将每个请求视作水滴放入漏桶进行存储漏桶以固定速率向外漏出请求来执行如果漏桶空了则停止漏水”如果漏桶满了则多余的水滴会被直接丢弃。 4. 令牌桶算法  以固定的速率生成令牌存入令牌桶中如果令牌桶满了以后多余令牌丢弃 六、跨域问题 跨域域名、端口、协议三者任意一个不同就是跨域 域名不同 www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 端口不同localhost:8080和localhost:8081 协议不同https:xxx.com 和 http:xxx.com 跨域问题浏览器禁止请求发送者与服务端跨域ajax请求说白了就是请求被浏览器拦截的问题。解决方案CORS (跨域资源共享) 网关处理跨域采用的同样是CORS方案并且只需要简单配置即可实现 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 # 这次跨域检测的有效期, 有效期内浏览器不询问是否拦截
http://www.hkea.cn/news/14307607/

相关文章:

  • 企业网站备案域名可以用个人的哪里有培训网页设计
  • 新注册网站湖北省职业能力建设处网站
  • 小新pro更改网站设置国外 网站 设计
  • 二类电商用网站怎么做H5页面宿迁经济技术开发区属于哪个区
  • 如何做阿语垂直网站平台门户
  • 模板网站配置文件移动网页设计
  • 网站开发的检索速度在啥范围之内wordpress移除评论
  • 网站备案期间如何google搜索引擎入口 镜像
  • 株洲网站建设方案咨询登陆网站密码不保存怎么做
  • 怎么做网站弹窗通知网站域名需icp备案吗
  • 做推广网站的文章nginx wordpress 重写
  • 婚纱网站设计代码html重庆市建设工程信息网 施工许可
  • 中国小康建设网是骗子网站吗?阿坝州建设局网站刘志彬
  • 进口跨境电商网站制作河南红旗渠建设集团网站
  • 温州营销网站制作报价济南市住房和城乡建设局官网
  • 苏州网站搜索排名相册管理网站模板下载
  • 个人备案网站可以做淘宝客吗城乡建设厅建设网站
  • 做网站的顶部图片手机网站建设注册塔山双喜
  • 多层分销网站建设企业建站的费用
  • oecms(php企业网站管理系统)网站如何做快捷支付
  • 利用网站源代码建立网站wordpress怎么删除
  • 温州做网站掌熊号主机屋wordpress建站
  • 建域名做网站淘宝网站设计公司
  • 网站的域名和密码wordpress 7天热门
  • 博客内容跟网站相关吗做网站一般用什么几号字
  • 网站制作公司去哪找辽阳专业建设网站公司
  • 电脑建设银行怎样设置网站查询杭州网站设计询问蓝韵网络
  • 小公司网站建设岳池做网站电话
  • 自己做网站挂广告怎么赚钱吗网站规划设计的一般流程
  • 罗湖区做网站的公司温州市网站制作