• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

dubbo源码实践-

武飞扬头像
alf_cee
帮助1

自己大概花了一个月的时间,断断续续的看了一遍dubbo源码,之前的文章从实践出发搭建了dubbo各层的例子!

Dubbo源码的学习也暂时告一段落。这篇就谈谈自己对dubbo源码学习个人感受!

1 dubbo是什么?

dubbo是一个RPC框架,用来实现程序间通信的。

可以看看官方的入门文档:https://cn.dubbo.apache.org/zh/docsv2.7/user/preface/

2 dubbo架构图

学新通

架构图原地址:https://cn.dubbo.apache.org/zh/docsv2.7/dev/design/

图中的每个类都要知道干什么的,解决什么问题的。

3 学到了什么?

3.1 dubbo基本设计原则

采用 Microkernel Plugin 模式,Microkernel 只负责组装 Plugin,Dubbo 自身的功能也是通过扩展点实现的,也就是 Dubbo 的所有功能点都可被用户自定义扩展所替换。

采用 URL 作为配置信息的统一格式,所有扩展点都通过传递 URL 携带配置信息。

“Microkernel Plugin” 模式把流程和具体的实现细节分开,dubbo的整体流程相对固定,实现细节确是多样的。如:底层的通信框架可以用netty也可以用mina。这里其实就是指SPI。

“URL 作为配置信息的统一格式”这个比较奇怪,URL设置参数时就像一个MAP,之前的观念对MAP作为方法的入参比较排斥,一直认为MAP类型不应做入参。看了观念要改改了。

3.2 dubbo架构分层

在dubbo架构图中可以看出,dubbo把自己内部分了好多层,每个层都抽象了一些功能。之前做业务比较喜欢分模块,以后也要想到分层(以前不想的原因可能是Spring的应用,默认就3、4层)。

之前看dubbo源码,直接看服务的发布流程和调用流程比较懵,但是当按层搭建了实例并且分析了每层完成的任务后,再看服务的发布流程和调用流程就比较轻松了。

想了解流程可以参考官方说明文档:

服务导出: https://cn.dubbo.apache.org/zh/docsv2.7/dev/source/export-service/

服务引用: https://cn.dubbo.apache.org/zh/docsv2.7/dev/source/refer-service/

3.3 Invoker接口抽象

Invoker接口抽象的比较惊艳,消费端用Invoker封装了远程调用、集群调用(路由、负载均衡),服务提供端用Invoker封装了业务服务的调用,同时还提供了Invoker的异步转同步实现类(参见AsyncToSyncInvoker类)。

Invoker还支持互相嵌套。

Filter接口也有可以看看,也实现了对Invoker的包装,类似web应用中的Filter。

3.4 jdk动态代理、反射和javassist的学习

dubbo在消费端使用了jdk动态代理或者javassist来生成接口的实现类,服务提供端使用反射或者javassist来完成对相应业务服务类的调用。可以参考JdkProxyFactory、JavassistProxyFactory。

3.5 CompletableFuture类

dubbo的异步使用了 jdk1.8 提供的CompletableFuture类,需要了解和使用一下。

3.6 dubbo中的时间轮和线程池实现

dubbo中的时间轮和线程池实现,有空需要了解一下。

4 和面试官怎么聊?

1)Microkernel Plugin 模式(SPI) URL参数。

2)架构分层,每一层的功能。架构图要牢记。

3)dubbo的各个功能需要看一看:

A. 推荐用法 https://cn.dubbo.apache.org/zh/docsv2.7/user/recommend/

B. 参考手册 https://cn.dubbo.apache.org/zh/docsv2.7/user/references/

4)在结合项目聊聊

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgggaak
系列文章
更多 icon
同类精品
更多 icon
继续加载