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

如何做一个购物网站页面wordpress主题少儿教育类

如何做一个购物网站页面,wordpress主题少儿教育类,企业网站建设开发费用,兰州做网络优化限流定义及目的 当系统流量达到系统或下游承受能力的阈值时对系统进行限流控制以防止系统或下游挂掉#xff0c;减少影响面。 限流组成#xff1a;阈值及限流策略。阈值是指系统单位时间接收到的请求qps总数#xff1b;限流策略是指限流行业触发后对应的系统行为#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 calNumProcessornew CalNumProcessor();for(int i0;i1000;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://www.yutouwan.com/news/218745/

相关文章:

  • 学习网站开发软件广州网络推广招聘
  • 那些网站做的比较好网络营销推广岗位有哪些
  • 做文案选图片素材的网站wordpress密码爆破
  • 徐州市经济技术开发区建设局网站加速器国外
  • 郑州网站推广排名wordpress 导航栏居中
  • 网站建设免费pptwordpress 4.4
  • 网站开发vue版本是什么公司小程序开发哪家好
  • 建网站要多少钱阜阳公司做网站
  • 营销型企业网站有哪些类型南昌优化网站排名
  • 兼职做页面的网站wordpress写博客插件
  • 太原网站开发圣都家装公司简介
  • 网站建设仟金手指专业15南昌网站建设公司渠道
  • 免费提供ppt模板的网站施工效果图怎么做
  • 软件公司做网站百度热搜榜第一
  • 在原备案号下增加新网站网站开发建设专业
  • 清新太和做网站仿淘宝网站源码+php
  • 旅游区网站开发珠海微网站
  • 做k12网站建设动漫网站的目的
  • 深圳有做网站的公司闵行广州网站建设公司
  • 浅谈电子商务网站建设网站建设在什么税控盘
  • 凡客诚品官方网站的代码wordpress防止并发数
  • 邢台网站制作深圳电商网站建设公司
  • 苏州网站建设代理江苏城乡建设职业学院就业网站
  • 中国城乡与建设部网站苏州网站关键词优化
  • wordpress 导航网站模板品牌推广案例
  • 个人网站建设作用自己建设房源网站
  • 网站业务怎么做的h5网站是什么意思
  • 导航网站教程wordpress 文章标签
  • 用wordpress建站要不要用宝塔服装业网站建设的策划
  • 建设购物网站需要多少费用公司做的网站费用如何做账