• 0

  • 473

Dubbo(一)概述

黑猫

我不是黑客

2星期前

Dubbo

实际上,在dubbo官网拥有非常详细的源码解析,可以说是对程序员非常的友好了。传送门

源码版本

拉取了2.7.x的版本

包分层

dubbo中的每一个分层都有其独特的功能,整体的代码看完以后,再回过头来看,这样的层次结构非常巧妙,截取官网的图,一开始拿到该图时,非常不理解这么复杂的一幅图,先不管这些,慢慢看下去后,发现原来一张图就描述了dubbo的功能,太牛逼了。

图中,分为3大部分

  • Business 业务层,主要是具体的业务接口和实现等

  • RPC 主要是封装了RPC需要使用的组件,如代理 配置 路由、注册、监控等

    • 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
  • Remote 远程交互层,可以理解为网络层,主要处理交换信息 网络传输 序列化

    • exchange 信息交换层:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
    • transport 网络传输层:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec
    • serialize 数据序列化层:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool

重要对象

在dubbo中有3个核心的领域模型

  • Protocol 服务域 ,是invoker暴露和引用的主要功能入口,负责invoker生命周期
  • Invoker 实体域,它是dubbo的核心模型,所有的模型都会向他靠拢。
  • Invocation 是会话域,它持有调用过程中的变量,比如方法名,参数等。

Invoker 和 Invocation 可能比较难以理解是怎么区分的,首先从字面来看,多加了一个tion的动词会变成一个名词,这里可以看出来Invocation 里面只会存放相关的信息,而不会具体的执行方法。而Invoker会执行,把服务代理后生成一个Invoker,由该对象发起调用和引用。网络传输等,都聚合在invoker内部。

在网上看到一个也许不那么恰当的比喻,2者的关系类似于实例对象和class对象的区别。

dubbo中的重要节点

服务者 消费者 注册中心 监控中心

dubbo官网

最后贴一下,官网写的非常的详细官网文档地址

免责声明:文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。

信息安全

473

相关文章推荐

未登录头像

暂无评论