随着分布式微服务的发展,系统正在慢慢的变复杂,一个普通的应用也可能依赖了很多其他的服务。在没明确强弱依赖关系的前提下,系统很难进行限流降级、优化改造等操作。强弱依赖治理是通过科学的手段持续稳定地得到应用间依赖关系、流量、强弱等数据,提前发现因为依赖问题可能会引起的故障,避免依赖故障影响使用者真实的体验,积累数据持续推进系统稳定性提升。
异常发生时,不影响核心业务流程,不影响系统可用性的依赖称作弱依赖,反之为强依赖。
发生故障的时候,将导致业务流程无法推进,会出现类似如下的说明,严重影响使用者真实的体验。
等系统出现故障的时候,将导致商品详情页部分内容加载不全,出现如下图的情况,但核心业务流程仍可继续推进,用户体验并未受到太多影响。
通过以上对比能够准确的看出,当下游依赖出现一些明显的异常问题时,当前系统会受到一些影响,严重影响使用者真实的体验的是强依赖,影响较小的则是弱依赖。
强弱依赖治理就是提前发现因为依赖问题可能会引起的故障,避免依赖故障影响使用者真实的体验,积累数据持续推进系统稳定性提升。
强弱依赖模型,包含依赖关系、流量、强弱。依赖治理是通过科学的手段持续稳定地拿到应用间依赖关系、流量、强弱等数据,将此数据用于系统改造、故障决策等场景。
系统改造验收:对于分布式系统,至少在运行态中,不会因为依赖的系统后台发生故障,引起当前应用出现系统级可用性的故障,例如进程挂掉、频繁FullGC、负载飙高等,何时何地都应具备快速止血的能力。
限流降级参考:对于弱依赖,一般都要配置限流或是自动降级策略。比起通过经验值来设定限流值,还是通过实际的依赖验证来进行微调更为可靠。例如对于下游出现的超时情况,就能够最终靠实验得出基于线程池限流的数据。
应用启动顺序:理想情况下,应用启动更应该做到零强依赖启动,但真实的情况是没办法做到零强依赖。因此应用启动的依赖顺序也需要实时关注,特别是新IDC、机房建站时,会有着蜘蛛网一样的依赖关系,此时最好是通过系统方式获得依赖顺序。
故障根源定位:后台系统的故障,往往通过上一级的业务故障反映出来。故障处理讲究的是争分夺秒,良好的强弱依赖,对于系统自动化诊断有非常大的助力作用。
依赖容量评估:正常调用链路下的系统容量需要评估。例如当某个弱依赖挂掉时,必须要格外注意整体的容量是否有变化。