熔断是什么?
我们为什么要熔断?
熔断有什么好处?
让我们带着问题去边看边解答,这样的效果可能会好一些
首先,现阶段最火的话题是微服务,分布式等等。
微服务又是什么?(分布式现在先不说)
我比较官方的解释是:指开发一个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或者多个服务器上。再就是编程更新的最最最基本的原则就是,让编码变得更加方便,所以想也不用想--解耦合。
不官方的解释微服务就是:微服务是系统架构上的一种设计风格,就是原来的项目要改的话就要改动很多的地方,为了解决这种麻烦,就将一个原本独立运行的系统拆分成多个小型服务,这些小型服务都在各自独立的进程种运行,每个服务需要用到另外一个微服务就进行调用。
接下来就是熔断了
熔断是什么?或者说什么是熔断?
上面咱们也说了,微服务如果想使用的话,就进行调用。而一个程序,不可能只是一个调用另一个这么简单。比如我们购物,首先我们看到这个商品,就要先加入购物车,这需要调用加入购物车的微服务,然后进行购买,就要调用商品的微服务,用户的微服务等等等等。正常工作是没问题,万一发生异常了,或者某个服务宕机或者网络有延迟的时候会发生什么?你就会想这个微服务抛出异常,对不对?但是每个http请求都是会开启一个新的线程,随着调用越来越多的微服务,开启的线程就越多。并发量稍微多一点的情况下,突然下一个线程异常,进入阻塞住,直到Timerout,你可以想象阻塞的线程占用了多少线程。并发量多一点,机器估计就要换新了。
以上就又涉及到一个词“雪崩效应”。一开始只有一个线程阻塞住,然后挂掉。随着时间的推移,或者说随着请求的增多,机器资源耗尽,整个系统就都用不了了
以上是我个人对微服务以及熔断的理解,但是深层次的了解并不多,请大佬们不吝赐教,谢谢。