成都企业网站公司wordpress 媒体播放

pingmian/2026/1/20 7:16:48/文章来源:
成都企业网站公司,wordpress 媒体播放,有了网站开发app是不是更容易,wordpress布局插件固定时间窗口算法 固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想#xff0c;而固定时间窗口算法是他的一种实现包括下面滑动时间窗口算法也是计数算法的一种实现。因为计数如果不和时间进行绑定的话那么失去…固定时间窗口算法 固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想而固定时间窗口算法是他的一种实现包括下面滑动时间窗口算法也是计数算法的一种实现。因为计数如果不和时间进行绑定的话那么失去了限流的本质了。就变成了拒绝了 优点 在固定的时间内出现流量溢出可以立即做出限流。每个时间窗口不会相互影响在时间单元内保障系统的稳定。保障的时间单元内系统的吞吐量上限 缺点 正如图示一样他的最大问题就是临界状态。在临界状态最坏情况会受到两倍流量请求除了临界的情况还有一种是在一个单元时间窗内前期如果很快的消耗完请求阈值。那么剩下的时间将会无法请求。这样就会因为一瞬间的流量导致一段时间内系统不可用。这在互联网高可用的系统中是不能接受的。 实现 Autowiredprivate StringRedisTemplate redisTemplate;// 固定时间窗口算法GetMapping(/start)public MapString, Object start(RequestParam MapString, Object paramMap) {//根据前端传递的qps上线int times 100;if (paramMap.containsKey(times)) {times Integer.parseInt(paramMap.get(times).toString());}String redisKey redisQps;RedisAtomicInteger redisAtomicInteger new RedisAtomicInteger(redisKey, Objects.requireNonNull(redisTemplate.getConnectionFactory()));int no redisAtomicInteger.getAndIncrement();//设置时间固定时间窗口长度 1Sif (no 0) {redisAtomicInteger.expire(1, TimeUnit.SECONDS);}//判断是否超限 time2 表示qps3log.info(no值-{},no);if (no times) {throw new RuntimeException(qps refuse request);}log.info(times值-{},times);//返回成功告知MapString, Object map new HashMap();map.put(success, success);return map;}测试 滑动时间窗口算法 滑动时间窗口算法是一种限流算法其原理是记录一段时间内的请求数量并根据时间窗口的滑动来判断是否接受新的请求。该算法通过维护一个滑动窗口来记录时间窗口内的请求数量并根据窗口的大小和限流阈值来决定是否接受新的请求。 滑动时间窗口算法的实现方式相对复杂一些但相对于固定时间窗口算法更加灵活和精确。在滑动时间窗口算法中时间窗口是不断滑动的每个窗口的大小和起点可以根据实际需求进行配置。同时该算法也支持动态调整限流阈值和流量控制粒度能够更好地应对流量波动和突发请求的情况。 滑动时间窗口算法的核心思想是通过维护一个时间窗口内的请求计数器并根据时间窗口的滑动来判断是否接受新的请求。具体来说当一个新的请求到达时算法会根据当前时间点判断该请求属于哪个时间窗口并更新对应窗口的计数器。如果计数器已经达到了限流阈值则拒绝该请求否则接受该请求。随着时间的推移时间窗口会不断滑动并更新计数器的值。 滑动时间窗口算法相对于固定时间窗口算法更加灵活和精确能够更好地应对流量波动和突发请求的情况。同时该算法也支持动态调整限流阈值和流量控制粒度能够更好地满足实际需求。在实际应用中需要根据具体情况选择适合的限流算法来控制流量。 优点 滑动时间窗口算法的优点主要包括以下几点 灵活性和可配置性强滑动时间窗口算法的时间窗口大小和起点可以根据实际需求进行配置同时限流阈值也可以动态调整这使得算法能够更好地应对流量波动和突发请求的情况。精度高滑动时间窗口算法相对于固定时间窗口算法更加精确因为它考虑了时间窗口内的请求数量和时间点能够更好地反映请求的实际情况。支持多维度限流滑动时间窗口算法可以支持多维度的限流例如根据IP地址、用户ID、接口等不同维度进行限流这使得算法能够更加精细地控制流量。 缺点 然而滑动时间窗口算法也存在一些缺点 实现复杂度高滑动时间窗口算法的实现相对复杂需要维护一个滑动窗口来记录时间窗口内的请求数量并不断更新窗口的值这需要耗费更多的计算和存储资源。内存占用大由于滑动时间窗口算法需要记录每个时间窗口内的请求数量和时间点因此需要占用更多的内存资源。无法平滑地实现请求流量的控制滑动时间窗口算法只能通过控制时间段来控制请求总量无法平滑地实现请求流量的控制这可能会影响到用户体验和系统的稳定性。 实现 滑动时间窗口是将时间更加细化上面我们是通过redis#setnx实现的。这里我们就无法通过他统一记录了。我们应该加上更小的时间单元存储到一个集合汇总。然后根据集合的总量计算限流。redis的zsett数据结构就和符合我们的需求。为什么选择zset呢因为redis的zset中除了值以外还有一个权重。会根据这个权重进行排序。如果我们将我们的时间单元及时间戳作为我们的权重那么我们获取统计的时候只需要按照一个时间戳范围就可以了。因为zset内元素是唯一的所以我们的值采用uuid或者雪花算法一类的id生成器 // 滑动时间窗口算法GetMapping(/startList)public MapString, Object startList(RequestParam MapString, Object paramMap) {String redisKey qpsZset;Integer times 100;if (paramMap.containsKey(times)) {times Integer.valueOf(paramMap.get(times).toString());}long currentTimeMillis System.currentTimeMillis();long interMills 10000L;Long count redisTemplate.opsForZSet().count(redisKey, currentTimeMillis - interMills, currentTimeMillis);// 检查QPSQueries Per Second是否超过限制/*** 使用System.currentTimeMillis()获取当前时间戳。* 设置一个时间间隔interMills为1000毫秒即1秒。* 使用redisTemplate.opsForZSet().count(redisKey, currentTimeMillis - interMills, currentTimeMillis)查询过去1秒内Redis ZSet中指定键redisKey的数量。这个数量会被赋值给count变量。* 如果count的值大于times则抛出一个运行时异常表示QPS超过限制*/if (count times) {throw new RuntimeException(qps refuse request);}redisTemplate.opsForZSet().add(redisKey, UUID.randomUUID().toString(), currentTimeMillis);MapString, Object map new HashMap();map.put(success, success);return map;}漏桶算法 漏桶算法是一种常用于流量控制和限流的算法其核心思想是将突发流量整形以便为网络提供一个稳定的流量。 漏桶算法可以看作是一个带有常量服务时间的单服务器队列如果漏桶包缓存溢出那么数据包会被丢弃。在网络中漏桶算法可以控制端口的流量输出速率平滑网络上的突发流量实现流量整形从而为网络提供一个稳定的流量。 漏桶算法的实现相对简单不需要复杂的数据结构或计算易于理解和部署。其优点包括平滑处理流入系统的请求以恒定的速率将请求处理释放从而避免了突发请求对系统的冲击控制精度高可以通过调整漏桶的出水速率来精确地控制请求的处理速度适用于需要平滑处理流量和避免突发请求的场景例如网络流量控制、防止DDOS攻击等。 然而漏桶算法也存在一些缺点例如请求延迟可能导致某些请求的响应时间变长不适用于实时性要求高的场景因为请求需要按照恒定速率进行处理无法满足即时性要求无法应对突发流量因为漏桶的出水速率是固定的无法根据流量的变化进行动态调整。 优点 面对限流更加的柔性不在粗暴的拒绝。增加了接口的接收性保证下流服务接收的稳定性。均匀下发 实现 // 漏桶算法GetMapping(/startLoutong)public MapString, Object startLoutong(RequestParam MapString, Object paramMap) {String redisKey qpsList;Integer times 100;if (paramMap.containsKey(times)) {times Integer.valueOf(paramMap.get(times).toString());}Long size redisTemplate.opsForList().size(redisKey);// 检查队列长度是否超过限制if (size times) {throw new RuntimeException(qps refuse request);}// 添加请求到队列Redis列表的右侧。Long aLong redisTemplate.opsForList().rightPush(redisKey, String.valueOf(paramMap));if (aLong times) {//为了防止并发场景。这里添加完成之后也要验证。 即使这样本段代码在高并发也有问题。此处演示作用// 修剪Redis列表使其长度为timesredisTemplate.opsForList().trim(redisKey, 0, times - 1);throw new RuntimeException(qps refuse request);}MapString, Object map new HashMap();map.put(success, success);return map;}模拟消费 Component Slf4j public class SchedulerTask {Autowiredprivate StringRedisTemplate redisTemplate;Scheduled(cron */5 * * * * ?)private void process() {//一次性消费两个log.info(正在消费。。。。。。);String redisKey qpsList;redisTemplate.opsForList().trim(redisKey, 2, -1);}}测试 令牌桶算法 令牌桶和漏桶法是一样的。只不过将桶的作用方向改变了一下。漏桶的出水速度是恒定的如果流量突然增加的话我们就只能拒绝入池但是令牌桶是将令牌放入桶中我们知道正常情况下令牌就是一串字符当桶满了就拒绝令牌的入池但是面对高流量的时候正常加上我们的超时时间就留下足够长的时间生产及消费令牌了。这样就尽可能的不会造成请求的拒绝最后不论是对于令牌桶拿不到令牌被拒绝还是漏桶的水满了溢出都是为了保证大部分流量的正常使用而牺牲掉了少部分流量 实现 // 令牌桶算法GetMapping(/startLingpaitong)public MapString, Object startLingpaitong(MapString, Object paramMap) {String redisKey lingpaitong;String token redisTemplate.opsForList().leftPop(redisKey);//正常情况需要验证是否合法防止篡改if (StringUtils.isEmpty(token)) {throw new RuntimeException(令牌桶拒绝);}MapString, Object map new HashMap();map.put(success, success);return map;}

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

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

