Dubbo集群容错策略有哪些?

2 个回答

  • 赵若冰
    不能击败我的,会让我变得更强大。
    1. **Failover Cluster 模式**: - **策略**:在调用失败后自动切换到其他服务提供者进行重试。 - **说明**:适用于读操作,默认重试次数为 2 次,可以手动设置重试次数。对于写操作,建议将重试次数设置为 0。 ```yaml cluster: failover retries: 2 # 设置重试次数 ``` 2. **Failback 模式**: - **策略**:调用失败后,返回一个空结果给服务消费者,并通过定时任务对失败的调用进行重试。 - **说明**:适用于消息通知等操作,不要求立即成功。 ```yaml cluster: failback ``` 3. **Failfast Cluster 模式**: - **策略**:快速失败,只进行一次调用,失败后立即抛出异常。 - **说明**:适用于幂等操作、写操作,类似于 Failover Cluster 模式中将重试次数设置为 0 的情况。 ```yaml cluster: failfast ``` 4. **Failsafe Cluster 模式**: - **策略**:失败安全,当调用过程中出现异常时,仅会打印异常,而不会抛出异常。 - **说明**:适用于写入审计日志等操作,不影响主流程。 ```yaml cluster: failsafe ``` 5. **Forking Cluster 模式**: - **策略**:并行调用多个服务器,只要一个成功即返回。 - **说明**:通常用于实时性要求较高的读操作,但需要浪费更多的服务资源。可以通过 `forks` 参数设置最大并行数。 ```yaml cluster: forking forks: 2 # 设置最大并行数 ``` 6. **Broadcast Cluster 模式**: - **策略**:广播调用所有提供者,逐个调用,任意一台报错则报错。 - **说明**:通常用于通知所有提供者更新缓存或日志等本地资源信息。 ```yaml cluster: broadcast ``` ## 详细示例 ### 配置方式 可以在 Dubbo 的配置文件中设置全局的容错策略,也可以在服务或方法级别上进行设置。 #### 全局配置 ```xml <dubbo:consumer cluster="failover" retries="2" /> ``` #### 服务级别配置 ```xml <dubbo:service interface="com.example.DemoService" cluster="failfast" /> ``` #### 方法级别配置 ```xml <dubbo:reference interface="com.example.DemoService"> <dubbo:method name="sayHello" cluster="forking" forks="3" /> </dubbo:reference> ``` ### YAML 配置 在 Spring Boot 项目中使用 YAML 配置: ```yaml dubbo: consumer: cluster: failover retries: 2 references: demoService: interface: com.example.DemoService cluster: failfast methods: - name: sayHello cluster: forking forks: 3 ``` 通过上述配置,你可以根据具体的应用场景和需求选择合适的容错策略,以优化服务的可靠性和稳定性。
    发布于 2022-07-07 17:17 •IP属地 四川
    举报
    评论
    收藏

  • 野狐狸
    慢慢理解世界,慢慢更新自己。
    ### 1. failover cluster failover cluster,失败自动切换,自动重试其他机器,常见于读操作(默认配置)。 可以通过以下几种方式配置重试次数: ``` <dubbo:service retries="2" /> ``` ### 2. failfast cluster failfast cluster,一次调用失败就立即失败,常见于非幂等性的写操作,比如新增一条记录(调用失败就立即失败)。 ### 3. failsafe cluster failsafe cluster,出现异常时忽略掉,常用于不重要的接口调用,比如记录日志。 配置示例如下: ``` <dubbo:service cluster="failsafe" /> 或者 <dubbo:reference cluster="failsafe" /> ``` ### 4. failback cluster failback cluster,失败了后台自动记录请求,然后定时重发,比较适合于写消息队列这种。 ### 5. forking cluster forking cluster,并行调用多个 provider,只要一个成功就立即返回。常用于实时性要求比较高的读操作,但是会浪费更多的服务资源,可通过forks="2"来设置最大并行数。 ### 6. broadcacst cluster broadcacst cluster,逐个调用所有的 provider,任何一个provider出错则报错(从2.1.0 版本开始支持),通常用于通知所有提供者更新缓存或日志等本地资源信息。
    发布于 2022-03-08 13:57 •IP属地 湖北
    举报
    评论
    收藏