Web前端知识讲解:降级和限流是什么呢?
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存很多Web前端人员都了解,但降级和限流是什么呢?接下来的文章中,我就给大家简单介绍。
降级
服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒接服务,可以延迟服务,也有时候可以随机服务。根据服务范围:可以砍掉某个功能,也可以砍掉某些模块。
总之服务降级需要根据不同的业务需求采用不同的降级策略。主要的目的就是服务虽然有损但是总比没有好。
限流
限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的。
一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。
常见的限流算法有:计数器、漏桶和令牌桶算法。
采用计数器实现限流有点简单粗暴,一般我们会限制一段时间能够通过的请求数,比如访问量限流(通过限制单位时间段内调用量来限流);并发量限流(通过限制系统的并发调用程度来限流)。
漏桶算法即leaky bucket是一种非常常用的限流算法,可以用来实现流量整形(Traffic Shaping)和流量控制(Traffic Policing)。漏桶算法比较好实现,在单机系统中可以使用队列来实现,在分布式环境中消息中间件或者Redis都是可选的方案。
令牌桶算法是一个存放固定容量令牌(token)的桶,按照固定速率往桶里添加令牌。令牌桶可以在运行时控制和调整数据处理的速率,处理某时的突发流量。
以上只是对降级和限流的定义讲解,了解其具体算法你可以关注我,后面定期发布热门技术和求职分析。