Dubbo常用配置内容

多版本支持

版本号会在解析配置文件的时候,把版本拼接到url后面

<dubbo:service interface="com.lyf.dubbo.IHello"
                   ref="demoService" protocol="dubbo" version="1.0.1"
    timeout="100"/>

主机绑定

1.NetUtils.isInvalidLocalHost(host), 从配置文件中获取host
2.host = InetAddress.getLocalHost().getHostAddress();
3.Socket socket = new Socket();
try {
    SocketAddress addr = new InetSocketAddress(registryURL.getHost(), registryURL.getPort());
    socket.connect(addr, 1000);
    host = socket.getLocalAddress().getHostAddress();
    break;
} finally {
    try {
        socket.close();
    } catch (Throwable e) {}
}
4.public static String getLocalHost(){
	InetAddress address = getLocalAddress();
	return address == null?LOCALHOST:address.getHostAddress();
} 

容错机制

  1. failsafe 失败安全,可以认为是把错误吞掉(记录日志)
  2. failover(默认)   重试其他服务器; retries(2)
  3. failfast 快速失败, 失败以后立马报错
  4. failback  失败后自动恢复。
  5. forking  forks. 设置并行数
  6. broadcast  广播,任意一台报错,则执行的方法报错
<dubbo:reference id="demoService"
                     interface="com.lyf.dubbo.IHello"
                     registry="zookeeper"
                     cluster="failsafe"/>

服务降级

dubbo的降级方式: Mock

实现步骤

  1. 在client端创建一个TestMock类,实现对应IHello的接口(需要对哪个接口进行mock,就实现哪个),名称必须以Mock结尾
  2. 在client端的xml配置文件中,添加如下配置,增加一个mock属性指向创建的TestMock
  3. 模拟错误(设置timeout),模拟超时异常,运行测试代码即可访问到TestMock这个类。当服务端故障解除以后,调用过程将恢复正常
<dubbo:reference id="demoService"
                     interface="com.gupaoedu.dubbo.IHello"
                     registry="zookeeper"
                     mock="com.lyf.dubbo.TestMock"/>

配置优先级别

  • 以timeout为例,显示了配置的查找顺序,其它retries, loadbalance等类似。
  1. 方法级优先,接口级次之,全局配置再次之。
  2. 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过URL经由注册中心传递给消费方。

  • 建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值