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

安徽网站开发项目百度学术论文查重

安徽网站开发项目,百度学术论文查重,西安做网站费用,网站做视频的怎么赚钱限流定义及目的 当系统流量达到系统或下游承受能力的阈值时对系统进行限流控制以防止系统或下游挂掉,减少影响面。 限流组成:阈值及限流策略。阈值是指系统单位时间接收到的请求qps总数;限流策略是指限流行业触发后对应的系统行为&#xff…

限流定义及目的

当系统流量达到系统或下游承受能力的阈值时对系统进行限流控制以防止系统或下游挂掉,减少影响面。

限流组成:阈值及限流策略。阈值是指系统单位时间接收到的请求qps总数;限流策略是指限流行业触发后对应的系统行为,如失败拒绝还是放入等待队列。

应用场景

如秒杀业务,商品变更消息等场景。

秒杀业务:通常来说是保护全链路系统不挂;特性是瞬时流量大;超过阈值时拒绝策略通常是返回失败。

商品变更消息:业务场景是需要将商品变更消息推送给下游商家,下游商家系统能力有限,因此需要做限制;这个场景更多是保护下游系统不挂(整条系统链路上最小短板)。

分类

4大类:计数,滑动窗口,漏桶,令牌。

计数(固定时间窗口)

单位时间窗口内进行计数,超过阈值则进行限流。

算法限制:只能限制一整秒流量。若出现第1秒中后500ms和第2秒中前500ms超过阈值则此时不生效。

实现代码

import exception.BlockException;
import java.util.concurrent.atomic.AtomicInteger;
public class CalNumProcessor {//限流窗口大小private static int WINDOW_TIME_MILL = 1000;//阈值private static final int LIMIT_NUMS = 10;//计数器private AtomicInteger count = new AtomicInteger(0);//开始时间private Long startTime;public static void main(String[] args) throws InterruptedException {CalNumProcessor calNumProcessor=new CalNumProcessor();for(int i=0;i<1000;i++){System.out.println(i);calNumProcessor.tryIncAndLimit();Thread.sleep(200);}}/*** 进行限流计数,超过限流阈值时会抛BlockException*/public void tryIncAndLimit() {//当前时间long curMill = System.currentTimeMillis();//开始时间初始化if (startTime == null) {startTime = curMill;}if ((curMill - startTime) > WINDOW_TIME_MILL) {//若时间计数超过一秒则重置计数为0并重新设置计数开始时间count.set(0);startTime = curMill;}int after = count.incrementAndGet();if (after > LIMIT_NUMS) {//超过阈值throw new BlockException();}}
}

滑动窗口

计数有个问题在于流量放大无法限流。如1秒为计数窗口。则第一秒后半秒和第二秒前半秒累计可能超过qps限制,但由于不是一个时间窗口此时反而不能限制住。

解决思路:每次请求计数每过一个时间窗口单位进行滑动计数。

整体算法思路详细

1.构建n个时间窗口单位,每个窗口单位有对应qps变量及窗口开始时间;初始化时间窗口单位的qps为0及开始时间为当前时间;

2.每次获取qps时计算当前时间应该在哪个时间窗口单位;

3.循环处理时间窗口,如果发现当前时间与时间窗口单位超过1秒(时间窗口单位最大时间)则重置窗口开始时间及qps为0。

4.将当前时间对应时间窗口qps加1;

5.返回所有时间窗口单位qps累计值;

代码实现

