怎么做下载类的网站课程平台网站建设报价

news/2025/10/7 17:14:42/文章来源:
怎么做下载类的网站,课程平台网站建设报价,北京海淀区官网,服务器上怎么搭建网站Gateway整合Sentinel ​ 前面使用过Sentinel组件对服务提供者、服务消费者进行流控、限流等操作。除此之外#xff0c;Sentinel还支持对Gateway、Zuul等主流网关进行限流。 ​ 自sentinel1.6.0版开始#xff0c;Sentinel提供了Gateway的适配模块#xff0c;能针对路由(rou…Gateway整合Sentinel ​ 前面使用过Sentinel组件对服务提供者、服务消费者进行流控、限流等操作。除此之外Sentinel还支持对Gateway、Zuul等主流网关进行限流。 ​ 自sentinel1.6.0版开始Sentinel提供了Gateway的适配模块能针对路由(route)和自定义API分组两个维度进行限流。 路由维度 路由维度是指配置文件中的路由条目资源名是对应的routeId相比自定义API维度这是比较粗粒度的。看下如何实现 导入Sentinel组件为Gateway提供的适配依赖包在pom.xml中导入依赖 !--sentinel为gateway提供的适配包-- dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-spring-cloud-gateway-adapter/artifactId /dependency增加配置类SentinelRouteConfiguration实例化SentinelGatewayFilter和SentinelBlockExceptionHandler对象初始化限流规则 Configuration // 配置类 public class SentinelRouteConfiguration { // 路由限流规则配置类private final ListViewResolver viewResolvers;private final ServerCodecConfigurer serverCodecConfigurer;public SentinelRouteConfiguration(ObjectProviderListViewResolver viewResolversProvider, ServerCodecConfigurer serverCodecConfigurer) {this.viewResolvers viewResolversProvider.getIfAvailable(Collections::emptyList);this.serverCodecConfigurer serverCodecConfigurer;}PostConstructpublic void initGatewayRules() { // 初始化限流规则SetGatewayFlowRule rules new HashSet();GatewayFlowRule gatewayFlowRule new GatewayFlowRule(user_route); // 资源名(gateway中的路由id)gatewayFlowRule.setCount(1); // 限流阈值gatewayFlowRule.setIntervalSec(1); // 统计时间窗口默认1srules.add(gatewayFlowRule);GatewayRuleManager.loadRules(rules); // 载入规则}PostConstructpublic void initBlockHandlers() { // 限流后的响应BlockRequestHandler blockRequestHandler (serverWebExchange, throwable) - {MapString, Object result new HashMap();result.put(code, 0);result.put(message, 您已被限流);return ServerResponse.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON_UTF8).body(BodyInserters.fromObject(result));};GatewayCallbackManager.setBlockHandler(blockRequestHandler); // 设置限流响应}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() {return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer);}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public GlobalFilter sentinelGatewayFilter() { // 初始化限流过滤器return new SentinelGatewayFilter();}}注意Gateway限流是通过Filter实现的主要是注入SentinelGatewayFilter实例和SentinelGatewayBlockExceptionHandler实例 在yml中设置两个routeuser_route和shop_route上面主要是对user_route限流了着重看下 server:port: 8083spring:application:name: gateway # 服务名cloud:nacos:discovery:server-addr: localhost:8848 # nacos地址gateway:routes: # 路由可配置多个- id: user_route # 路由id唯一即可默认UUIDuri: lb://user # 路由地址(匹配成功后的服务地址) user是用户服务的服务名称order: 1 # 路由优先级默认0越低优先级越高predicates:- Path/user/** # 断言匹配规则- id: shop_route # 路由id唯一即可默认UUIDuri: lb://shop # 路由地址(匹配成功后的服务地址) shop是用户服务的服务名称order: 1 # 路由优先级默认0越低优先级越高predicates:- Path/shop/** # 断言匹配规则启动服务开始调试 成功完成路由级别的限流那么后面看看API维度的限流 自定义API维度 ​ 上面那种限流方式可以看出灵活性不够高。自定义的API维度可以利用Sentinel提供的API自定义分组来进行限流。相比路由维度这是一种更加细粒度的限流方式。 实现 导入Gateway的适配包 !--sentinel为gateway提供的适配包-- dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-spring-cloud-gateway-adapter/artifactId /dependency依然是实例化SentinelGatewayFilter和SentinelBlockExceptionHandler对象初始化限流规则定义API分组 Configuration // 配置类 public class SentinelRouteConfiguration { // 路由限流规则配置类private final ListViewResolver viewResolvers;private final ServerCodecConfigurer serverCodecConfigurer;public SentinelRouteConfiguration(ObjectProviderListViewResolver viewResolversProvider, ServerCodecConfigurer serverCodecConfigurer) {this.viewResolvers viewResolversProvider.getIfAvailable(Collections::emptyList);this.serverCodecConfigurer serverCodecConfigurer;}PostConstructpublic void initGatewayRules() { // 初始化限流规则SetGatewayFlowRule rules new HashSet();GatewayFlowRule gatewayFlowRule new GatewayFlowRule(user_api); // 资源名,api分组的名称(自定义)gatewayFlowRule.setCount(1); // 限流阈值gatewayFlowRule.setIntervalSec(1); // 统计时间窗口默认1srules.add(gatewayFlowRule);GatewayRuleManager.loadRules(rules); // 载入规则}PostConstructpublic void initCustomizedApis() {SetApiDefinition apiDefinitions new HashSet();ApiDefinition apiDefinition new ApiDefinition(user_api) // 定义 api分组.setPredicateItems(new HashSetApiPredicateItem() {{add(new ApiPathPredicateItem().setPattern(/user/group/**) // 路径匹配规则.setMatchStrategy(SentinelGatewayConstants.URL_MATCH_STRATEGY_PREFIX)); // 匹配策略前缀匹配}});apiDefinitions.add(apiDefinition);GatewayApiDefinitionManager.loadApiDefinitions(apiDefinitions); // 载入API分组定义}PostConstructpublic void initBlockHandlers() { // 限流后的响应BlockRequestHandler blockRequestHandler (serverWebExchange, throwable) - {MapString, Object result new HashMap();result.put(code, 0);result.put(message, 您已被限流);return ServerResponse.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON_UTF8).body(BodyInserters.fromObject(result));};GatewayCallbackManager.setBlockHandler(blockRequestHandler); // 设置限流响应}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() {return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer);}BeanOrder(Ordered.HIGHEST_PRECEDENCE)public GlobalFilter sentinelGatewayFilter() { // 初始化限流过滤器return new SentinelGatewayFilter();}}唯一要注意的是路由匹配规则如果是单一的一个具体接口不是匹配符那么后面的匹配策略就没有必要再去配置了(setMatchStrategy()方法) 定义一个/user/group/findById接口 RequestMapping(/user/group/findById) public String findGById(RequestParam(id) Integer id) {return userInfo.getOrDefault(id, null); }启动调用测试 可以看到配置的没有问题满足/user/group/**规则的请求有被限流到 超时配置 Gateway默认没有超时的限制也就是数据什么时候返回就等待到什么时候。如果不想等待可以增加对超时的配置 gateway:httpclient:connect-timeout: 5000 # 建立连接时间限制单位毫秒response-timeout: 4s # 响应时间的时间限制尝试下接口睡眠5s再次调用 curl localhost:8083/user/group/findById?id1 {timestamp:2023-09-02T00:59:47.18400:00,path:/user/group/findById,status:504,error:Gateway Timeout,requestId:7f5ff558-1}被告知504超时了~ CORS配置 涉及到前后端分离的跨域请求时浏览器访问后端地址通常提示No Access-Control-Allow-Origin header is present on the requested resource 可以在gateway中增加跨域配置或者前端去配置都可以自行协商。 cloud:nacos:discovery:server-addr: localhost:8848 # nacos地址gateway:httpclient:connect-timeout: 5000 # 建立连接时间限制单位毫秒response-timeout: 4s # 响应时间的时间限制globalcors:cors-configurations: [/**]:allowedOrigins: * # 允许的来源allowedMethods: * # 允许的方法allowedHeaders: * # 允许的请求头 *表示所有通常情况下也可以不是按照全部允许来做按照你的项目实际开发需求搞就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openJDK历史版本

