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

免费动态素材网站企业传统网站开发实例

免费动态素材网站,企业传统网站开发实例,沈阳市营商环境建设监督局网站,免费网店代运营在之前的学习中#xff0c;所有的微服务接口都是对外开放的#xff0c;这就意味着用户可以直接访问#xff0c;为了保证对外服务的安全性#xff0c;服务端实现的微服务接口都带有一定的权限校验机制#xff0c;但是由于使用了微服务#xff0c;就需要每一个服务都进行一…在之前的学习中所有的微服务接口都是对外开放的这就意味着用户可以直接访问为了保证对外服务的安全性服务端实现的微服务接口都带有一定的权限校验机制但是由于使用了微服务就需要每一个服务都进行一个校验当校验逻辑需要修改时又得修改多个应用增加了开发负担一个解决方式就是引入 API 网关类似整个微服务架构的门面所有的外部客户端都需要经过它来进行调度和过滤相当于前台需要办理什么业务经过前台的确认之后会引导用户去对应的服务台 作为网关具有以下的几个核心功能 权限控制对用户进行权限校验如果校验失败就进行拦截动态路由一切请求先经过网关但网关不处理业务而是根据某种规则把请求发送到某个微服务负载均衡当路由的目标服务有多个时进行负载均衡限流当请求流量过高时按照网关中配置微服务能够接受的流量进行放行避免服务压力过大 Gateway 1. Gateway 的使用 首先需要创建一个单独的 Gateway 的服务除了引入 gateway 的依赖之外还需要引入 nacos 和 loadbalancer 的依赖 dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency /dependencies 然后就需要对网关进行配置 spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:routes: #网关路由配置- id: order-service #自定义路由规则iduri: lb://order-service/ #目标服务地址predicates: #路由条件满足条件才会被通行- Path/order/** 来解释一下上面的配置 由于需要用到 Nacos 的服务发现功能所以要把 Nacos 的配置也添加上之后就是网关的路由配置自定义一个路由规则 id 作为唯一标识符方便后续对该规则进行管理和引用然后就是目标服务地址 lb 表示使用负载均衡器将请求转发到名为 order-service 的服务并设置了路由条件请求的路径必须以 /order/ 开头 配置好之后启动服务此时就可以通过网关服务来获取资源了 关于多个服务和多个路由条件的配置 routes: #网关路由配置- id: order-service #自定义路由规则iduri: lb://order-service/ #目标服务地址predicates: #路由条件满足条件才会被通行- Path/order/**,/feign/**- id: product-serviceuri: lb://product-servicepredicates:- Path/product/** 2. Route Predicate Factories 在上面的配置中使用 predicates 来配置路由条件其中写的规则只是字符串形式这些字符串会被 Route Predicate Factory 路由断言工厂也称为路由谓词工厂读取并处理转变为路由判断条件 https://docs.spring.io/spring-cloud-gateway/reference/spring-cloudgateway/request-predicates-factories.html 也就是这 12 种基本的实现 来演示一下 After 的使用如果不符合条件就会不能够访问 predicates: #路由条件满足条件才会被通行- Path/order/**,/feign/**- After2026-01-12T18:10:21.02472790008:00[Asia/Shanghai] 3. Gateway Filter Factories Predicate 是决定了请求由哪一个路由处理Filter 过滤器是在请求处理前后做一些的逻辑的处理 Filter 又分为 Pre 和 Post 两种类型 Pre 类型过滤器路由处理之前执行也就是请求转发给后端服务之前例如对请求进行限流添加额外的请求头信息等 Post 类型过滤器请求执行完成后将结果返回给客户端之前执行例如修改响应体的主体内容对响应路径进行重写等 Spring Cloud Gateway 中内置了很多的过滤器用于拦截和处理 web 请求根据作用范围可以分为 GatewayFilter 作用到单个路由或者一个分组的路由上GlobalFilter作用到所有的路由上 来演示一下 AddRequestParameter 用法 接下来再访问接口即使 id 不传值也通过过滤器处理之后就被赋值了 除了 AddRequestParameter观望中还提供了很多其它的过滤器 AddRequestHeader GatewayFilter Factory :: Spring Cloud Gateway RequestRateLimiter 可以对通过网关的请求进行限流操作采用的是令牌桶的算法 关于限流的算法有以下几种 固定窗口将时间划分为固定大小的窗口每个窗口有一个计数器用于记录在该窗口内允许通过的请求数量每通过一个请求计数器就加一当计数器达到设定的阈值就不允许请求通过缺点也是非常明显比如设定 10 分钟可以通过 10000 个请求前 9 分钟都没有请求最后 1 分钟处理 10000 个请求也符合要求显然是不合理的滑动窗口同样将时间划分为多个小的时间窗口但不是按固定的大窗口重置计数器而是将窗口滑动这也就解决了固定窗口出现的问题不过需要记录多个小窗口的信息性能开销比较大漏桶算法就像一个漏斗型的水桶当请求到达时会先进入漏桶如果漏桶未满则允许请求通过如果漏桶已满则拒绝请求桶以恒定的速率出水代表处理请求的速率无论流入的速率如何流出的速率始终保持一致这也就导致了不能够处理突发的大流量令牌桶算法在漏桶的基础上令牌桶中会以一定的速率生成令牌当流量小的时候桶中就会不断积累令牌当遇到突发的大流量就可以直接拿着这些令牌通过剩余的就排队等待令牌的生成排队等待这种处理方式还可以结合其他策略比如当排队队列过长时为了避免资源过度占用可能会对部分请求进行拒绝或者根据业务的优先级优先处理高优先级请求等。 再来看下一个过滤器 Retry 就是根据当前返回的状态码来进行重试可以设置状态码和重试次数 在上面的配置中都是使用 filter 进行配置的如果使用 Default Filters 配置的话就是对全部路由生效 来使用 default-filters 配置一下 retry然后把状态码设置为 502 之后就重新请求了 3 次 GlobalFilter 是全局过滤器会应用到所有的路由请求上全局过滤器通常用于实现安全性性能监控和日志记录等相关的全局功能 关于负载均衡在之前的使用中就已经用到了也就是 GlobalFilter 下面看一下 Metrics 怎么使用首先需要引入下面的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId /dependency 然后再开启 metrics 的配置 然后再添加一下配置用来监控详细的信息在 /actuator 下可以查到所有监控的链接和信息 过滤器的执行顺序 当一个项目中既有 GatewayFilter 又有 GlobalFilter 时请求路由后网关会把当前项目中的 GatewayFilter 和 GlobalFilter 合并到一个 过滤器链中并进行排序依次执行过滤器 每一个过滤器都必须指定一个 int 类型的 order 值默认值为 0 来表示过滤器的优先级order 值越小优先级越高执行顺序越靠前 Filter 通过实现 Order 接口或者添加Order注解来指定 order 值Spring Cloud Gateway 提供的 Filter 由 Spring 指定用户也可以自定义 Filter如果过滤器的 order 值一样会按照 defaultFilter GatewayFilter GlobalFilter 的顺序执行 4. 自定义过滤器 4.1. 自定义 GlobalFilter 全局过滤器需要实现 GlobalFilterOrdered 接口然后重写 filter 和 getOrder 方法 Slf4j Component public class CustomGlobalFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//Pre执行逻辑log.info(Pre Global Filter...);return chain.filter(exchange).then(Mono.fromRunnable(()-{//Post执行逻辑log.info(Post Global Filter...);}));}Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE; //设置优先级} } 关于 Mono 方法参数的说明 之后再去发起请求自定义的全局过滤器已经生效了 4.2. 自定义 GatewayFilter 如果需要自定义可配置的 GatewayFilter就需要创建一个过滤器工厂根据读取到的配置来构造对象 定义一个类用来存储从配置文件中读取到的配置信息 Data public class CustomConfig {private String name; } 创建一个过滤器工厂 CustomGatewayFilterFactory 继承 AbstractGatewayFilterFactory 类然后再实现 Ordered 接口并添加过滤器的逻辑 Slf4j Component public class CustomGatewayFilterFactory extends AbstractGatewayFilterFactoryCustomConfig implements Ordered {public CustomGatewayFilterFactory() {super(CustomConfig.class);}Overridepublic GatewayFilter apply(CustomConfig config) {return new GatewayFilter() {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//Pre类型log.info(Pre Filter,config{},config);return chain.filter(exchange).then(Mono.fromRunnable(()-{log.info(Post Filter,config{},config);}));}};}Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE;} } 配置文件中把自定义的过滤器名称添加上然后还需要添加传入的参数这里过滤器的名称取的是 CustomGatewayFilterFactory 除去 GatewayFilterFactory按照规范自定义过滤器工厂需要以 GatewayFilterFactory 为后缀 之后再启动服务自定义的 GatewayFilter 也生效了并且在指定优先级相同的条件下先执行 GatewayFilter 再执行 GlobalFilter
http://www.w-s-a.com/news/776793/

