(个人理解,不喜勿喷)假如我要开发一个项目,但是开发的过程中遇到一个问题,我不会操作数据库(包括数据库连接,数据查询等),我只能向我的朋友请教,朋友A会使用Hibernate,朋友B会JDBC访问数据库,我的第一反应肯定是给A打电话,但是A的电话打不通(可能是网络问题,也可能是A的手机坏了),我的工作又不能耽误,所以我只能给B打电话去询问JDBC怎么用(这就是服务的降级,毕竟JDBC感觉没有Hibernate高大上);又一个新项目开始,遇到同样的问题,我再次给A打电话,A的电话依旧打不通,我只能再次请教B(不要问我为什么第一次用JDBC的时候没掌握怎么用,还要再次请教别人);几次项目下来,我觉得一段时间内是联系不到A了,所以当有新的地方要访问数据库时,我都是直接打电话给B(这就是熔断)。A是我朋友,失联了我不能不关心他,所以我隔段时间还要去打他电话,看是不是可以联系上,联系上之后我就可以请教怎么用Hibernate了(这就是断路器的检测并修复能力)。
服务熔断和降级的异同点
相同点:1)服务熔断和降级给我的感觉都是访问不可达
2)服务熔断和降级都是为了不耽误我的工作
不同点:服务熔断是下游服务不可用造成的;服务降级则是从整体出发,目的为了避免整个系统崩溃
上下游服务是相对而言的,一个服务需要调用另一个服务,则被调用的服务就是下游服务,调用服务的服务就是上游服务。