写点什么

Dubbo 框架学习笔记十四

作者:风翱
  • 2021 年 12 月 27 日
  • 本文字数:785 字

    阅读完需:约 3 分钟

Dubbo 框架学习之集群容错:


Cluster 接口提供了我们常说的集群容错功能。


集群中的单个节点有一定概率出现一些问题,例如,磁盘损坏、系统崩溃等,导致节点无法对外提供服务,因此在分布式 RPC 框架中,必须要重视这种情况。为了避免单点故障,我们的 Provider 通常至少会部署在两台服务器上,以集群的形式对外提供服务,对于一些负载比较高的服务,则需要部署更多 Provider 来抗住流量。


在 Dubbo 中,通过 Cluster 这个接口把一组可供调用的 Provider 信息组合成为一个统一的 Invoker 供调用方进行调用。经过 Router 过滤、LoadBalance 选址之后,选中一个具体 Provider 进行调用,如果调用失败,则会按照集群的容错策略进行容错处理。


Dubbo 默认内置了若干容错策略,并且每种容错策略都有自己独特的应用场景,我们可以通过配置选择不同的容错策略。如果这些内置容错策略不能满足需求,我们还可以通过自定义容错策略进行配置。


Dubbo 中常见的容错方式有:

Failover Cluster:失败自动切换。它是 Dubbo 的默认容错机制,在请求一个 Provider 节点失败的时候,自动切换其他 Provider 节点,默认执行 3 次,适合幂等操作。当然,重试次数越多,在故障容错的时候带给 Provider 的压力就越大,在极端情况下甚至可能造成雪崩式的问题。

Failback Cluster:失败自动恢复。失败后记录到队列中,通过定时器重试。

Failfast Cluster:快速失败。请求失败后返回异常,不进行任何重试。

Failsafe Cluster:失败安全。请求失败后忽略异常,不进行任何重试。


Forking Cluster:并行调用多个 Provider 节点,只要有一个成功就返回。


Broadcast Cluster:广播多个 Provider 节点,只要有一个节点失败就失败。


Available Cluster:遍历所有的 Provider 节点,找到每一个可用的节点,就直接调用。如果没有可用的 Provider 节点,则直接抛出异常。


Mergeable Cluster:请求多个 Provider 节点并将得到的结果进行合并。

发布于: 刚刚
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
Dubbo 框架学习笔记十四