简介:

前提是对NIO与zookpper有一定的理解

  • 1. dubbo暴露服务过程

duboo是用NIO异步通信的(不懂NIO自己去查,就知道dubbo为什么使用NIO,而不用IO了)。provider服务启动时候,在zookeeper注册节点处理请求,将结果返回给客户端。消费者在使用的时候,主要是订阅zookpeer节点,并对zookpper进行监听,provider有变化,zookeeper会推送给调用方,调用方重新缓存服务信息。服务方,消费方,zookpper三者之间都是长连接。

  1. 2.dubbo远程调用过程
  • client发出请求之后,会生成一个请求ID,requestID(唯一的,类似UUID),dubbo默认从0开始累加
  • 将调用方法信息打包(接口名称,方法名,参数),和处理结果回调对象callback,封装在一起组成一个对象object
  • 将调用信息放到Map里面map.put(ID,object)
  • 将ID和object组成一个connrequest对象,通过异步发送出去IOsession.write(connrequest)
  • 客户端从callbakc中获取服务端返回数据,若是获取不到,就调用wait方法,使线程处于等待状态
  • 服务器端首都请求处理之后,将结果返回和ID一起返回,客户端监听线程,监听服务端数据返回的,客户端监听到数据返回之后,通过ID,获取callback,将服务端返回的数据放到callback中
  • 这时候callback中有返回数据,客户端处于等待的线程被唤醒,从callback中通过get()方法获取服务端数据,至此整个过程基本就结束了(callback每次调用都会产生一个新的,不能共享)

(欢饮评论指正)

dubbo调用原理,过程(知其然,知其所以然)相关推荐

  1. 知行合一:知其然知其所以然

    知行合一:知其然知其所以然. 一个事情做成了,并不意味着你知道做成这件事背后蕴藏的原理. 只有使用冥思.事上练的方法了,将背后的原理提取出来,才能说做到了执行合一. 这个过程是行对知的精进过程. 转载 ...

  2. 锁,知其然知其所以然

    ​ Taken by iCola 今天,从一个小问题聊起. 假设你账户上原来有100元钱,你用微信支付100元,与此同时你女票用支付宝给你转100元零花钱,你帐户的余额有没有可能变成200元或者0元? ...

  3. Vue2.0源码解析 - 知其然知其所以然之Vue.use

    前言 小伙伴们大家好.用过Vue的小伙伴都知道,在我们进行Vue开发时,避免不了会使用一些第三方的库,比如说ElementUI组件库.当我们导入好这些组件库后会执行一个Vue.use函数,然后把导进来 ...

  4. redis zset转set 反序列化失败_关于Redis中的五种数据结构,要知其然知其所以然...

    Redis作为Nosql的代表,想必大家已经再熟悉不过了,除了作为缓存来使用,Redis还提供了其他很多有用的功能,例如可作为消息队列.分布式锁.不隆过滤器.限流等功能使用.今天先来说一说redis作 ...

  5. bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然

    Redis作为Nosql的代表,想必大家已经再熟悉不过了,除了作为缓存来使用,Redis还提供了其他很多有用的功能,例如可作为消息队列.分布式锁.不隆过滤器.限流等功能使用.今天先来说一说redis作 ...

  6. Android转换位图BUG,知其然不知其所以然

    在开发某App的时候,发现了一个很奇怪的bug,前面我也发了关于bitmap的总结,但是这个问题恰恰出在BitmapFactory.decodeFile(pathName)这个函数上,使用这个函数在我 ...

  7. Vue2.0源码解析 - 知其然知其所以然之keep-alive

    前言 [一天一个小知识,每天进步一点点]小伙伴们大家好,今天将要给大家分享是Vue中关于组件缓存的一个内置组件 - keep-alive 不知道小伙伴们有没有遇到这样一种情况,在我们的项目开发中,有时 ...

  8. bool类型_Python3.7知其然知其所以然-第七章 类型转换

    使用python处理数据时,不可避免的要进行数据类型之间的转换,诸如整型和字符串之间的转换. 转换有隐式和显式转换,隐式也称自动转换,不用做特殊.显示转换,也称为数据类型的强制类型转换,通过内置函数实 ...

  9. 算出当前系统后某个月的日期_Python3.7知其然知其所以然-第十八章 日期函数

    时光不可追,往事不可回.以往创建的数据,如若没有日期做标识,不堪回首.几乎任何一个产品都会用到日期,如登录日期.创建日期.修改日期等.正因如此,编程语言中,几乎都有内置日期函数. 18.1 当前日期 ...

  10. 字符串去掉两端的引号_Python3.7知其然知其所以然-第六章 字符串

    在开发过程中,经常会用到字符串来存储字符内容.在其他编程语言中用成对双引号" "声明字符串,用成对单引号' '声明单个字符,而Python没有这种区别,它无论单个或多个字符都用字符 ...

最新文章

  1. DotNetTextBoxV3.0在线编辑器控件Ver3.4.2 Open Source开源版
  2. linux mount挂载命令(将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来)
  3. 图像目标分割_2 FCN(Fully Convolutional Networks for Semantic Segmentation)
  4. python多线程爬虫数据顺序_Python爬虫必学知识点:多线程爬虫
  5. c语言不定参数个数,C语言中不定参数的实现
  6. echarts的legend显示不全_Echarts【1、数据过多导致显示不全分页,2、数据展示探讨分析】...
  7. Tensor 和Numpy转换
  8. [生活]我短暂的股票生涯
  9. php访问属性两种方式,使用PHP访问对象的属性
  10. setuna截图怎么放大缩小_实用的高清截图系列小窍门详解,一章带你“真正学会”截图!...
  11. 电脑桌面上怎么找计算机,xp桌面上我的电脑图标不见了怎么找回来
  12. 计算机录入技术五笔输入法教案,五笔打字教案
  13. Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
  14. c语言把金额转成大写,c语言 把数字转化为大写金额 请问我写的哪里有错误
  15. 苹果显示器(Apple Cinema Display)亮度调节方法
  16. better-scroll基本使用
  17. matlab学霸表白公式,一个理科学霸的表白:数学公式的超酷表
  18. AD629测量负载电流的电路原理详解——精妙绝伦的电路设计
  19. 第10章 集成MyBatis
  20. 1.口袋西游人物属性(01)

热门文章

  1. 微信小程序路线规划导航,选择起点和终点路线规划
  2. 油管youtube第三方客户端 去广告-TubeMax
  3. 使用UICollectionView实现首页的滚动效果
  4. 蓝桥杯 青少年创意编程大赛 scratch 组、中国电子学会scratch等级考试等
  5. imagemagick /tmp/magick-xxxxxxxx
  6. python 三角形雷达图,python 画雷达图
  7. Matlab 画图控制速度,matlab常用画图操作
  8. 台式电脑怎么组装步骤_详细教您台式电脑如何快速组装
  9. 2D游戏案例:(平台下落类)Solo Fall
  10. python ocr识别 沪牌_7月沪牌拍后分析:毫秒之间,锁定中标