Dubbo基本原理

不羁的心 提交于 2020-03-11 19:42:16
简介:

Dubbo是阿里巴巴开源的高性能RPC框架,该框架可以采用Spring配置方式,透明化接入应用,只需要Spring加载Dubbo配置即可。

调用流程

dubbo架构

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

系统架构

Dubbo底层架构主要分为十层:
  • Service层:业务接口层,主要为提供方和消费方接口的设计与实现。
  • Config层:系统配置层,以ReferenceConfig与ServiceConfig为核心,可以初始化配置,也可以通过Spring解析生成配置类。
  • Proxy层:服务代理层,主要负责给provider与consumer生成代理对象,使其可以进行网络通信。
  • Register层:服务注册层,封装服务注册与发现的相关实现功能。
  • CLuster层:集群层,封装provider的路由与负载均衡相关功能。
  • Monitor层:监控层,统计RPC调用信息,包括访问时间有访问次数记录。
  • Protocol层:远程调用层,RPC相关调用封装。
  • Exchange层:封装请求相应模式,同步转异步。
  • Transport层:网络传输层,抽象mina与netty为统一接口。
  • Serialize层:数据序列化层,可实现数据序列化功能。
Dubbo支持的通信协议
  • dubbo协议:单一长连接,NIO异步通信,使用hessian作为序列化协议,Dubbo默认通信协议,适用于数据量小,并发量高的场景。
  • rmi协议:多个短连接,使用Java二进制序列化协议,适用于生产者与消费者相差不多的情景,适用于文件传输,使用场景较少。
  • hessian协议:多个短连接,使用hessian序列化协议,适用于生产者数量高于消费者,适用于文件传输,使用场景较少。
  • http协议:使用json序列化。
  • webservice协议:使用soap文本序列化。
负载均衡:
  • Random LoadBalance:Dubbo默认负载均衡策略,随机分配负载均衡。
  • Roundrobin LoadBalance:轮询分配负载均衡。
  • Leastactive LoadBalance:最少活跃调用数负载均衡。
  • Consistent LoadBalance:一致性哈希负载均衡。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!