Dubbo源码分析
Java开发面试辅导-海龟老师
毕业于浙江大学软件工程硕士,在BAT一线大厂担任架构师工作,作为面试官有丰富的面试经验,以及项目架构经验
展开
-
Dubbo源码分析(一):Dubbo源码的结构概述
1.dubbo源码的结构Dubbo源文件主要包含以上这么多包,其中: dubbo-common 公共逻辑模块,包括Util类和通用模型。 dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。 dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的原创 2016-05-06 11:41:38 · 10965 阅读 · 0 评论 -
Dubbo的SPI扩展机制剖析
我们都是知道一个合格的开源框架对于扩展的支持都要是相当弹性的,Dubbo 也不例外。Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。Dubbo的扩展机制是基于SPI思想来实现的,但是并没有采用JDK中原生的SPI机制。1.什么是SPIjava spi的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接...原创 2018-09-04 23:02:32 · 523 阅读 · 0 评论 -
Dubbo源码分析(十):服务发布
服务发布是服务提供方向注册中注册服务过程,以便服务消费者从注册中心查阅并调用服务。服务发布方在spring的配置文件中配置如下:上面是在spring中配置的服务的具体实现,是spring中的一个普通的bean上面的配置spring容器在启动的过程中会解析自定义的schema元素dubbo转换成实际的配置实现ServiceBean ,并把服务暴露出去。ServiceCon原创 2016-05-08 14:39:59 · 2517 阅读 · 0 评论 -
Dubbo源码分析(九):与spring融合
Spring中bean的定义可以通过编程,可以定义在properties文件,也可以定义在通过xml文件中,用的最多的是通过xml形式,由于xml格式具有很好的自说明便于编写及维护。对于xml的文档结构、数据定义及格式验证可以通过DTD和Schema, 在spring2.0之前采用的是DTD,在spring2.0之后采用Schema。使用Schema方式使得spring更加便于与第三方进行集成原创 2016-05-08 11:26:48 · 1485 阅读 · 0 评论 -
Dubbo源码分析(八):Javassist字节码技术生成代理
Java动态编程的作用: 通过配置生成代码,减少重复编码和维护成本 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Javassit。 Javassit其实就是一个二方包,提供了运行时操作Ja原创 2016-05-08 10:51:41 · 3389 阅读 · 0 评论 -
(未完成)Dubbo源码分析(七):Dubbo内核实现之基于SPI思想Dubbo内核实现
SPI接口定义定义了@SPI注解package com.alibaba.dubbo.common.extension;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lan原创 2016-05-07 15:55:32 · 1655 阅读 · 0 评论 -
Dubbo源码分析(六):Dubbo内核实现之动态编译
我们运行的java代码,一般都是编译之后的字节码。Dubbo为了实现基于spi思想的扩展特性,特别是能够灵活添加额外功能,对于扩展或者说是策略的选择这个叫做控制类也好设配类也好的类要能够动态生成。当然对应已知需求如Protocol, ProxyFactory他们的策略选择的设配类代码dubbo直接提供也无妨,但是dubbo作为一个高扩展性的框架,使得用户能够添加自己的需求,根据配置动态生成自己的设原创 2016-05-07 15:10:10 · 2707 阅读 · 1 评论 -
Dubbo源码分析(五):Dubbo内核实现之SPI简单介绍
Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!大家是否熟悉spi(service provider interface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLoader类实现spi机制的服务查找功能。 JDK实现spi服务查找: ServiceLoader 首先原创 2016-05-06 21:14:03 · 1996 阅读 · 0 评论 -
Dubbo源码分析(四):dubbo中bean的加载
Dubbo首先使用com.alibaba.dubbo.config.spring.schema.NamespaceHandler注册解析器,当spring解析xml配置文件时就会调用这些解析器生成对应的BeanDefinition交给spring管理:public class DubboNamespaceHandler extends NamespaceHandlerSupport {原创 2016-05-06 21:03:39 · 4158 阅读 · 0 评论 -
Dubbo源码分析(二):Dubbo中采用的设计模式
1、工厂模式 ServiceConfig中有个字段,代码是这样的: 查看文本打印 private static final Protocol protocol =ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension(); Dubbo里有很多这种代码。这也是原创 2016-05-06 11:58:08 · 6927 阅读 · 0 评论 -
Dubbo源码分析:Dubbo自己实现的IOC
在创建自适应实例时,都会调用ExtensionLoader的injectExtension方法: @SuppressWarnings("unchecked") private T createAdaptiveExtension() { try { /** * 传入自适应实例注入到ExtensionLoader...原创 2018-09-16 21:25:12 · 702 阅读 · 0 评论