Dubbo

 · 2021-8-19 · 次阅读


Dubbo的主要功能

Dubbo是一款高性能、轻量级的开源级Java服务框架

六大核心能力:

  • 高性能RPC调用
  • 智能负载均衡
  • 服务自动注册和发现
  • 高度可扩展能力
  • 运行期流量调度
  • 可视化的服务治理与运维

基础功能 RPC调用

  • 多协议(序列化、传输、RPC)
  • 服务注册发现
  • 配置、元数据管理

框架分层设计,可任意扩展和组装

image-20210819214820426

分析:

  • 基本模块:Registry[注册中心]、Monitor[监控中心]、Consumer[消费者]、Provider[服务提供者]
  • 初始化操作:
    1. Provider将服务register到registry
    2. consumer向registry服务进行subscribe
  • 序列化操作
    1. registry向consumer对服务的改动,上下线等进行notify
    2. consumer和Provider的服务调用,注册等情况,在Monitor进行count
  • 同步操作
    1. consumer对已注册的服务,向Provider直接发起invoke

在consumer中的ProtocolClusterProxy

以及在Provider中的ProtocolServiceContainer

均可自由扩展和组装

扩展功能 集群、高可用、管控

  • 集群,负载均衡
  • 治理,路由
  • 控制台、管理与监控

灵活扩展+简单易用,是Dubbo成功的秘诀

整体架构

image-20210819222912489

  1. Config:配置层——对外配置接口,以ServiceConfig、ReferenceConfig为中心、可以直接初始化、也可以通过spring解析配置生成类
  2. Proxy:服务代理层——服务接口透明代理,生成服务客户端的Stub和服务器端Skeleton,以serviceProxy为中心,扩展接口为proxyFactory
  3. Registry:注册中心层——封装服务地址的注册与发现,以服务Url为中心,扩展接口为RegistryFactory、Registry、RegistryService
  4. Cluster:路由层——封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口未Cluster、Directory、Router、LoadBalance
  5. Monitor:监控层——RPC调用次数和调用时间监控、以statistics为中心,扩展接口为MonitorFactory、Monitor、MonitorService
  6. Protocol:远程调用层——封装RPC调用,以Invocation,Result为中心,扩展接口未Protocol、Invoker、Exporter
  7. exchange:信息交换层:封装请求响应模式,同步转异步,以Request、Response为中心,扩展接口为Exchanger、ExchangeClient、ExchangeServer
  8. transport:网络传输层:抽象mina和netty为统一接口,以Message为中心,扩展接口未Channel、Transporter、Client、Server、Codec
  9. serialize:数据序列化层:可复用的一些工具,扩展接口未Serialization、ObjectInput、ObjectOutput、ThreadPool