简介:
Dubbo是阿里巴巴开源的高性能RPC框架,该框架可以采用Spring配置方式,透明化接入应用,只需要Spring加载Dubbo配置即可。
调用流程
调用说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
系统架构
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:一致性哈希负载均衡。
来源:oschina
链接:https://my.oschina.net/u/4176955/blog/3191935