dubbo原理(什么是dubbo)
一、dubbo异步转同步原理
Dubbo是一款开源的RPC中间件框架,底层数据传输默认使用的Netty,那么请求的处理理论上是异步的。
异步转同步原理:
1、调用方请求远程服务之后,需要等待结果,此刻,请求线程应该阻塞。
2、远程服务返回结果后,唤醒请求线程,调用方得到结果:Dubbo异步转同步,核心类是DefaultFuture,核心方法是get(),received(Channelchannel,Responseresponse)。
二、dubbo线程池原理及源码
DUBBO提供五种线程模型
all所有消息都派发到业务线程池,包括请求,响应,连接事件,断开事件,心跳
direct所有消息都不派发到业务线程池,全部在IO线程直接执行
message只有请求响应消息派发到业务线程池,其它连接断开事件,心跳等消息直接在IO线程执行
execution只有请求消息派发到业务线程池,响应和其它连接断开事件,心跳等消息直接在IO线程执行
connection在IO线程上将连接断开事件放入队列,有序逐个执行,其它消息派发到业务线程池
三、dubbo原理深度解析
dubbo原理和机制:
Dubbo是一个高性能优秀的服务框架,它使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源JavaRPC框架。
它提供了三大核心能力:
1、面向接口的远程方法调用;
2、智能容错和负载均衡;
3、服务自动注册和发现。
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。
服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销。
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销。