https://jdk.java.net/archive/

2025冲压件厂家权威推荐榜:冲压件/新能源冲压件/光伏冲压件/精密冲压件/异形冲压件/五金冲压件/铝冲压件/汽配冲压件/不锈钢冲压件/家具冲压件厂家公司精密制造与品质保障实力之选

行业背景分析随着制造业向高端化、智能化方向转型升级,冲压件作为基础零部件在汽车制造、电子设备、家电产品等领域的应用日益广泛。2025年,中国冲压件市场规模预计将突破5000亿元,行业竞争格局呈现专业化、精细化发…

做a免费视频在线观看网站茂名网站制作公司

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 目前能下载到的最新版本是 PyCharm 2021.1。 请注意对应 Python 的版本&#xff1a; Python 2: 2.7Python 3: >3.6, <3.11…

图解C++智能指针的循环引用

欢迎大家访问我的个人主页guts的小屋循环引用是学习智能指针过程中的一个小难点,笔者愚钝,明明知道是两个指针互相引用导致了内存泄漏,但看各种文字资料时,脑子里总是一团浆糊,感觉似懂非懂,于是自己绘制了几张图…

国庆收心指南:用AI提示词工程解决节后综合征

作为程序员,我们习惯用技术思维解决工作中的复杂问题。但面对国庆假期后的"不想上班"、"睡眠紊乱"、"注意力涣散",你有没有想过也可以用结构化的方法来应对?今天分享一个实用的AI工具…

