Dubbo的主要功能
Dubbo是一款高性能、轻量级的开源级Java服务框架
六大核心能力:
- 高性能RPC调用
- 智能负载均衡
- 服务自动注册和发现
- 高度可扩展能力
- 运行期流量调度
- 可视化的服务治理与运维
基础功能 RPC调用
- 多协议(序列化、传输、RPC)
- 服务注册发现
- 配置、元数据管理
框架分层设计,可任意扩展和组装
分析:
- 基本模块:Registry[注册中心]、Monitor[监控中心]、Consumer[消费者]、Provider[服务提供者]
- 初始化操作:
- Provider将服务register到registry
- consumer向registry服务进行subscribe
- 序列化操作
- registry向consumer对服务的改动,上下线等进行notify
- consumer和Provider的服务调用,注册等情况,在Monitor进行count
- 同步操作
- consumer对已注册的服务,向Provider直接发起invoke
在consumer中的
Protocol
、Cluster
、Proxy
以及在Provider中的
Protocol
、Service
、Container
均可自由扩展和组装
扩展功能 集群、高可用、管控
- 集群,负载均衡
- 治理,路由
- 控制台、管理与监控
灵活扩展+简单易用,是Dubbo成功的秘诀
整体架构
- Config:配置层——对外配置接口,以ServiceConfig、ReferenceConfig为中心、可以直接初始化、也可以通过spring解析配置生成类
- Proxy:服务代理层——服务接口透明代理,生成服务客户端的Stub和服务器端Skeleton,以serviceProxy为中心,扩展接口为proxyFactory
- Registry:注册中心层——封装服务地址的注册与发现,以服务Url为中心,扩展接口为RegistryFactory、Registry、RegistryService
- Cluster:路由层——封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口未Cluster、Directory、Router、LoadBalance
- Monitor:监控层——RPC调用次数和调用时间监控、以statistics为中心,扩展接口为MonitorFactory、Monitor、MonitorService
- Protocol:远程调用层——封装RPC调用,以Invocation,Result为中心,扩展接口未Protocol、Invoker、Exporter
- exchange:信息交换层:封装请求响应模式,同步转异步,以Request、Response为中心,扩展接口为Exchanger、ExchangeClient、ExchangeServer
- transport:网络传输层:抽象mina和netty为统一接口,以Message为中心,扩展接口未Channel、Transporter、Client、Server、Codec
- serialize:数据序列化层:可复用的一些工具,扩展接口未Serialization、ObjectInput、ObjectOutput、ThreadPool