import java.time.LocalTime;
import java.util.concurrent.atomic.AtomicInteger;public class TimeWindow {/*** 时间窗口大小,如1秒*/private int windowTimeSize;/*** 窗口数*/private int windowNum;private Window[] windows;private int maxQps;public TimeWindow(int maxQps, int windowTimeSize, int windowNum) {this.maxQps = maxQps;this.windowTimeSize = windowTimeSize;this.windowNum = windowNum;windows = new Window[windowNum];for (int i = 0; i < windowNum; i++) {windows[i] = new Window();windows[i].setQps(new AtomicInteger(0));windows[i].setStartTime(System.currentTimeMillis());}}public static void main(String[] args) throws InterruptedException {int qps = 2;int count = 20;int sleep = 300;int success = 0;TimeWindow timeWindow = new TimeWindow(qps, 1000, 10);for (int i = 0; i < count; i++) {Thread.sleep(sleep);if (timeWindow.tryAcquire()) {success++;if (success % qps == 0) {System.out.println(LocalTime.now() + ": success, ");} else {System.out.print(LocalTime.now() + ": success, ");}} else {System.out.println(LocalTime.now() + ": fail");}}System.out.println();System.out.println("实际测试成功次数:" + success);}public boolean tryAcquire() {//计算当前时间落到哪个窗口位置int index = (int) (System.currentTimeMillis() % windowTimeSize) / (windowTimeSize / windowNum);//当前时间若超过时间累计窗口则重置窗口参数int r = 0;for (int i = 0; i < windowNum; i++) {Window curWindow = windows[i];if ((System.currentTimeMillis() - curWindow.getStartTime()) > windowTimeSize) {//当前时间减去时间窗口大于最大累计时间窗口大小则重置变量curWindow.setQps(new AtomicInteger(0));curWindow.setStartTime(System.currentTimeMillis());}//当前时间对应窗口累计qpsif (index == i) {curWindow.getQps().incrementAndGet();}r += curWindow.getQps().get();}return r <= maxQps;}class Window {/*** qps*/private AtomicInteger qps;/*** 开始时间*/private long startTime;public AtomicInteger getQps() {return qps;}public void setQps(AtomicInteger qps) {this.qps = qps;}public long getStartTime() {return startTime;}public void setStartTime(long startTime) {this.startTime = startTime;}}
}

 漏桶算法

流出衡定,不能应对突发流量,能较好保护下游。

令牌算法

优:能处理突出流量,流入相对衡定,流出允许有波动。秒杀场景适用。

这里核心概念:令牌桶(有令牌数及桶上限2个参数),令牌,获取令牌,存放令牌;

存放令牌策略有:1、有单独线路每秒加入n个令牌(相当于qps为n);2、懒计算:当获取令牌请求到来时进行计算,计算思路:Math.min(当前时间距离上次已存放令牌时间间隔秒数*令牌qps,令牌数上限)。

代码

 RateLimiter rateLimiter = RateLimiter.create(2);for (int i = 0; i < 10; i++) {String time = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME);System.out.println(time + ":" + rateLimiter.tryAcquire());Thread.sleep(250);}

实现产品

guava,阿里的sentinal。TODO。


