服务容错的背景,解决方案以及Sentinel的基本使用
服务容错的背景:
在微服务架构中,我们的业务是拆分成一个一个的单体服务,一个服务调用另一个服务时,请求不断发送,如果出现网络波动或者故障,延迟处理,请求就会不断堆积,最终可能造成系统的瘫痪,经典案例就是服务雪崩。
服务雪崩:
在分布式系统中,由于网络原因或自身的原因,服务一般无法保证100%可用,单个实例故障时,处理请求缓慢或者没有响应,导致上层调用它的服务实例也变慢,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这种由单个服务引发的级联故障称为服务雪崩。
造成雪崩原因可以归结为以下三个:
1,服务提供者不可用(硬件故障,程序bug,缓存击穿,用户大量请求)
2,重试加大流量(用户重试,代码逻辑重试)
3,服务调用者不可用(同步等待造成的资源耗尽)
常见的服务容错模式:
1.超时:
在上游服务调用下游服务时,设置一个最大响应时间,如果超过这个时间,下游未作出反应,就断开请求,释放掉线程。
2.隔离:
将系统中的服务按照一定规则进行划分隔离ÿ