相信很多人都见过这张图,这张图说明了提供者与消费者之间的关系,下面就介绍一下这个图是什么意思。

1.角色解释:
  Provider: 暴露服务的服务提供者。
  Consumer: 调用远程服务的服务消费者。
  Registry: 服务注册与发现的注册中心。
  Monitor: 统计服务的调用次调和调用时间的监控中心。
  Container: 服务运行容器。
 
2.调用关系流程:  

  a.服务容器负责启动,加载,运行服务提供者。
    b.服务提供者在启动时,向注册中心注册自己提供的服务。
  c.服务消费者在启动时,向注册中心订阅自己所需的服务。
  d.注册中心给消费者返回服务提供者地址列表,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  e. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  f.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

3.dubbo超时与重试机制:

  如果没有设置dubbo超时时间,那么dubbo会采用默认超时时间即1000ms。dubbo重试机制 retires 默认为2次。timeout 和 retire 的 优先级别如下图:

  

  在dubbo的provider和consumer的配置文件中,如果都配置了timeout的超时时间,dubbo默认采用consumer的配置为准

  我在开发的时候,dubbo超时设置是设置在消费方的,这个根据不同的业务场景可自行配置设置。

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="${dubbo.application.name}" owner="dengw" />
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" timeout="${dubbo.zookeeper.timeout}" register="true"/>
<dubbo:monitor protocol="registry" />
<dubbo:protocol port="${dubbo.protocol.port}"/> <!-- *****************************生产者***************************** -->
<dubbo:service ref="orderContractYmt" interface="com.ibank.order.api.OrderContract" protocol="dubbo" />
<dubbo:service ref="callBackContractYmt" interface="com.ibank.order.api.CallBackContract" protocol="dubbo" />
<dubbo:service ref="repayListContractYmt" interface="com.ibank.order.api.RepayListContract" protocol="dubbo" />
<dubbo:service ref="auditingOrderContractYmt" interface="com.ibank.order.api.AuditingOrderContract" protocol="dubbo" />
<dubbo:service ref="testStatusContractYmt" interface="com.ibank.order.api.TestStatusContract" protocol="dubbo" />
<dubbo:service ref="orderInfoContractYmt" interface="com.ibank.order.api.OrderInfoServiceContract" protocol="dubbo" /> <!--*****************************消费者***************************** --> <dubbo:reference id="appProductContractYmt" interface="com.ibank.product.api.AppProductContract" timeout="1000000" check="false" />
<dubbo:reference id="userBankContractYmt" interface="com.ibank.user.api.UserBankContract" timeout="1000000" check="false" />
<dubbo:reference id="userIdentityContractYmt" interface="com.ibank.user.api.UserIdentityContract" timeout="1000000" check="false" />
<dubbo:reference id="userAccountContractYmt" interface="com.ibank.user.api.UserAccountContract" timeout="1000000" check="false" />
<dubbo:reference id="userAccountContractNyd" interface="com.nyd.user.api.UserAccountContract" timeout="1000000" check="false" />
<dubbo:reference id="userStepContractYmt" interface="com.ibank.user.api.UserStepContract" timeout="1000000" check="false" />
<dubbo:reference id="userContactContractYmt" interface="com.ibank.user.api.UserContactContract" timeout="1000000" check="false" />
<dubbo:reference id="sendSmsServiceYmt" interface="com.ibank.msg.service.ISendSmsService" timeout="1000000" check="false" />
<dubbo:reference id="beiaiContractYmt" interface="com.ibank.user.api.BeiAiContract" timeout="1000000" check="false" />
<dubbo:reference id="couponContractYmt" interface="com.ibank.activity.api.CouponContract" timeout="1000000" check="false" />
<dubbo:reference id="userIdentityContract" interface="com.nyd.user.api.UserInfoContract" timeout="1000000" check="false" />
<dubbo:reference id="UserStepContract" interface="com.nyd.user.api.UserStepContract" timeout="1000000" check="false" />
<dubbo:reference id="orderContract" interface="com.nyd.order.api.OrderContract" timeout="1000000" check="false" /> </beans>