相关文章

网站开发开源软件织梦网站修改教程视频

前面我们讲完了Python的基础语法、基本的数据类型以及各种数据类型间的转换。现在可以进行Python的基础知识的逐步详解学习了。下面我们开始讲解Python基础知识:运算符。 在Python中,运算符是用于执行各种操作的符号,它们可以对数字、字符串…

网站设计与制作软件envato wordpress toolkit

最近公司要制作个文档库,直接就可以将jekyll应用到实际中。 模版使用了Jekyll Clean,这么模版相对内部简单一点,学习成本不会很大,而复杂的Minimal Mistakes就当作参考。 模版使用的CSS是Bootstrap v3.2.0版本的。为了省时点&…

做标签网站邀请码wordpress删除媒体库

如果使用了 https 协议,那么在建立 tcp 连接之后,还会进行 tls 握手。也就是 https 的证书验证和密钥传输的过程。简化的流程如下: 客户端发送请求服务端返回证书客户端验证证书,提取公钥,生成对称加密的密钥&#xf…

网站改版引导做网络销售怎么建立网站

导读:如何撰写出满意的大学本科计算机论文是现在很多人都为之苦恼的问题之一,而论文的撰写也并非易事,必定是需要花费很多心思和汗水的,本论文分类为大学计算机论文,下面是小编为大家整理的几篇大学本科计算机论文范文…

