• Dubbo服务降级设置


    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...");

  • 相关阅读:
    【CITE】C# 如何 实现一个窗体和另一个窗体始终保持相对的位置
    【CITE】5个最优秀的Java和C#代码转换工具
    【EasyX】RGB to Gray
    【Problem solved】发现输入法都是仅桌面使用,无法输入中文时
    【Problem solved】 error C2665: “loadimage”: 2 个重载中没有一个可以转换所有参数类型
    Software Engineering Training in 2016 summer: snake
    hello world!
    数组名和指针
    取得一个给定的地址所存放的值,将给定值存放在给定地址
    搭建hadoop集群 单机版
  • 原文地址:https://www.cnblogs.com/tiancai/p/9627205.html
Copyright © 2020-2023  润新知