![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
死磕dubbo
文章平均质量分 89
dubbo源码学习记录
景川呀
写博客主要是为了记录自己的学习过程并加深印象
展开
-
dubbo的请求全过程
前言前面看完了dubbo的服务发布和引用相关的内容本篇看一下dubbo的一个rpc调用的过程先一个debug用的demo:https://pan.baidu.com/s/1x88oqb0FBSLvq0wHfgIALA 密码: fcm1本文会基于这个demo的链路进行debug跟踪,之前的文章是基于dubbo的2.7.8版本的,这个demo是springboot集成的dubbo,版本是2.6.0,有一点小区别,但是不影响整体流程开始...原创 2021-02-22 22:03:51 · 2197 阅读 · 2 评论 -
dubbo的Directory服务目录
上一篇讲了dubbo服务调用集群容错路由负载的基本链路,之前也看过了服务引用的时候,会监听zookeeper的节点,如果zk节点有变动,会通知到:org.apache.dubbo.registry.integration.RegistryDirectory#notify之前在服务引用也大概讲过了refreshOverrideAndInvoker(providerURLs)方法这里我们从org.apache.dubbo.rpc.cluster.Directory接口开始看可以看到Directory服原创 2021-02-20 14:19:52 · 358 阅读 · 0 评论 -
dubbo的服务调用-集群容错和路由负载
前面看完了服务的引用:dubbo的服务引用在服务引用最终的就是生成了一个代理类,那么在调用某个被代理的接口时,实际上就是通过代理类去调用的,同时在实际调用之前做了容错、路由、负载等等。实际上每个调用都会从org.apache.dubbo.rpc.proxy.InvokerInvocationHandler#invoke代理在这个方法中,会把我们的目标Invoker和参数封装成org.apache.dubbo.rpc.RpcInvocation#RpcInvocation(java.lang.refle原创 2021-02-19 21:24:46 · 557 阅读 · 0 评论 -
dubbo的服务引用
分析完dubbo的服务发布再接着看看服务引用,和服务发布一样的,引用服务也是从配置文件开始:一. 配置文件开始<dubbo:reference id="demoService" interface="org.apache.dubbo.demo.service.DemoService" version="2.0.0" group="default"/>一般引用服务我们可以在xml中配置这样的代码,然后就能在代码中引用到这个服务接口了那么实际上他也原创 2021-02-18 22:02:05 · 539 阅读 · 0 评论 -
dubbo的zookeeper连接、创建节点、订阅
接着上一篇的dubbo的服务发布上一篇讲完dubbo的远程服务发布之后,到了org.apache.dubbo.registry.integration.RegistryProtocol#export的doLocalExport(originInvoker, providerUrl)调用之后,本篇看一下dubbo在远程服务发布完成之后对zookeeper的连接等操作一. 创建zk连接首先进入org.apache.dubbo.registry.integration.RegistryProtocol#g原创 2021-02-16 21:17:20 · 2590 阅读 · 0 评论 -
dubbo的服务发布
本篇了解一下dubbo的服务发布流程一. 从配置文件走起这个xml文件是dubbo提供的一个demo,用过dubbo的同学应该都了解这就是暴露一个接口demoService,那么这个接口如何暴露出去的呢?既然是配置了这个xml就能暴露出去,那么肯定是从xml文件的配置开始,上图圈出来的红框中,很明显看出来是用的schema定义的xml文件,不了解的同学可以百度一下:schema自定义配置这个关键词,了解下schema自定义配置相关知识,这里就不再讲了,提供一个参考链接:https://www.cnb原创 2021-02-15 16:39:40 · 1589 阅读 · 1 评论 -
dubbo和spring的整合
本章先简单写下dubbo在启动时是怎么同时整合spring容器的首先dubbo的启动是在:org.apache.dubbo.container.Main#main可以看到main方法中首先是肯定没有入参的,所以会去加载public static final String CONTAINER_KEY = "dubbo.container";这个key对应的配置,然后在dubbo的2.7.8版本中没有这个配置了,所以他会使用LOADER.getDefaultExtensionName()的默认值,那原创 2021-02-14 23:58:57 · 919 阅读 · 1 评论 -
dubbo的动态编译javassist
一. javassist简介Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。Javassist(JAVA编程ASSISTant)使Java字节码操作变得简单。 它是一个用Java编辑字节码的类库; 它使Java程序能够在运行时定义新类,并在JVM加载时修改类文件。 与其他类似的字节码编辑器不原创 2021-02-14 14:47:28 · 1285 阅读 · 4 评论 -
dubbo的SPI
一. SPI定义SPI 全称为 Service Provider Interface,一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如mysql-connector包、spring-web包等,Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 S原创 2021-02-13 15:57:19 · 1316 阅读 · 5 评论 -
zookeeper源码下载和导入idea
**本篇介绍一下zookeeper的源码如何导入idea并进行查看**要学习源码肯定得先把源码下载下来打开看看吧一:首先是源码地址https://github.com/apache/zookeeper/tree/branch-3.5.5 这里以3.5.5分支为例,不要下载master分支,里面没有bulid.xml,后面ant编译不了下载之后解压到自己电脑的目录这里以win10为例,我解压到:E:\zookeeper-branch-3.5.5二:安装antant下载地址:https://a原创 2020-08-22 16:19:07 · 1352 阅读 · 0 评论