相关文章:

  • 长腿蜘蛛wordpresssem优化推广
  • 中国铁路建设监理协会官方网站深圳福田区怎么样
  • 互联网网站开发发展wordpress文章自定义栏目
  • 众筹网站平台建设工信部网站备案系统
  • 网站301重定向代码wordpress 加子目录
  • 淄博网站制作优化推广asp做学生信息网站
  • 海口招商建设有限公司网站淮安哪有专业做网站的公司
  • 喀什哪有做网站的国内正规seo网络推广
  • 网站设计初步规划公司网页打不开是什么原因
  • 深圳企业网站建设推广服务php做的商城网站设计论文
  • 韩雪冬网站手机网站开发 宽度
  • 奉贤专业做网站新手怎么做企业网站
  • 做网站用哪几个端口 比较好手机号网站源码
  • 手机免费代理ip网站那个旅游网站做攻略最好
  • 西安做网站找哪家公司好苏州专业网站建设开发
  • dedecms如何做网站网站设计实施方案
  • 网站建设合约品牌设计有哪些
  • 织梦企业门户网站宝塔搭建wordpress网站
  • 网站为什么没有排名了11月将现新冠感染高峰
  • 网站开发维护专员岗位职责辽阳企业网站建设
  • 做外国订单有什么网站网站设计论文提纲
  • 商城网站建设报价方案导师让做网站
  • 清远市企业网站seo联系方式动易官方网站
  • 手机上怎么做能打开的网站一级域名和二级域名跨域
  • 网站首页效果图wordpress 在线教育
  • 电商网站开发团队广西桂林商贸旅游技工学校
  • 网站模板文件怎么下载东莞常平镇邮政编码
  • 建网站需要什么wordpress误删的后果
  • wordpress无插件实现网站地图做阿里巴巴网站店铺装修费用
  • 英文互动网站建设南宁住房和城乡建设局网站