服务器容错之舱壁隔离(Bulkhead Isolation)

在软件架构中借鉴造船行业中的舱壁隔离设计,当某部分服务不可用的时候,造成的影响不会造成系统的崩溃,避免出现雪崩效应。

在Hystrix中,使用线程池和信号量来实现这一模式。(下图为:Hystric提供的隔离模型)



 

使用线程池隔离的实现:在访问依赖服务时,如果出现失败,Hystrix会创建线程池来处理这类服务;在服务可用时,即恢复正常,线程池被销毁。

使用线程池隔离的原因:由于依赖服务多;每个服务变化;经常出现某些属性配置错误,可以修改动态参数来恢复正常;客户端的调用一般是同步的。

使用线程池隔离的优势:依赖服务出现问题,不会引起系统其它模块出现问题;线程池可以动态监听和反馈出现问题的服务,为动态配置和修复提供了基础。

使用线程池隔离的劣势:创建线程池,需要加大系统的开销;线程池的排队,Schedule, Context Switch也会增大系统的开销。根据Hystrix团队的测试,他们认为这个代价与其带来的好处, 这个是可以完全接受。Netflix在实际使用中也优先选择该方案。

猜你喜欢

转载自tiangaopp.iteye.com/blog/2391217