说明:整个架构学习总结是建立在李运华老师的课程之上。
接口故障是指机器并没有停机,网络也正常。但业务出现问题,比如响应缓慢,超时等异常。这种问题一般都是服务器压力过大导致的。
解决方案:
1.降级
就是停掉一些非核心的业务功能。例如双11的时候,订单数量不显示。不支持售后服务等。保证核心功能的使用。
2.熔断
熔断和降级的区别:
2.1.降级针对的是应对自身系统故障。
2.2.熔断是应对外部系统故障情况。例如果A系统的X功能依赖B系统的接口,但B系统接口执行缓慢导致A系统的大量线程被卡住,A系统将会挂掉。处理方式就是当A系统的X功能有调用B系统接口前直接返回错误,不进行调用。
熔断机制实现关键就是有一个统一的API调用层,由API调用层来进行采样分析。接口调用散落在代码的各处就没法处理。
限流:
基于请求的限流:简单来说就是单位时间内允许的请求数量。
基于资源的限流:是从系统内部资源考虑的,常见的内部资源有:连接数,文件句炳,线程数,请求队列等。
例如使用队列接收请求,当超过队列大小时直接拒绝后面的请求。
排队:想想12306就明白了
由于排队需要临时缓存大量的业务请求(夯住请求不直接不响应)。所以一般都需要独立的消息队列系统缓存。