dubbo降级服务    
dubbo开发中,通常是微服务架构,那么在使用过程中可能会遇到多种问题:

1)多个服务之间可能由于服务没有启动或者网络不通,调用中会出现远程调用失败;

2) 服务请求过大,需要停止部分服务以保证核心业务的正常运行;

以上两个问题可以使用Dubbo的服务降级来实现;
即:在服务宕掉或者并发数太高导致的RpcException异常时,进行友好的处理或者提示,而不是内部报错导致系统不可用。

解决方法:
dubbo提供了mock配置,可以很好的实现dubbo服务降级,
mock主要有两种配置方式,

第1种
在远程调用异常时,服务端直接返回一个固定的字符串(也就是写死的字符串)
具体配置:
在服务调用方配置mock参数:
<dubbo:reference id="xxxService" interface="com.x..service.xxxxService" check="false" mock="return 123456..." />

说明:配置了mock参数之后,假设在调用服务的时候,远程服务没有启动,或者各种网络异常了,那远程服务会把这个mock配置的值返回,也就是会返回123456...
通过这种方式就可以避免了因为服务调用不了而出现异常错误而带来的程序不可用(起码是有值返回的,然后可以根据值进行业务逻辑处理判断等等)。
注:除了配置mock参数之外,其它地方不用变。

第2种
在远程调用异常时,服务端根据自定义mock业务处理类进行返回)
具体配置:
在服务调用方配置mock参数:
<dubbo:reference id="xxxService" interface="com.x..service.xxxxService" check="false" mock="true" />

说明:配置了mock参数之后,假设在调用服务的时候,远程服务没有启动,或者各种网络异常了,那远程服务会去寻找自定义的mock业务处理类进行业务处理。
因此还需配置一个自定义mock业务处理类
在接口服务xxxxService的目录下创建相应的mock业务处理类,同时实现业务接口xxxxService(),接口名要注意命名规范:接口名+Mock后缀,mock实现需要保证有无参的构造方法。
public class xxxxServiceMock implements xxxxService {
    @Override
    public String getXXXX(int id) {
        return "this is exception 自定义....";
    }
}
配置完成后,此时如果调用失败会调用自定义的Mock业务实现。
注:除了以上两处之外,其它地方不用变。

管理界面手动配置:

以上的配置其实除了在代码中配置之外,还可以在dubb-adming管理界面直接手动配置:

分别是屏蔽和容错:

屏蔽:force.mock (即:屏蔽请求,直接返回某个值,如上面的字符串,mock="return 123456...");

容错:fail.mock  (即:允许请求,在请求失败的时候,再返回某个值,如:mock="fail:return 123456...");

Dubbo服务降级设置的更多相关文章

  1. dubbo服务降级(2)

    dubbo降级服务 使用dubbo在进行服务调用时,可能由于各种原因(服务器宕机/网络超时/并发数太高等),调用中就会出现RpcException,调用失败. 服务降级就是指在由于非业务异常导致的服务 ...

  2. dubbo服务降级(1)

    1. 在 dubbo 管理控制台配置服务降级 上图的配置含义是:consumer 调用 com.zhang.HelloService 的方法时,直接返回 null,不发起远程调用. 实际操作是:在 z ...

  3. 13.1 dubbo服务降级源码解析

    从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: //代理发出请求 proxy0.sayHello(String paramString) -->InvokerInvoc ...

  4. Dubbo服务降级

    当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或简单处理,从而释放服务器资源以保证核心业务正常运作或高效运作. 可以通过服务降级功能临时屏蔽某个出错的非关键服务并定义 ...

  5. Dubbo 服务降级,失败重试怎么做?

    可以通过 dubbo:reference 中设置 mock="return null".mock 的值也可以修 改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名 ...

  6. (万字好文)Dubbo服务熔断与降级的深入讲解&代码实战

    原文链接:(万字好文)Dubbo服务熔断与降级的深入讲解&代码实战 一.Dubbo服务降级实战 1 mock 机制 谈到服务降级,Dubbo 本身就提供了服务降级的机制:而 Dubbo 的服务 ...

  7. dubbo熔断,限流,服务降级

    1 写在前面 1.1 名词解释 consumer表示服务调用方 provider标示服务提供方,dubbo里面一般就这么讲. 下面的A调用B服务,一般是泛指调用B服务里面的一个接口. 1.2 拓扑图 ...

  8. 5.如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?

    作者:中华石杉 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如果问你,其实就是看看你有没有服务治理的思想,因为这个是做过复杂微服务的 ...

  9. 分布式的几件小事(六)dubbo如何做服务治理、服务降级以及重试

    1.服务治理 服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的. ①调用链路自动生成 一个大型的分布式系统,会由大量的服务组成,那么这些服务之间的依赖关系和调用链路会很复杂, ...

随机推荐

  1. 关于"引用"的几点说明

    一.引用的基本知识 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.引用的声明方法:类型标识符 &引用名=目标变量名: 说明: (1)&在此不是求地址运算,而 ...

  2. 除掉inline-block 间距

    1.现象: <!doctype html> <html lang="en"> <head> <meta charset="UTF ...

  3. openerp 7.0 来自外部的邮件会发送二次问题解决方法

    插入代码:\addons\mail\mail_mail.py #309 line this = self.pool.get('res.users').browse(cr, uid, uid, cont ...

  4. 【面试笔试】Java常见面试笔试总结

    Java 基础 1.有哪些数据类型 Java定义了8种简单类型:byte.short.int.long.char.float.double和boolean. 2.面向对象的语言特征 封装.继承.多态 ...

  5. java中的Checked Exception和Unchecked Exception的区别

    Java 定义了两种异常: - Checked exception: 继承自 Exception 类是 checked exception.代码需要处理 API 抛出的 checked excepti ...

  6. Java API 各个包的内容解释

    java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类. java.awt 包含用于创建用户界面和绘制图形图像的所有类. java.awt. ...

  7. Oracle LISTENER 主机名修改为IP地址后LISTENER无法监听到实例 oracle监听错误与hosts文件配置

    为什么listener.ora文件里面HOST后面到底应该输入IP地址还是主机名.我的经验告诉我,这边最好使用主机名.很多的时候,一个机器绑定的不只一个IP地址,如HOST后面是IP地址,那么ORAC ...

  8. scanf/sscanf %[]格式控制串的用法(转)

    scanf/sscanf %[]格式控制串的用法 scanf中一种很少见但很有用的转换字符:[...]和[ ^...]. #include<stdio.h> int main() { ch ...

  9. HDUOJ--------Text Reverse

      Text Reverse Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  10. C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...