o4.最后跟大家分享一个面试题:

  面试题:Dubbo中zookeeper做注册中心,如果注册中心集群全都挂掉,发布者和订阅者之间还能通信么?

  可以的,消费者在启动时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用,倒是无法从注册中心去同步最新的服务列表,短期的注册中心挂掉是不要紧的,但一定要尽快修复。

 
 

dubbo---------timeout与retires的更多相关文章

  1. Dubbo(2)--Dubbo常用配置文件解析及核心源码阅读

    1.多版本支持 服务端 创建第二个接口实现类 package com.lf; public class HelloImpl2 implements IHello{ @Override public S ...

  2. dubbo学习笔记(一)超时与重试

    dubbo提供在provider和consumer端,都提供了超时(timeout)和重试(retries)的参数配置. 配置方式 provider端在<dubbo:service>中配置 ...

  3. 分布式框架Dubbo入门

    Dubbo简介 Dubbo是一个Alibaba开源额分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.dubbo就是个服务框架,只有在分布式的时候,才有dubb ...

  4. dubbo 调用服务超时

    先贴出错误报告: Failed to invoke the method *** in the service ***. Tried times of the providers [] (/) on ...

  5. 初识dubbo

    1. 为什么需要 Dubbo(摘自http://dubbo.apache.org/zh-cn/docs/user/quick-start.html) 随着互联网的发展,网站应用的规模不断扩大,常规的垂 ...

  6. dubbo.provider和dubbo.consumer配置

    Configure service provider <?xml version="1.0" encoding="UTF-8"?> <bean ...

  7. batchGetAnchorLevel(dubbo接口)

    一.编写脚本前的准备工作 1.安装idea,安装本地maven库,并在idea里面配置maven 2.导入git源码(目的在于下载所依赖的基础包)-->File-new-Project from ...

  8. dubbo注册zookeeper保错原因

    我的zookeeper是安装在本地,用的默认端口2181,版本3.4.10.dubbo版本2.5.8.dubbo-demo-provider.xml配置文件修改为:<dubbo:registry ...

  9. spring-boot系列:(一)整合dubbo

    spring-boot-2整合dubbo 新框架学习,必须上手干.书读百遍,其义自见. 本文主要介绍spring-boot-2整合dubbo,使用xml配置实现一个provider和consumer. ...

随机推荐

  1. 【BZOJ1122】[POI2008] 账本BBB

    →传送门← 正解: 贪心加单调队列优化 先粘贴一张别人写的被老师发下来给我们的题解(就是看着这张题解才写出来的) 下面是自己的话(一些具体操作过程): 把环拆成一条2*n的链,然后用优先队列来求出每一 ...

  2. C语言提高代码效率的几种方法

    一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难.因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中.本文向 ...

  3. ZOJ 4019 Schrödinger's Knapsack (from The 18th Zhejiang University Programming Contest Sponsored by TuSimple)

    题意: 第一类物品的价值为k1,第二类物品价值为k2,背包的体积是 c ,第一类物品有n 个,每个体积为S11,S12,S13,S14.....S1n ; 第二类物品有 m 个,每个体积为 S21,S ...

  4. 寻找Windows下MySQL的错误日志

    https://blog.csdn.net/dreamcs/article/details/53502625

  5. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  6. ios调用Html内JS alert 不能点击关闭为甚?

    ios调用Html内JS alert 不能点击关闭为甚? This question gave me the most insight to the problem... Deadlock with ...

  7. Xilinx FPGA结构

    FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越 ...

  8. JS 一个页面关闭多个页面

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  9. hihoCoder #1080 : 更为复杂的买卖房屋姿势 (线段树,多tag)

    题意: 有编号为0~n的n+1个房屋,给出每个房屋的起始价格,随后给出m种修改,每次修改都要进行输出所有房屋的价格总和.修改有两种方式:(1)政府调控,编号L~R全置为同一价格(0)房屋自行涨跌,编号 ...

  10. 洛谷 P1376 机器工厂

    题目描述 小T开办了一家机器工厂,在N(N<=10000)个星期内,原材料成本和劳动力价格不断起伏,第i周生产一台机器需要花费Ci(1<=Ci<=5000)元.若没把机器卖出去,每保 ...