Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
云计算设计模式_极客学院 PDF 下载
匿名网友发布于:2024-09-20 09:35:44
(侵权举报)
(假如点击没反应,多刷新两次就OK!)

云计算设计模式_极客学院 PDF 下载 图1

 

 

资料内容:

 

背景和问题
在分布式环境中,如在云,其中,应⽤程序执⾏访问远程资源和服
务的操作,有可能对这些操作的失败是由于瞬时故障,如慢的⽹络
连接,超时,或者被过度使⽤的资源或暂时不可⽤。这些故障⼀般
之后的短时间内纠正⾃⼰,和⼀个强⼤的云应⽤应该准备使⽤的策
略来处理它们,例如,通过重试模式进⾏说明。
但是,也可以是其中的故障是由于那些不容易预⻅的突发事件的情
况下,这可能需要更⻓的时间来纠正。这些故障从连接的部分损失
到服务的完整的故障范围的严重程度。在这种情况下,它可能是毫
⽆意义的应⽤,不断重试执⾏的操作是不太可能成功,⽽不是应⽤
程序应该很快接受该操作已失败,并相应地处理这个故障。
此外,如果⼀个服务是⾮常繁忙的,在系统中的⼀个部分出现故障
可能会导致连锁故障。例如,调⽤⼀个服务的操作可被配置成实现
⼀个超时,如果该服务⽆法在这段时间内响应⼀个失败消息答复。
然⽽,这⼀策略可能导致许多并发请求的相同的操作,直到超时时
段期满被阻⽌。这些被禁⽌的请求可能会持有关键系统资源,如内
存,线程,数据库连接等。因此,这些资源可能会耗尽,从⽽导致
该系统的其他可能⽆关的部件,需要使⽤相同的资源的失败。在这
些情况下,这将是优选的操作⽴即失败,并且只尝试调⽤服务,如
果它是可能成功。注意,设置⼀个较短的超时可能有助于解决此问
题,但在超时不应该如此之短,以致操作失败的⼤部分时间,即使
该请求到服务最终会成功。
 
解决⽅案
该断路器图案可以防⽌⼀个应⽤程序多次试图执⾏⼀个操作,即很
可能失败,允许它继续⽽不等待故障恢复或者浪费 CPU 周期,⽽它
确定该故障是持久的。断路器模式也使应⽤程序能够检测故障是否
已经解决。如果问题似乎已经得到纠正,应⽤程序可以尝试调⽤操
作。
 
注意
断路器图案的⽬的是从该重试模式的不同。重试模式使应⽤程序可
以重试操作以期望它会成功。断路器图案防⽌应⽤程序执⾏⼀个操
作,即很可能失败。⼀个应⽤程序可以通过使⽤重试模式,通过⼀
个断路器调⽤操作结合这两种模式。然⽽,在重试逻辑应该是由断
路器返回任何异常敏感和放弃重试次数,如果断路器指⽰故障不是
瞬时的。
断路器充当可能失败操作的代理。代理应监测最近发⽣的故障数
量,然后使⽤这个信息来决定是否允许该操作继续进⾏,或简单地
⽴即返回⼀个异常。
代理可以被实现为状态机与模拟的电路断路器的功能如下状态:
关闭:从应⽤程序的请求是通过对操作进⾏路由。代理保持最近的
失败次数的计数,并且如果该呼叫到操作不成功,则代理递增该计
数。如果最近的失败次数超过了⼀个给定时间周期内的规定的阈值
时,该代理将被置于打开状态。在这⼀点上的代理启动⼀个超时定
时器,当该定时器期满的代理放置到半开放状态。