Dubbo基本原理机制

article/2025/11/7 19:27:19
分布式服务框架:
–高性能和透明化的RPC远程服务调用方案
–SOA服务治理方案
-Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接
Dubbo缺省协议采用单一长连接和NIO异步通讯
适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
分析源代码,基本原理如下:
  
  1. client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的
  2. 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object
  3. 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object)
  4. 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去
  5. 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。
  6. 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传)发送给客户端,客户端socket连接上专门监听消息的线程收到消息,分析结果,取到ID,再从前面的ConcurrentHashMap里面get(ID),从而找到callback,将方法调用结果设置到callback对象里。
  7. 监听线程接着使用synchronized获取回调对象callback的锁(因为前面调用过wait(),那个线程已释放callback的锁了),再notifyAll(),唤醒前面处于等待状态的线程继续执行(callback的get()方法继续执行就能拿到调用结果了),至此,整个过程结束。
  • 当前线程怎么让它“暂停”,等结果回来后,再向后执行?
     答:先生成一个对象obj,在一个全局map里put(ID,obj)存放起来,再用synchronized获取obj锁,再调用obj.wait()让当前线程处于等待状态,然后另一消息监听线程等到服 务端结果来了后,再map.get(ID)找到obj,再用synchronized获取obj锁,再调用obj.notifyAll()唤醒前面处于等待状态的线程。
  • 正如前面所说,Socket通信是一个全双工的方式,如果有多个线程同时进行远程方法调用,这时建立在client server之间的socket连接上会有很多双方发送的消息传递,前后顺序也可能是乱七八糟的,server处理完结果后,将结果消息发送给client,client收到很多消息,怎么知道哪个消息结果是原先哪个线程调用的?
     答:使用一个ID,让其唯一,然后传递给服务端,再服务端又回传回来,这样就知道结果是原先哪个线程的了。


http://chatgpt.dhexx.cn/article/0jnq5ZWh.shtml

相关文章

Dubbo基本原理与机制

1、什么是Dubbo Dubbo 是一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 2、Dubbo依赖关系 1、服务消费者(Consumer): 调用远程服务的服务消费方&#xff0c…

dubbo原理和机制

Dubbo 框架是用来处理分布式系统中,服务发现与注册以及调用问题的,并且管理调用过程。 一,工作流程: 服务提供者在启动的时候,会通过读取一些配置将服务实例化。Proxy 封装服务调用接口,方便调用者调用。…

Dubbo的原理与机制

​ Dubbo 前言 在介绍Dubbo之前先了解一下基本概念: Dubbo是一个RPC框架,RPC,即Remote Procedure Call(远程过程调用),相对的就是本地过程调用,在分布式架构之前的单体应用架构和垂直应用架…

Dubbo基础及原理机制

1. 什么是Dubbo? Dubbo是 阿里巴巴公司开源的一个高性能RPC 分布式服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成,现已成为 Apache 基金会孵化项目。 2. 为什么要用Dubbo&#xff1…

Dubbo原理和机制详解(非常全面)

Dubbo是一款Java RPC框架,致力于提供高性能的RPC远程服务调用方案。Dubbo 作为主流的微服务框架之一,为开发人员带来了非常多的便利。 本文我们重点详解 Dubbo 的原理机制 mikechen 目录 Dubbo核心功能Dubbo核心组件Dubbo的架构设计Dubbo调用流程 1️…

大地测量学基础(复习)第一部分

