Skip to content

Latest commit

 

History

History
71 lines (36 loc) · 3.99 KB

File metadata and controls

71 lines (36 loc) · 3.99 KB

集群容错模式(机制)

参考 dubbo 的集群容错模式,共六种。

Failover:故障转移

失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟

Fail-Over 意思是“故障转移,失败自动切换”,是一种备份操作模式。

它的主要思路是:主要组件出现异常时,将其功能转移到具有同样功能的备份组件上。

要点在于有主有备,且主发生故障时,可将备切换为主。比如 HDFS 的双 NameNode,当 Active NameNode 出现故障时,可以启用 Standby NameNode 来继续提供服务。

失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟

Fail-Fast:快速失败

快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

快速识别,就是只发起一次调用,失败后立即报错。

这用来尽可能早地发现系统中的错误,使系统能够按照事先设定好的错误流程执行,也就是“fault-tolerant(错误容忍)”。

以 Java 集合(Collection)的快速失败为例,当多个线程同时操作同一个集合中的元素时,就可能发生 Fail-Fast 事件。

再具体点:当线程 A 通过迭代器遍历某集合的时候,其他线程刚好修改了该集合中的元素,这时线程 A 还在访问此集合,就会抛出 ConcurrentModificationException 异常,产生 Fail-Fast 事件。

这里的并发修改异常,就是 发现错误时执行设定好的错误。

Fail-Back:失效自动恢复

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

Fail-Back,就是在故障转移(Fail-Over)之后,发生故障的服务/机器 能够自动恢复。

比如:在后台记录失败请求,定时重发;

又如:在多台服务器互联的网络中,如果要维修某台服务器,需要把服务(或网络资源)暂时重定向到备用系统。维修结束后,再将服务(或网络资源)恢复为 由原来维修的主机提供 的过程,称为自动恢复。

Fail-Safe:失效安全

失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

出现异常时,直接忽略。可以认为,即使发生了故障,也不会对系统/服务造成伤害,或尽量减少伤害。

比如:红绿灯 - Traffic light 中,对红绿灯的“冲突监测”的示例:

如果冲突监控器检测到错误或冲突的信号时,交通信号灯将进入闪烁模式。

该信号可能会向主要道路显示呈琥珀色闪烁,向人行道路呈红色闪烁,或在所有方向上呈红色闪烁,也可以在交通不畅的白天使用闪光操作 —— 而不是全部显示为绿灯。

Forking:并行调用多个服务

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源

Broadcast:广播调用

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

广播调用所有服务,逐个调用,任意一个服务出错,则此次调用失败。

参考