dubbo——集群容错

本文解析了Dubbo服务调用过程,包括Invoker、Directory、Cluster、Router及LoadBalance组件的作用,并详细介绍了五种容错模式:FaukiverCluster、FailfastCluster、FailsafeCluster、ForkingCluster与BroadcastCluster的特点及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考dubbo官方文档,加上自己的理解由来: dubbo官网


一、图解
1.左侧invoker为抽象的可调用Service,它内部封装了Provider地址和Service接口信息。
2.Directory:各种invoker,值在动态变化的。
3.Cluster:根据所选择的模式在2中将那么多invoker伪装成1,若失败,可重试另外一个invoker。
4.Router: 根据不同的路由规则(条件路由或脚本路由)筛选invoker,例如读写分离、应用隔离。——详细看  路由规则
5.LoadBalance:在4筛选后,根据负载均衡算法选出实际的一个具体invoker调用,若失败,则重新选择。——详细看 负载均衡

综合上述:
1.调用方:
Cluster(根据调用模式)->Invoker(内部筛选,到具体一个Invoker)->调通服务
2.内部筛选逻辑:
Directory(原本总的invoker)->Router(路由一次筛选)->LoadBalance(负载均衡选)->Invoker(实际上被调用的Invoker)

二、容错模式:
1.Faukiver Cluster(默认缺省):
  • 失败就自动切换,重试其他服务器.
  • 用于读操作,可重试会带来延迟
  • 通过retries=“2”来设置重试次数(不含第一次)
2.Failfast Cluster
  • 快速失败,只发起一次调用,失败立刻报错。——报错最好捕获,方便自身后续分析
  • 用于非幂等性的写操作,比如新增记录
3.Failsafe Cluster
  • 失败自动回复,后台记录失败请求,定时重发。——避免陷入服务器宕机,不断失败,不断定时重发
  • 通常用作消息通知操作
4.Forking Cluster
  • 并行调用多个服务器,成功一个即返回
  • 用于实时性高的读操作,但需要浪费更多服务资源。—— 典型的 性能和硬件 之争,协调好二者,本人还是比较推荐这个模式的。
  • 可通过forks=“2”设置最大的并行数
5.Broadcast Cluster
  • 广播所有提供者,逐一调用,任意一台报错则报错
  • 用于通知各个提供者更新缓存或日志等本地资源

附:
集群模式配置:


<dubbo:service cluster="failsafe" /> 或<dubbo:reference cluster="failsafe" />


重试次数配置:
<dubbo:serviceretries="2"/> <dubbo:reference retries="2" />
< dubbo:reference >
     < dubbo:method name = "findFoo" retries = "2" />
</ dubbo:reference >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值