降级种类:
1、 根据降级的开关位置:分为服务代码降级和开关前置降级。
代码降级就是利用代码控制,这种方式比前置降级要low并不推荐
前置降级是把降级开关放到http请求链路层的上游,降低链路层消耗。比如提升到nginx,甚至可以提升到前端,当提升到前端,后端访问压力接近于0
2、 根据读写:分为读降级和写降级。
读降级,比如,读取动态数据,降级为读取静态数据。
写降级,比如,写入mysql,降级为写入消息队列, 等高峰期过后,在从队列写入mysql。
3、 根据降级的性质:分为返回内容降级,限流降级,限速降级。
返回内容降级,比如,返回实时数据,降级为返回兜底数据
限流降级,比如,1000个请求,我只接受500个。 这么做也是无奈之下选择,要不然系统崩了 谁都访问不了
限速降级,比如,对于那些访问过于频繁的ip进行限速
【限流限速】
nginx 自带限流限速模块,比如ngx_http_limit_req_module和ngx_http_limit_conn_module 。但是这类模块只是提供了在nginx配置文件中进行简单的参数配置。
4、根据降级的维护特点:分为手动降级和自动降级。
手动降级,是人为看到系统负载异常后,手动调整降级
自动降级,是系统监测到异常后,自动降级,自动降级虽然更加智能,但有时候自动脚本可能会干一些超乎预料的事情。
实现降级流程(nginx+lua+redis实现降级)