首先先了解一下雪崩问题:
如何避免因服务故障引起的雪崩问题?
-
超时处理:
- 我们会给业务设置超时时间,如果一个业务执行时超过了这个时间还是没有给出响应,我们就立即释放资源,返回异常信息,从而避免无休止的等待导致资源耗尽,避免雪崩
-
线程隔离:
- 将每一个服务隔离开,设置单独一个线程池,这样呢,一旦一个业务出现了故障,它也只是把这一个线程池里的资源耗尽,而不会导致整个tomcat资源耗尽
-
降级熔断:
- 我们会去统计一个业务的正常请求和异常请求的比例,如果异常请求的比例过高,我们会认为,这个请求或业务会比较危险,我们就可以阻止这个业务的请求,快速失败,释放资源,从而避免雪崩问题发生。在这个业务恢复正常以后,我才会放心访问这个业务的请求
服务保护技术对比
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html
Sentinel 具有以下特征:
•丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
•完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
•广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
•完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。