关于循环:循环请求报204问题分析

背景商家自主增加配件需要(Freemarker+JQuery前后端未分离我的项目)中,追加配件弹窗内批量复制粘贴配件会循环调用获取联想词接口,如果复制粘贴的配件名称很多(20+),只有一部分申请胜利(状态码200)返回响应体,其余申请胜利(状态码204)但没有返回响应体。 问题剖析比照公布询价页、追加配件页发现这三个页面都有同样的问题,为什么循环并发调用接口会报204呢?跟运维、架构沟通后发现,这个问题的本源是网关层多了防爬、限流解决,因为当咱们的零碎被频繁的申请的时候,就有可能 将零碎压垮,有了网关,那么就能够在网关零碎做限流,因为所有的申请都须要先通过网关零碎能力路由到微服务中。 令牌桶算法令牌桶算法是比拟常见的限流算法之一,大略形容如下: 1)所有的申请在解决之前都须要拿到一个可用的令牌才会被解决; 2)依据限流大小,设置依照肯定的速率往桶里增加令牌; 3)桶设置最大的搁置令牌限度,当桶满时、新增加的令牌就被抛弃或者回绝; 4)申请达到后首先要获取令牌桶中的令牌,拿着令牌才能够进行其余的业务逻辑,解决完业务逻辑之后,将令牌间接删除; 5)令牌桶有最低限额,当桶中的令牌达到最低限额的时候,申请解决完之后将不会删除令牌,以此保障足够的限流 如下图: 在cass-webagent网关我的项目中,限流配置如下: icec: limiter: enabled: true pathConfig: burstCapacity: 10 #令牌桶的容量,同一个地址容许在一秒钟内实现的最大申请数 replenishRate: 5 #容许用户每秒解决多少个申请 routeConfig: burstCapacity: 50 #令牌桶的容量,同一个服务容许在一秒钟内实现的最大申请数 replenishRate: 20 #容许用户每秒解决多少个申请 customConfigs: #自定义令牌桶的容量 - name: "path:/agentBuy/decodePartNo" config.burstCapacity: 500 - name: "path:/agentBuy/getFastOEMore" config.burstCapacity: 500 - name: "path:/maindata/llq/getDitchPriceSingle" config.burstCapacity: 100 #- name: "route:web-market" # config.burstCapacity: 51当用户一秒内申请数量超过20个时,可能有一部分申请返回204(no content) 解决方案1、前端管制每秒的申请并发数 比方,每个一个时间段发送一定量级的申请,利用一个伪死循环阻塞主线程 //第一种,应用while循环function sleep(delay) { var start = (new Date()).getTime(); while((new Date()).getTime() - start < delay) { continue; }}//或者应用for循环function sleep(delay) { for(var t = Date.now(); Date.now() - t <= d;);}2、在网关减少自定义某些接口门路容许用户每秒解决的申请量 ...

October 9, 2021 · 1 min · jiezi

关于循环:前端面试每日-31-第592天

明天的知识点 (2020.11.28) —— 第592天 (我也要出题)[html] 为什么说cookie不能够滥用?[css] 如何去掉em的默认款式?[js] for(;;)循环里如果省略第二个条件,则须要留神什么问题?[软技能] 你晓得什么是脱敏吗?什么状况下要脱敏呢?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

November 28, 2020 · 1 min · jiezi