1、缓存
目的:提升访问速度,增大处理容量。
常见:
(1)分布式缓存:redis、memcahed
(2)内存缓存:ehcache
2、降级
服务器出现问题,或者高流量影响到主要业务流程,影响性能。降级的意思就是 暂时屏蔽某些功能,等高流量过去之后,再恢复被屏蔽的功能。
服务熔断:为了防止服务器过载,采取保护措施。
服务降级:把某些功能屏蔽。
3、限流
目的:对并发访问进行限速或者一个时间内同一个窗口进行限速来保证系统的可用性,如果达到限制速率则拒绝服务。
对用户访问进行限流,例如:100w人抢购10w台小米,那么最终只要10w可以抢到,所以让10w可以进入抢购页面,剩下90w人拦截在外面,定向指向排队页面。(经常会看到,您前面有多少人在排队。)
常见限流策略:
(1)设置最大线程数
(2)在入口层面进行处理:通过nginx反向代理,对相同请求(同一个IP的同一个请求)设置顺时并发连接数(例如1000次,如果超过,就屏蔽掉,不把请求转发到后端)
(3)限制时间窗口内调用速率,运用消息队列、nginx
常用限流算法:
计数器:
窗口滑动协议:弥补计数器
漏桶:
令牌桶:解决突发流量:RateLimiter(java.util.concurrent)