覆盖关系

下图展示了配置覆盖关系的优先级,从上到下优先级依次降低

启动时检查

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"
可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。
另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,
如果 check="false",总是会返回引用,当服务恢复时,能自动连上。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  8. http://dubbo.apache.org/schema/dubbo
  9. http://dubbo.apache.org/schema/dubbo/dubbo.xsd
  10. http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd">
  11.  
  12. <context:component-scan base-package="com.cr.service.impl"></context:component-scan>
  13. <!-- 、指定当前服务/应用的名字(同样的服务名字,不要和别的服务同名 -->
  14. <dubbo:application name="user-order-consumer"></dubbo:application>
  15.  
  16. <!-- 、指定注册中心的位置 -->
  17. <dubbo:registry address="zookeeper://127.0.0.1:2181" />
  18.  
  19. <!-- 、声明 需要调用的远程服务接口:生成远程服务代理-->
  20. <!-- userService注册到容器中 -->
  21. <dubbo:reference interface="com.cr.service.UserService" id="userService" check="false"/>
  22.  
  23. <!-- 监控中心 -->
  24. <dubbo:monitor protocol="registry"></dubbo:monitor>
  25.  
  26. </beans>

如果服务较多时  均需要同意进行设置,会比较麻烦此时可以使用一个标签进行对整体服务设置
关闭所有服务的启动时检查 (没有提供者时报错):
  1. <!-- 配置当前消费者的同意规则:所有的服务都不检查 -->
  2. <dubbo:consumer check="false"></dubbo:consumer>

注意:不仅可以配置服务启动时检查还可以配置注册中心启动时检查

  <dubbo:consumer>

超时设置

服务消费方在使用服务提供方提供的服务时,如果遇到延迟等问题
会有大量的线程阻塞,可能会引起性能下降
超时设置在指定的时间内没有返回就立即终止

1、对于服务提供方的代码进行睡眠4秒中

  1. public class UserServiceImpl implements UserService {
  2. @Override
  3. public List<UserAddress> getUserAddressList(String userId) {
  4. UserAddress address1 = new UserAddress(, "安徽合肥蜀山区", "", "程老师", "否", "");
  5. UserAddress address2 = new UserAddress(, "安徽合肥包河区", "", "程老师", "否", "");
  6. List<UserAddress> list = new ArrayList<UserAddress>();
  7. list.add(address2);
  8. list.add(address1);
  9. try {
  10. Thread.sleep();
  11. } catch (InterruptedException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  15. return list;
  16. }
  17. }
消费方不进行超时配置
 
看结果打印:
  1. log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
  2. log4j:WARN Please initialize the log4j system properly.
  3. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  4. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  5. SLF4J: Defaulting to no-operation (NOP) logger implementation
  6. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  7. com.alibaba.dubbo.common.bytecode.proxy0@704deff2
  8. 用户id
  9. Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
    getUserAddressList in the service com.cr.service.UserService. Tried 3 times of the providers
    [169.254.77.19:20080] (1/1) from the registry 127.0.0.1:2181 on the consumer 169.254.77.19
  10.  
  11. using the dubbo version 2.6.2. Last error is: Invoke remote method timeout. method:
    getUserAddressList, provider: d
    ubbo://169.254.77.19:20080/com.cr.service.UserService?anyhost=true&application=user-order-consumer&check=false&default.check=false&dubbo=2.6.2&generic=false&interface=com.cr.service.UserService&methods=getUserAddressList&monitor=dubbo%3A%2F%2F127.0.0.1%3A2181%2Fcom.alibaba.dubbo.regi

此时的超时没有进行配置,可知其有默认值

可知默认值是一秒

可以理解在线程阻塞的时间内,超时等待5秒

  1. <dubbo:reference interface="com.cr.service.UserService" id="userService" timeout=""/>

此时的等待时间大于线程休眠时间(5s > 4s)

同理服务较多时可以使用dubbo:consumer 进行配置
  1. <dubbo:consumer check="false" timeout=""></dubbo:consumer>

此时需要考虑两个配置同时配置的优先级

http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html

(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,

如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)

精确到方法!!!

  1. <dubbo:reference interface="com.cr.service.UserService" id="userService" timeout="5000">
  2. <dubbo:method name="getUserAddressList" timeout="2000"></dubbo:method>
  3. </dubbo:reference>

此时时方法的配置生效  时间为2000ms

统一提供

6、Dubbo-配置(1)的更多相关文章

  1. Dubbo配置方式详解

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次 ...

  2. DUBBO配置规则详解

    研究DUBBO也已经大半年了,对它的大部分源码进行了分析,以及对它的内部机制有了比较深入的了解,以及各个模块的实现.DUBBO包含很多内容,如果想了解DUBBO第一步就是启动它,从而可以很好的使用它, ...

  3. [转载,感觉写的非常详细]DUBBO配置方式详解

    [转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供 ...

  4. dubbo配置清单-超详细版

    服务发布者 在服务发布者的springboot主配置文件application.properties中添加dubbo配置 #dubbo服务名 spring.dubbo.application.name ...

  5. dubbo配置约束

    此处主要记录dubbo配置的一些约束规则. 采用官网提供的原文,描述如下: 一.XML配置(官网原文) 以 timeout 为例: 方法级优先,接口级次之,全局配置再次之. 如果级别一样,则消费方优先 ...

  6. dubbo配置指南

    dubbo配置指南 SLA配置在此完成!Service Layer Agreement ApplicationConfig 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者. Regist ...

  7. Dubbo配置注册中心设置application的name使用驼峰命名法存在的隐藏项目启动异常问题

    原创/朱季谦 首先,先提一个建议,在SpringBoot+Dubbo项目中,Dubbo配置注册中心设置的application命名name的值,最好使用xxx-xxx-xxx这样格式的,避免随便使用驼 ...

  8. 10 Dubbo 配置实战

    Dubbo 配置实战 快速入门 dubbo 建议看这篇文章是在学习了快速入门 dubbo 那篇文章的基础上来学习 配置说明 文档地址 https://dubbo.apache.org/zh/index ...

  9. dubbo 配置解析

    1.dubbo 常用配置 <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心.eg.<dub ...

  10. dubbo配置

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

随机推荐

  1. nodejs使用sequelize操作mysql实例

    sequelize是node操作mysql的一款npm包,包含很多特性:数据库模型映射.事务处理.模型属性校验.关联映射等,花了两天时间学习了下基本的一些操作,特别是关联映射部分的操作,包含1:1.1 ...

  2. 经典SQL分页语句

    select top pageSize, * from (SELECT row_number() over(order by id desc) as rownumber,*FROM tb1) A wh ...

  3. [javaSE] IO流(递归查找指定文件)

    递归方法,实现查找目录中以.java为后缀的文件路径,并存入文本文件中 定义一个静态方法fileToLine(),传入参数:File对象目录,List集合对象(List<File> 这样做 ...

  4. gRPC的简单Go例子

    gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发 ...

  5. DLL文件

    Dll文件的全称是Dynamic Link Library,中文意思为动态链接库,DLL文件是不可执行文件,其是一个包含由多个程序同时使用的代码和数据的库,动态链接提供了一种方法,使进程可以调用不属于 ...

  6. 第一天-python基础

    每一个今天的坚持都会改变明天的自己! 一.python介绍 python是一门由解释型.弱类型的高级开发编程语言,由龟叔于1989圣诞开发出,后经过二十多年的发展,因其简洁高效的特点而被广泛使用,在世 ...

  7. BZOJ1021 [SHOI2008]循环的债务

    Description Alice.Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有一天,他们决定坐下来一起解决这个问题. 不过,鉴别钞票的真伪是一件很麻烦的事情,于是他们决定要在清还债务 ...

  8. redhat系统下三种主要的软件包安装方法

    1. 通过RPM软件包来安装 RPM(Redhat Package Management)标准的软件包,只需简单地输入命令“rpm -ivh filename.rpm”即可: 如果需要对已经安装的RP ...

  9. HTTP(S)网络框架的设计

    0.麻烦 操作系统提供的网络接口都会令人不爽,要么太接近底层而使用不便,要么层次过高又不提供底层点的接口供设置参数.但是我们不能期望系统API做得很高级,因为没有绝对合适的网络库,必须定制化从而达到适 ...

  10. 获取JPEGImageEncoder和JPEGCode这两个类

    最近要对PDF做一些操作,在查看别人代码,拿过来借用的时候,由于代码不完整,引用的类也不全,导致JPEGImageEncoder和JPEGCode这两个类找不到,后来网上搜索了下,发现这两个类来自于J ...