服务降级和服务熔断的区别
服务熔断是应对雪崩的效应的一种微服务链路保护机制;在spring cloud中,熔断机制通过hystrix实现,hystrix会监控微服务间调用状态,当失败到一定阈值会启动熔断机制(默认是5秒20次);熔断服务能解决如下问题:
a. 当依赖的服务不稳定时,能快速失败;
b. 快速失败后,根据一定的算法动态探测所依赖的服务是否恢复
服务降级是指服务器压力剧增的情况下,根据业务的实际情况和流量,对一些服务模块做策略性的处理,从而释放资源保证核心业务正常工作,比如双11活动时,会把无关的服务都降级;服务降级的场景主要用于当整个微服务整体负载超出了预期的上设阈值时或即将到来的流量超出上设阈值时,为了保证核心业务正常运行而使用;
自动降级分类:
a. 超时降级:需要使用异步机制探测回复情况
b. 失败次数降级:主要针对不稳定的api服务,需要使用异步机制探测回复情况
c. 故障降级:比如网络故障、dns故障引起的调用远程服务问题
d. 限流降级:秒杀或者抢购一些限购商品时,此时可能会因为访问量太大而导致系统崩溃,此时会使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级;降级后的处理方案可以是:排队页面(将用户导流到排队页面等一会重试)、无货(直接告知用户没货了)、错误页(如活动太火爆了,稍后重试)
区别:服务熔断一般是某个下游服务引起的,服务降级是从整体负荷考虑的;服务熔断是一个框架级的处理,每个微服务都需要,而降级有业务之分,比如降级一般从外围服务开始;