能够被大规模采用是任何系统或应用程序的梦想。但随之而来的是滥用和资源过载的风险。应采取措施确保所有用户的服务质量。
上周,Twitter 就面临着这个问题。他们的解决方案?速率限制。这涉及限制用户或服务可以在系统上发出的请求数量。
虽然对于许多情况来说这确实是一种可行的解决方案,但它并不是唯一的解决方案。让我们看一下可以在任何系统中实现的其他一些替代方案。值得注意的是,这些解决方案应以防御性方式实施,以避免出现需要临时补救措施的情况。
限流
限流是一种简单的技术,可以减慢处理任务所需的时间,从而最大限度地减少资源消耗。这通常与配额或速率限制结合使用,这样用户就不会完全脱离服务,而是将服务质量降低到合理的水平。
这是互联网服务提供商为最大程度地减少高峰流量期间的带宽拥塞而采取的流行方法。类似对服务器或 API 上的请求进行限制也通常在软件系统中完成。
认证与授权
这些都是重要的安全措施,可最大限度地降低服务误用和拒绝服务攻击 (DoS) 的风险。它还有助于识别和限制机器人和抓取帐户的访问。
首先,将使用用户名和密码或更复杂的方法(例如 2FA)来验证和识别请求的用户或服务。一旦被识别,系统将确定请求者可以拥有哪些资源以及他们对系统资源的优先级(如果适用)。
验证码
验证码旨在识别人类请求者并拒绝机器人的访问。它通过在授予服务或某些功能的访问权限之前引入人类可解决的测试来实现这一点。虽然这种技术是一种流行的方法,但它对应用程序可访问性的影响是一个值得注意的考虑因素。此外,人工智能技术使得区分人类请求者和机器人变得越来越困难。
入侵检测和预防系统
此方法专门用于降低系统攻击的风险,包括监视网络流量以识别恶意活动。
入侵检测系统 (IDS) 用于警告和报告已识别的威胁,而入侵防御系统 (IPS) 旨在阻止威胁。
除了识别和阻止威胁的要求之外,防止系统过载的其他一些解决方案包括:
🔸 负载均衡:将请求分布到多个服务器上。
🔸 优先级:确保关键请求优先获得系统资源。
🔸 断路器模式:防止可能失败的任务重试。
🔸 并发限制:限制可以与系统建立的连接数或并发运行的任务数。
防止系统过载和误用需要整个团队的努力来采用防御工程。应谨慎实施上述技术,以确保合法请求不受限制。应结合使用多种策略来开发适合您系统独特用例的全系统方法。