持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
现在大部分公司都是使用git来管理代码的,我今天分享一下我们司后端代码的git管理流程吧。
服务限流是什么
每台服务器的数据处理能力都是有限的,为了访问量不超出服务器的处理能力,我们有各种预防措施,例如熔断降级,服务限流等等。在服务器入口处设置一个门卫负责把控服务器的流量,控制请求数量,保障服务器的稳定性。
限流的方法
我们现在有一些常用的限流算法:计数法,滑动窗口计数法,漏桶算法和令牌桶算法。
计数器算法
控制单位时间内的请求数。
- 优点:实现简单。
- 缺点:只有设置的单位时间足够小才能实现好的限流效果,如果我第一分钟的69秒请求了60次,第二分钟的第一秒又请求了60次那就达不到理想的限流效果了。
滑动窗口计数法
这种方法是计数器算法的改良版。就是在单位时间的基础上增加一个时间粒度的度量单位,把刚刚的一分钟分为10份,每份6秒,每份都有独立的计数器,每过6秒,窗口就会向右移动一格,如果时间窗口内所有的计数器之和超过了限流阈值,就会限流。
- 优点:弥补了计数器的不足,不会出现计数器算法那种问题。当第一分钟的59秒请求了59次,第二分钟的第1秒最多只能请求1次,因为在同一个滑动窗口的总和不能超过60。
- 缺点:如果在某一份中就把限流阈值用完了,在滑动窗口还包含着这份期间都不能接收请求。
令牌桶算法
放置一定数量的令牌在令牌桶,这个数量就是限流阈值。然后每个请求过来都要从令牌桶中获取一个令牌才能通过,系统则会按一定的速率往令牌桶中投放令牌,当桶内令牌满后就丢弃令牌。
1.优点:可以控制请求的TPS,还可以应对突发流量。
2.缺点:令牌桶算法是以一个恒定的速率发放令牌,达到阀值不再继续发放,如果在短时间内一批请求进来,可能会出现有的请求拿不到令牌,即触发了限流。
漏桶算法
一个固定容量的桶,有水流进来,也有水流出去。对于流进来的水来说,我们无法预计一共有多少水会流进来,也无法预计水流的速度。但是对于流出去的水来说,这个桶可以固定水流出的速率。而且,当桶满了之后,多余的水将会溢出。当使用了漏桶算法,我们可以保证接口会以一个常速速率来处理请求。
1.优点:请求的TPS比较均匀。
2.缺点:不能很好应对突发的流量情况。
谢谢观看! streetlamp 敬上!