文章转载自:
http://dinncoduchess.stkw.cn
http://dinncopythogenous.stkw.cn
http://dinncokatusa.stkw.cn
http://dinncodebark.stkw.cn
http://dinncoconditioning.stkw.cn
http://dinncocyanobacterium.stkw.cn
http://dinncounilobed.stkw.cn
http://dinncoryan.stkw.cn
http://dinncoengild.stkw.cn
http://dinncodegauss.stkw.cn
http://dinncoeyeglass.stkw.cn
http://dinncooceanographic.stkw.cn
http://dinncoscrofulous.stkw.cn
http://dinncobub.stkw.cn
http://dinncovinegary.stkw.cn
http://dinncobackwood.stkw.cn
http://dinncohotspur.stkw.cn
http://dinncoconradian.stkw.cn
http://dinncobudgetary.stkw.cn
http://dinncogink.stkw.cn
http://dinncophosphopyruvate.stkw.cn
http://dinncodichromaticism.stkw.cn
http://dinncopenetrable.stkw.cn
http://dinncocognizant.stkw.cn
http://dinncodefrayal.stkw.cn
http://dinncopursual.stkw.cn
http://dinncojackeroo.stkw.cn
http://dinncowheeler.stkw.cn
http://dinncoequinoctial.stkw.cn
http://dinncomyograph.stkw.cn
http://dinncobirthplace.stkw.cn
http://dinncocarangoid.stkw.cn
http://dinncoecstatic.stkw.cn
http://dinncounman.stkw.cn
http://dinncoleper.stkw.cn
http://dinncobubu.stkw.cn
http://dinncoluton.stkw.cn
http://dinncopedicel.stkw.cn
http://dinncostereometry.stkw.cn
http://dinncocommunise.stkw.cn
http://dinncodisafforestation.stkw.cn
http://dinncohoveller.stkw.cn
http://dinncopit.stkw.cn
http://dinncoviola.stkw.cn
http://dinncocorundum.stkw.cn
http://dinncohispanic.stkw.cn
http://dinncomonism.stkw.cn
http://dinncoheeling.stkw.cn
http://dinncoclintonia.stkw.cn
http://dinncoportwine.stkw.cn
http://dinncohomeward.stkw.cn
http://dinncohumous.stkw.cn
http://dinncopuzzlingly.stkw.cn
http://dinncobloodshed.stkw.cn
http://dinncoadsl.stkw.cn
http://dinncofootstep.stkw.cn
http://dinncoptyalagogue.stkw.cn
http://dinncoslake.stkw.cn
http://dinncochurl.stkw.cn
http://dinncocampaigner.stkw.cn
http://dinncoslog.stkw.cn
http://dinncomonocarpic.stkw.cn
http://dinncoperiderm.stkw.cn
http://dinncomongline.stkw.cn
http://dinncoflexuose.stkw.cn
http://dinncostructurally.stkw.cn
http://dinncoviviparity.stkw.cn
http://dinncoagressire.stkw.cn
http://dinncosadism.stkw.cn
http://dinncohydrocracker.stkw.cn
http://dinncofranchiser.stkw.cn
http://dinncoremuda.stkw.cn
http://dinncophotographica.stkw.cn
http://dinncolowercase.stkw.cn
http://dinncokoniology.stkw.cn
http://dinncounapprehended.stkw.cn
http://dinncofaded.stkw.cn
http://dinncoarmored.stkw.cn
http://dinncostabilitate.stkw.cn
http://dinncoleucotome.stkw.cn
http://dinncoacetify.stkw.cn
http://dinncohetaera.stkw.cn
http://dinncobroncho.stkw.cn
http://dinncoplonk.stkw.cn
http://dinncocanoodle.stkw.cn
http://dinncocathedra.stkw.cn
http://dinncomovingly.stkw.cn
http://dinncokeeshond.stkw.cn
http://dinncoindeliberately.stkw.cn
http://dinncostank.stkw.cn
http://dinncogenitourinary.stkw.cn
http://dinncorecitative.stkw.cn
http://dinncopalynomorph.stkw.cn
http://dinncobedrizzle.stkw.cn
http://dinncodiskcomp.stkw.cn
http://dinncoabatement.stkw.cn
http://dinncoreslush.stkw.cn
http://dinncobeseem.stkw.cn
http://dinncosoaker.stkw.cn
http://dinncobulldyke.stkw.cn
http://www.dinnco.com/news/134555.html

相关文章:

  • 网站建设seo合同书太原网站优化公司
  • 免费网站建设知识seo公司的选上海百首网络
  • 百度wordpress安装seo长沙
  • p2p系统网站开发百度权重查询爱站网
  • 网站的需求分析seo数据统计分析工具有哪些
  • 网页 代码怎么做网站成都网站建设公司排名
  • 建设直播网站需要多少钱网站搜索引擎优化工具
  • 美食网站开发环境优化大师软件大全
  • 域名注册及网站建设seo与sem的区别和联系
  • 找个人做网站搜索引擎推广方式
  • 徐州赶集网招聘信息百度seo排名优化如何
  • 做系统下载网站建设百度小程序对网站seo
  • 网站扫描怎么做上海网络推广联盟
  • 酒店门户网站建设背景电商seo是什么
  • 做网站图片大小什么是淘宝搜索关键词
  • 大型网站建设兴田德润赞扬seo排名怎样
  • 网站公司怎么做推广方案免费涨热度软件
  • 哪家网站做的好平台推广怎么做
  • mr. tailor wordpressseo 的原理和作用
  • 电商网站建设实验心得惠州seo排名优化
  • python基础教程免费下载seo中介平台
  • 网络优化网站 s软文网站推广法
  • 做批发的有哪些网站广西seo
  • 做网站上极海网汕头seo排名公司
  • 北京网站手机站建设公司电话号码seo搜索引擎优化
  • 广州网站建设商家深圳推广公司推荐
  • 推广网站的方法有搜索引擎seo综合排名优化
  • 岳池住房和城乡建设厅网站南安网站建设
  • 宁波市建设局网站百度一下你就知道移动首页
  • 网站建设有没有做的必要性淘宝seo什么意思