网站 建设可行性报告网站被收录后又被提出了

Java精品项目源码第61期垃圾分类科普平台(代号V061) 大家好,小辰今天给大家介绍一个垃圾分类科普平台,演示视频公众号(小辰哥的Java)对号查询观看即可 文章目录 Java精品项目源码第61期垃圾分类科普平台(代号V061)难度指数&…

电脑当服务器做网站阿里巴巴国际贸易网

目录 1.初始化项目2.配置跨域3.开始编写API3.1准备3.2路由处理函数router_make下的user.js3.3路由模块router下的user.js3.4入口文件app.js里面去新增这段代码3.5启动项目进行测试 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你…

phpcms 怎么做视频网站首页html网站源码

传统的计算快速傅里叶变换的Cooley-Tukey算法效率极高,因其主要由蝶形运算构成,所以代码形式也非常简单,只是需要将输入或者输出按照位反转的方式重新排序。这个重新排序的步骤并不是必须的。Clive Temperton于1991年在Self-Sorting In-Place…

企业网站建设有哪些书籍app网站建设工作师

需求是这样的,从一个表读取数据,然后每次执行创建一个新表将值写入 读取这个表 写入到这个表 分别对应的是e、h列数据,代码如下: import pandas as pd import openpyxl import datetime dfpd.read_excel(rC:\Users\admin\Deskt…

网站建设协议书 保密条款方维网络科技有限公司

pycharm 官网 JetBrains: 软件开发者和团队的必备工具 python 官网 Python Release Python 3.11.5 | Python.org 软件安装 因为python需要借助pycharm所以需要安装 下边截图是重要的部分 pycharm python 终端安装 然后进行全局配置 打开pycahrm 可以在扩展里边搜索中…

郑州建站时间网页升级请记住新域名

汇编语言应该是我们如今学的最“低级”的语言了,由于如今不会再有人去学机器语言了。而汇编语言还在一些硬件或者嵌入式设备上使用并开发着。下面资料是为了大学的汇编考试整理的资料,如今与大家分享,希望能给大家提供帮助。 汇编语言程序设计…

公司网站后台如何上传视频外贸营销方式有哪些

预祝大家2011农历新年快乐,宏“兔”大展,心想事成~ 又是一年新年到,预祝大家2011农历新年快乐,宏“兔”大展,心想事成~ _____________________________________________________ 以下是附带的……

服务器网站扩容 一年1G价格网站建设可以自己弄吗知乎

DL/T1578-2021电力线路多旋翼无人机巡检系 DL/T 1578—2021标准的发布和实施对于架空电力线路的巡检工作具有里程碑式的意义。它不仅填补了多旋翼无人机巡检系统在行业标准方面的空白,还为电力行业提供了一套完整、科学的测试和评估方法。这将有助于提高架空电力线…

卖普洱茶做网站凡科客户通

我们作为用户是操作客户端的,所以对于客户端的代理就是正向的。牢记,我们是正向的,我们是正向的,我们是正向的。 正向代理和反向代理都是网络中常见的代理服务类型,它们在网络通信中的角色和功能有所不同。 正向代理&…

免费网站建设教程视频建设营销网站的目的

前端打包工具之Webpack5 什么是打包工具打包工具的作用常见的打包工具一、Webpack1、什么是[webpack](https://webpack.docschina.org/concepts/)2、webpack本身的功能是有限的3、webpack基本使用:基于本身功能只解析JS资源4、webpack配置4.1、entry(入口…

成都网站优化排名推广百度的网站建设代码

文章目录 管道 概念 要点 举例 环境变量 查看 修改 常用环境变量 常用命令 系统状况 文件权限 文件检索 查看文件内容 用户相关 其他工具 安装软件 附录 Linux权限 本节课讲解的是管道,环境变量,以及常用命令 管道 概念 管道类似文…

网站建设后期维护方案做网站要学什么

设计模式设计出来就是为了让后期维护代码更容易,增加代码的强壮性等好处! 策略模式 自己的理解:定义一个算法族,分别分装起来,使他们能互相替换且算法的变换与使用算法的对象相互独立。简单来说是将变化的和不变得分离,对接口编程…

网站安全建设方案前言大沥网站建设

文|萧箫 发自 凹非寺源|量子位要说Transformer的核心亮点,当然是注意力机制了。但现在,一篇新研究却突然提出了带点火药味的观点:注意力机制对于预训练Transformer有多重要,这事儿得打个问号。研究人员来自…

怎么做360网站排名二手交易网站开发方式

android交叉编译pidstat iostat mpstat 文章目录 android交叉编译pidstat iostat mpstat编译环境编译工具下载 编译过程编译环境系统环境NDK版本的选择 源码下载只编译简单的pidstat mpstat iostat编译编译脚本问题 使用技术支持 编译环境 编译工具下载 参考这个:…

建设教育协会培训网站网站开发的教学课程

语雀原文链接 文章目录 1、计算机组成1-1、主板1-2、接口卡1-3、存储器(内存) 2、存储器2-1、存储器的重要性2-2、物理存储器2-3、逻辑存储器2-4、内存地址空间的分段2-5、存储单元2-6、指令和数据 3、总线3-1、三类总线3-2、CPU读数据例子3-3、CPU写数…

怎么做淘宝客网站网站开发php制作

Java语言中的访问权限修饰符有4种,但是仅有3个关键字,因为不写访问权限,在Java中被称为默认权限,或同包权限,本文中以(default)代替。下面按照权限从小到大的顺序对4中访问权限分别介绍。class我个人,我有很…