Dubbo的集群容错机制&消费者降级&提供者限流策略

一、集群容错机制
1、常用的集群容错机制:
1.1、Failover 失败自动切换
        当出现失败,重试其它服务器,通常用于读操作(推荐使用)。 重试会带来更长延迟。
1.2、Failfast  快速失败
        只发起一次调用,失败立即报错,通常用于非幂等性的写操作。 如果有机器正在重启,可能会出现调用失败 。
1.3、Failsafe 失败安全
        出现异常时,直接忽略,通常用于写入审计日志等操作。 调用信息丢失 可用于生产环境 Monitor。
1.4、Failback  失败自动恢复
        后台记录失败请求,定时重发。通常用于消息通知操作 不可靠,重启丢失。 可用于生产环境 Registry。
1.5、Forking  并行调用多个服务器
        只要一个成功即返回,通常用于实时性要求较高的读操作。 需要浪费更多服务资源   。
1.6、Broadcast 
        广播调用,所有提供逐个调用,任意一台报错则报错。通常用于更新提供方本地状态速度慢,任意一台报错则报错 。 

2、容错机制的配置:
<dubbo:reference cluster="failfast" />
@DubboReference(version = "1.0.0", client="failover")
3、默认的容错机制:
"failover"
4、源码参考:
org.apache.dubbo.rpc.cluster.Cluster

二、消费者降级策略

1、分类:

1.1、无 Mock

        只调用真正的 invoker 的 #invoke(invocation)方法,发起 RPC 调用,即不进行 Mock 逻辑。
1.2、"mock" 配置项以 "force" 开头

        强制服务降级。直接调用 #doMockInvoke(invocation, null) 方法,调用Mock Invoker ,执行本地 Mock 逻辑。
1.3、服务失败服务降级

        先调用真正的invoker#invoke(invocation)方法,发起 RPC 调用,当发生RpcException异常且为业务性异常时,直接抛出异常。如果不是业务性异常,调用#doMockInvoke(invocation, null) 方法,调用 Mock Invoker ,执行本地 Mock 逻辑。

2、降级策略的配置:
<dubbo:reference cluster="failfast" mock="com.alibaba.dubbo.demo.DemoServiceImplMock"/>
@DubboReference(version = "1.0.0", mock="com.alibaba.dubbo.demo.DemoServiceImplMock")

3、默认的降级策略:
        无 Mock
4、源码参考:

        org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker

二、提供者限流策略

1、分类:

1.1、CachedThreadPool
        缓存线程池,空闲一分钟自动删除,需要时重建
1.2、EagerThreadPool
        优先创建Worker线程池。在任务数量大于corePoolSize但是小于maximumPoolSize时,优先创建Worker来处理任务。当任务数量大于maximumPoolSize时,将任务放入阻塞队列中。阻塞队列充满时抛出RejectedExecutionException。
1.3、FixedThreadPool
        固定大小线程池,启动时建立线程,不关闭,一直持有。
1.4、LimitedThreadPool
        可伸缩线程池,但池中的线程数只会增长不会收缩。只增长不收缩的目的是为了避免收缩时突然来了大流量引起的性能问题。

2、限流策略的配置:
<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />

3、默认的限流策略:
        fixed线程池200个大小
4、源码参考:

        org.apache.dubbo.common.threadpool.ThreadPool

       org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值