在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。
限流是系统高可用的一种手段,对业务没有任何帮助,它唯一的作用就是让系统变的更加高可用!
常规的限流算法使用漏桶法和令牌桶进行限流!
漏桶法:

请求就好像水管滴水一样,来一个请求就是一滴水,流量进来之后不会马上去访问各种业务,先把请求保存到桶里进行记录,最后以一个固定的频率把桶里待执行的请求 一个个的执行!先把所有的请求加入到队列,系统保证一个个的请求往下走,从而保证瞬间大流量把系统冲垮!

令牌法:每个进来的请求都会获取到一个令牌!当我桶里没有令牌的时候要么等待要么反回!
漏桶法;流速是固定的 令牌桶:流速不固定,对业务峰值是有承载能力的
建议使用 谷歌的 RateLimiter 来实现令牌桶
网友评论