做海鱼的网站网站后期维护怎么做

多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测预测效果基本介…

CF1895F Fancy Arrays

题目大意: 设一个长度为 \(n\) 的数组是 “Fancy” 的,当且仅当它满足下面条件。\(|a_{i} - a_{i - 1}| \le k\) 存在 \(i\) 满足 \(x \le a_{i} \le x + k - 1\) \(a_{i} \ge 0\)给定 \(n,k,x\),求 "Fancy&qu…

高档手表网站自己弄一个网站要多少钱

拦截器 1 回顾过滤器&#xff1a; Servlet规范中的三大接口&#xff1a;Servlet接口&#xff0c;Filter接口、Listener接口。 过滤器接口&#xff0c;是Servlet2.3版本以来&#xff0c;定义的一种小型的&#xff0c;可插拔的Web组件&#xff0c;可以用来拦截和处理Servlet容…

文件系统的全局结构

物理格式化后 低级格式化,划分扇区,检测坏扇区,并用备用扇区替换坏掉的扇区 逻辑格式化后 磁盘分区(分卷)完成各部分的文件系统初始化 文件系统在外存🀄️的结构 分为用户区和内核区 近期访问过的目录文件会缓存…

完整教程:记一次idea中lombok无法使用的解决方案

完整教程:记一次idea中lombok无法使用的解决方案2025-10-07 17:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

网站建设培训的心得食品核酸第三方检测机构

杨淼信息与计算机科学 跆拳道国家一级教练员 曾经tricking爱好者3 人赞同了该回答一个不算建议的建议 直接看&#xff0c;看到不懂的就查相应的知识&#xff08;据说牛人都靠wiki活着&#xff09;。 知识当有需求的时候&#xff0c;才会学的更快。 觉得这样做的好处是&#xff…

详细介绍:在机器视觉测量和机器视觉定位中,棋盘格标定如何影响精度

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025.10.7

bot选前两问容易解决,得 \(E:\dfrac{x^2}{6}+\dfrac{y^2}{3}=1\),\(y_p\in(1,3]\) bot指出:第三问是可以直接联立爆算的! 设 \(P(x_0,y_0)\),则 \(MN:x_0x+2y_0y-6=0\),\(P\) 到 \(MN\) 的距离为: \[\dfrac{x_0…

自由型象棋分析程序

可以键盘操作。比如鼠标移到某个位置,按r出来个黑车。空格删掉棋子。还可以自己吃自己,空白吃自己等,我感觉摆残局最方便。 程序很乱。鄙人之前所发贴的拼凑版。再贴部分代码: httpd.py# !/usr/bin/python3 from e…

网站建设数据石家庄建站公司

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Icon这种Widget&#xff0c;本章回中将介绍 如何使用字体图标。闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 本章回中介绍的字体图标是指Icon中使用特殊的字体来充当图标&#xff0c;字体图标可以看作…

luogu P1648 看守

题目大意 给定 \(d\) 维坐标的 \(n\) 个点,每个点表示为 \(d\) 个数值,求两点间最大距离 \(d\) 维两点间距离为 \(|x_1-y_1|+|x_2-y_2|+...+|x_d-y_d|\) Sol 我们随便找两个点 \(A\),\(B\) 作为演示: \[dis_{A,B}=|…

题解:P11219 【MX-S4-T3】「yyOI R2」youyou 的序列 II

引理 先手获胜当且仅当先手可以在忽略后手的情况下操作完整个区间,且后手可操作的部分的长度小于等于 \(c1\)。 注:后手可操作的部分指后手能操作的最靠左的点到后手能操作的最靠右的点的距离。 证明 充分性: 在满足…

旧宫网站建设wordpress特效-页面加载动画圆圈

什么是掩膜&#xff1f; 在OpenCV中&#xff0c;掩模&#xff08;mask&#xff09;是一个与图像具有相同大小的二进制图像&#xff0c;用于指定哪些像素需要进行操作或被考虑。掩模通常用于选择特定区域或进行像素级别的过滤操作。 OpenCV 中的很多函数都会指定一个掩模&…

前端HTML contenteditable 属性使用指南 - 教程

前端HTML contenteditable 属性使用指南 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

太原建站模板企业网站建设的几种形式

前言 好久都没有写博客了&#xff0c;由于博主之前一直都在上班处于加班的阶段&#xff0c;所以根本就没有时间去学习。现在请假回到学校写论文&#xff0c;有时间来学习了。 所以会不断的进行博客的更新&#xff0c;以及分享我在公司学到的一些新的技术&#xff0c;希望大家多…