IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Rate Limiting

共 6 篇相关文章

IT 累计浏览 3,169

限流系统如何发现系统的热点

这篇讲的是如何利用限流系统的内部机制,来解决一个棘手的实际问题:如何在海量调用参数中,实时发现系统热点。 作者从热点的两个核心挑战出发:一是如何在海量参数中只保留最可能成为热点的记录,二是如何在分布式集群中高效汇总统计信息。文章的核心方案巧妙地结合了两种技术:用ConcurrentLinkedHashMap(一种LRU缓存结构)控制内存,仅保存近期访问量最高的参数;同时利用限流系统已有的动态滑动窗口算法,计算这些参数在短时间内的平滑QPS。 对于分布式统计,文章利用了限流系统自身暴露的QPS端口作为数据采集点,并通过多线程任务队列进行快速合并,使得在千台机器规模的集群上也能在数秒内获得结果。最终的性能数据表明,该方案在日常机器上可达到29万的吞吐量,内存消耗可控,有效解决了实时热点发现与系统性能之间的平衡问题。

IT 累计浏览 4,505

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

这篇讲的是高并发系统限流中的两个经典算法——漏桶与令牌桶的核心差异和适用场景。文章以大促流量为背景,引出限流对系统稳定性的必要性。 漏桶算法被形象地比喻为一个底部有孔的桶,它强制数据以固定速率流出,哪怕输入流量是突发的,它也能起到削峰填谷、强行平滑流量的作用。 而令牌桶则不同,它以固定速率向桶中放置令牌,请求需要消耗令牌才能通过。文章特别指出,令牌桶允许桶内积累一定数量的令牌,因此能较好地应对突发流量,在平均限流的同时保留了灵活性。文中也提到了Guava的RateLimiter,其SmoothBursty实现正是令牌桶的优化,能积攒令牌应对短时高峰,而SmoothWarmingUp则实现了漏桶式的预热限流。 作者通过对比明确了二者的本质区别:漏桶强在“恒定速率”,令牌桶强在“允许突发”。选择哪种算法,关键取决于你的业务流量是需要严格平滑,还是需要在平均速率约束下应对可预测的突发。

IT 累计浏览 2,906

对爬虫的限制

这篇讲的是开发者在资源受限的云平台上,如何应对爬虫造成的流量激增问题。作者起初将文件迁移到七牛云存储后,发现一天就消耗了2GB流量,远超预期。分析SAE应用日志后发现,大量请求来自搜索引擎爬虫。 为了解决这个问题,作者采取了一系列递进式的应对措施。首先用robots.txt屏蔽了如AhrefsBot、Ezooms等国外爬虫。在robots规则生效前,通过SAE的应用防火墙直接屏蔽具体IP地址,或者更高效地封禁整个IP段。此外,还利用config.yaml的配置,实现了对特定目录的访问控制,并将未遵守规则的爬虫引导至robots.txt。对于单个PHP文件,则编写了简单的代码检测User-Agent并返回空白页。 最终,这些措施有效遏制了爬虫对服务器资源的过度消耗,文章末尾的SAE输出流量图也直观展示了问题解决后的平稳状态。整个过程体现了从问题发现、日志分析到多手段综合处置的典型排查思路。

IT 累计浏览 2,768

关于两种限流模式

这篇讲的是高并发系统中两种主流的限流模式:滑窗模式与响应模式。滑窗模式是“事后统计”,通过检查过去多个单位时间窗口内的请求总量是否超标来决定是否放行。它的实现像一个环形计数器数组,逻辑直观,但阈值设定依赖经验或压测,且可能因单位时间请求分布不均导致“先松后紧”。文章指出,它更适合作为对单一资源(如数据库、特定API)的刚性保护承诺。 而响应模式则是一种“实时反馈”策略,它只关心当前正在处理的请求数。文章巧妙地指出了限流的根本目的——是保护系统资源不被拖垮。由于系统容量会受GC、依赖抖动等动态因素影响,响应模式通过公式(QPS/1000*RT)动态计算最大并发数,让限流阈值能随系统实际承载能力自动调整,展现了更强的适应性。 文章最后对比了二者的实现思路:滑窗模式基于数组和环形队列记录历史计数;响应模式则仅需一个原子计数器跟踪活跃请求数。这为在确定性资源保护和自适应系统保护两种场景下的选型提供了清晰的技术参考。

IT 累计浏览 7,069

腾讯后台开发技术总监浅谈过载保护 小心雪崩效应

这篇文章围绕系统架构中的一个经典但易被忽视的致命风险——过载与雪崩——展开讨论。作者从后台开发技术总监的实践视角出发,没有纠结于具体代码实现,而是直接点出了一个至关重要的设计原则:任何系统都存在处理能力的极限,而确保系统在极限附近的安全运行,是技术人员必须承担的核心责任。 文章的核心观点在于,“自我保护”机制不是可选项,而是系统架构的刚需。作者用“雪球”和“雪崩”的生动比喻,形象地阐述了缺乏过载保护的后果:一个局部的、短暂的超载,如果没有被及时识别和隔离,会像滚雪球一样消耗所有资源,最终导致整个系统的连锁崩溃。这比单一的故障排查更进了一层,是从系统韧性和宏观设计层面提出的要求。 对于技术人员而言,这篇内容的启发在于,它提醒我们不能仅满足于功能实现,必须将“限流”、“熔断”、“降级”等过载保护策略作为系统设计的内置基因。文章强调,对系统极限的认知和保护能力,是衡量一个后台团队技术成熟度的关键标尺,能帮助读者在构建高可用服务时,提前构筑起防止系统崩溃的防火墙。

IT 累计浏览 3,964

squid对源网站进行限速

这篇讲的是作者用 Squid 的 delay_pools 功能对源站访问进行限速的实践。测试结果显示这个配置非常好用,能有效控制对上游网站的请求速度。 squid 的 delay_pools 通过流量池机制,可以精细地分配和控制带宽。作者将这个功能应用在了出站(源站)访问上,而不是常见的客户端下载限速。这个思路在特定场景下很有价值,比如防止自身爬虫或代理请求过快地压垮上游服务器,或是在共享代理环境中公平分配对外的连接资源。文章简洁地展示了配置思路和实测的良好效果。 对于需要管理 Squid 出站流量的运维或架构人员,这是一个直接且有效的解决方案参考。