在开发高并发系统时,如何来保护系统呢?
(1)缓存:缓存简单理解就是把从数据库查询出来的数据,存放到缓存系统上,比如Memcached或者redis,然后下次再来获取的时候,直接从缓存中进行获取。缓存的目的是提升系统访问速度和增大系统处理容量。
(2)降级:降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。
(3)限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。简单理解就是在1秒之内有1000个请求(流量)来了,而系统只能处理100个/秒,那么这时候明显是无法处理过来的,很显然就会导致系统瘫痪了,那么对于这个请求流量,我们可以做一个限制,配置最多可接受的请求是100个/秒,多出来的请求,怎么办呢,那就限制住,直接返回一个提示,当前请求人数过多,请稍后再试,这就是限流(限制在某个时间窗口的最大流量)。
常用的限流算法
一、计数器算法原理
计数器法是限流算法里最简单也是最容易实现的一种算法,一般我们会限制一秒钟能够通过的请求数。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候, counter就加1,如果counter的值大于100并且该请求