Dubbo 服务集群容错配置

Dubbo集群容错是靠配置cluster属性来做

支持改属性的标签为<dubbo:service>,<dubbo:referece>,<dubbo:consumer>,<dubbo:provider>

但是后两个粒度太粗,一般不采用

该属性是可选的,默认值是failover

以下是各种可选值及其含义:

1.failover 失败自动切换 (缺省值)

当出现失败时,重试其他服务器. 通常用于读操作, 但切换其他机器重试会带来更长延迟 .所以可通过retries="2"来设置重试次数 (不含第一次),retries了这么多次之后,如果还是失败,再返回失败.    实例: 有5台服务器,  在retries=2的情况下,  消费者调用A机失败, 接着重试B机, 然后又重试C机, 最后返回失败. 为了避免长延迟,可以将该值配置为0, 也就是失败马上返回,不去尝试其他机器

为什么说这种方式通常用于读操作,而不是写操作. 因为用在写操作,可能为导致重复写

 <dubbo:service cluster="failback" retries="2"/> 或者 <dubbo:reference cluster="failback" retries="2"/>

2.failfast 快速失败

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

非幂等性的含义是,无论发起多少次请求,最后的结果都是一样的

3.failsafe

失败安全,出现异常时,直接忽略。

通常用于写入审计日志等操作

4.failback 

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

<dubbo:service cluster="failback"/> 或者 <dubbo:reference cluster="failback"/>

一般不用 ,可能监控中心这类应用用

5.forking

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

可通过forks="2" 来设置最大并行数

<dubbo:service cluster="forking" forks="2"/> 或者 <dubbo:reference cluster="forking" forks="2"/>

6.broadcast

广播调用所有提供者,逐个调用,任意一台报错则报错。(2.1.0开始支持)

通常用于通知所有提供者更新缓存或日志等本地资源信息。

原文地址:https://www.cnblogs.com/heben/p/7887664.html