当用户请求 A、P、H、I 四个服务获取数据时,在正常流量下系统稳定运行,如果某天系统进来大量流量,其中服务 I 出现 CPU、内存占用过高等问题,结果导致服务 I 出现延迟、响应过慢,随着请求的持续增加,服务 I 承受不住压力导致内部错误或资源耗尽,一直不响应,此时更糟糕的是其他服务对 I 有依赖,那么这些依赖 I 的服务一直等待 I 的响应,也会出现请求堆积、资源占用,慢慢扩散到所有微服务,引发雪崩效应。 基本的容错模式常见的容错模式主要包含以下几种方式: 1.主动超时:Http请求主动设置一个超时时间,超时就直接返回,不会造成服务堆积 2.限流:限制最大并发数 3.熔断:当错误数超过阈值时快速失败,不调用后端服务,同时隔一定时间放几个请求去重试后端服务是否能正常调用,如果成功则关闭熔断状态,失败则继续快速失败,直接返回。(此处有个重试,重试就是弹性恢复的能力) 4.隔离:把每个依赖或调用的服务都隔离开来,防止级联失败引起整体服务不可用 5.降级:服务失败或异常后,返回指定的默认信息
|