写在前面 这篇博文是用来复习课程“大地测量学基础”的,里面仅列出本人觉得这门课程比较重要的部分,希望能够帮助到有需要的朋友。 课本采用《大地测量学基础》孔祥元,武汉大学出版社。 前面已经有一篇“大地测量学基础(复习&…

深入理解ArcGIS的地理坐标系、大地坐标系

1、引言 地理坐标:为球面坐标。 参考平面地是 椭球面,坐标单位:经纬度 大地坐标:为平面坐标。参考平面地是 水平面,坐标单位:米、千米等 地理坐标转换到大地坐标的过程可理解为投影。 (投影:将不规则的地球曲面转…

GNSS定位中的不同高度概念及计算

文章目录 高度相关的几个基本概念RTKLIB中高度设置与计算参考文献 由于在GNSS定位中由多种高度表示,不同的高度概念很容易混淆,中英文对应有时候也容易搞混。因此整理了一下常用的两种高度——椭球高、正高的概念与计算,并且标注了对应的英文…

概念讲解:大地水准面 | 地球椭球体 | 参考椭球体 | 大地基准面 | 地图投影

文章目录 大地水准面地球椭球体参考椭球体大地基准面地图投影几个概念之间的关系相关文章 大地水准面 指平均海平面通过大陆延伸勾画出的一个连续的封闭曲面。大地水准面包围的球体称为大地球体。从大地水准面起算的陆地高度,称为绝对高度或海拔。 大地水准面是对地…

地图学的基础知识_天文坐标系_大地坐标系_地心坐标系及其相关概念

学习地图学,由于地理知识欠缺,学习相关投影知识还为时过早,需要复习一些基本概念。 阅读对象:测绘类 地球自然球体: 由地球自然表面所包围的的形体称为地球自然体。 地球自然球体形状:地球不是一个正球体,而是一个极半径略短&a…

大地测量学

大地测量学简答题复习 问:建立国家平面控制网的方法? 答: 常规大地测量:三角测量(已知一个点的坐标,又精密测量了1,2点的边长和坐标方位角,依据三角形的正弦定理推测出其他边的长…

[复试——大地测量学]第一章节——2022/12/30

PART 1 大地测量学的定义 是在一定的时间和空间的参考系中,测量和描绘地球形状及其重力场并监测其变化,为人类活动提供地球空间信息的一门学科。 大地测量学的作用 1.建立地面控制网 2.精确测定大地控制点的三维位置以及其重力场参数 大地测量学的…

1985高程基准与全球大地水准面(EGM2008)的关系综述

​按照惯例,先给结论: (1)1985国家高程基准与EGM2008的差异有严密的理论公式计算; (2)1985国家高程基准与EGM20008的垂直偏差与参考系、水准模型、选取的水准点有关系 (3&#xf…

似大地水准面精化

转载自:http://blog.sina.com.cn/s/blog_64886846010153qi.html 大地高是指以参考椭球面作为高程基准面的高程系统,是地面点沿法线到参考椭球面的距离。 正高是地面点沿重力线到大地水准面的距离。正常高是指从一地面点沿过此点的**正常重力线**到似…

正常高、大地高、海拔高的测绘概念

一、海拔高、大地高 高程是地理学和测量学中对地物高度的一种表达。英文的表达是elevation。与高程相关的两个概念——大地高与海拔高,在实践上有差异,但很容易混淆。 王慧麟等编著的《测量与地图学》(南大出版社,2004年)中对这两个概念有明确表述: 点位沿椭球面的法线至…

大地高、正高和正常高及高程异常

测量学习过程中,这几个高程或许曾困扰过许多人(其中也包括我),希望我能在这里把这些说清楚。 可以简单地理解,高程其实就是某点到某个基准面的距离。 这么算下来,对于这几个高程的理解就是怎么理解相对应…

大地高、海拔高 地心纬度、大地纬度/地理纬度

大地测量学模型所表示的地球表面,所有点的当地重力矢量都垂直于该表面,即一个“等位面”;这种形状称为大地水准面! 但是由于表面及其不规则,见如下图: 真实的地球据说如下: 地球真实不是一个正球…

大地高、正高和正常高的区别

测量学习过程中,这几个高程或许曾困扰过许多人(其中也包括我),希望我能在这里把这些说清楚。 可以简单地理解,高程其实就是某点到某个基准面的距离。 这么算下来,对于这几个高程的理解就是怎么理解相对应…

大地高和正常高、正高的详细说明

测量学习过程中,这几个高程或许曾困扰过许多人(其中也包括我),希望我能在这里把这些说清楚。 可以简单地理解,高程其实就是某点到某个基准面的距离。 这么算下来,对于这几个高程的理解就是怎么理解相对应…

【转载】GIS概念解析:大地高 | 海拔 | 正高 | 正常高

一、海拔高、大地高 高程是地理学和测量学中对地物高度的一种表达。英文的表达是elevation。与高程相关的两个概念——大地高与海拔高,在实践上有差异,但很容易混淆。 王慧麟等编著的《测量与地图学》(南大出版社,2004年&#x…