高并发系统中有三把利器用来保护系统:缓存、降级和限流。限流的目的是为了保护系统不被大量的请求冲垮,通过限制请求的速度来保护系统。限流的方式有多种,可以在nginx层面限流,也可以在应用当中限流,比如在API网关中。
降级
在高并发系统中,当网络请求的并发量比较大,系统的负载高的时候可以采用服务降级的方式,关闭一些不常用的功能来提高系统负载分担能力。
举例:
可以通过API网关,加ZuulFilter的方式,对请求的服务ID进行匹配,如果当前获取的配置中对该服务ID进行了服务降级操作,则对当前的请求进行阻断,反之则继续转发下去。
限流
在高并发系统的,网络的负载请求是有度的,可以通过对请求的并发数据进行限制来达到限流的操作。限流可以在API网关上实现,也可以在具体的服务端进行限流。一般来说都是在具体的服务端进行限流,因为所有的请求都会走API网关,如果在API处分析所有的请求,则可能会因为API网关处的请求处理能力的限制导致整个系统中卡顿和带宽限制。服务的限流一般都只在特定时间内只允许一定数量的请求。
举例:
比如在一秒内只允许请求1000次,在服务的具体的接口方法上加限流的注解,系统初始化时对所有的controller包进行解析,将带有限流的注解存入到map中,同时加切面处理逻辑,当对所有到限流注解的方法,先从redis中取当前时间戳中请求的数量,如果没有则初始化当前时间戳的key,value为0;有则value加一,接着与配置的最大请求数据进行比较,没超过则继续处理请求,超过则阻断请求;
服务限流
最新推荐文章于 2024-03-19 11:00:23 发布