概述
-
dubbo X 是当当拉的一个分支一直在维护
-
设计原则:微内核(扩展点-接口的实现类)+ 插件组件方便扩展、增强、替换
-
URL作为配置信息的统一格式的公共契约
-
领域模型:Protocol服务域-负责Invoker的生命周期管理,Invoker实体域-核心,Invocation会话域-调用过程中的变量方法名参数等。
-
十层架构
-
框架架构:dubbo-all[bom,cluster*,config,dependencies,filter,distribution,demo,monitor,plugin,registry(multicast广播,multiple多注册中心),rpc,remoting(netty,http,zk,p2p),common,metadata-report,serialization,container,configcenter(zk,nacos,applo,consul。。。)]
-
2.6 com.alibabab.dubbo – 2.7 com.apache.dubbo : Java8
内核解析
- jdk SPI缺点:加载全部服务不管有没有用到 serverLoader
- dubbo SPI ExtensionLoader.getExtensionLoader(Class type).getExtension
- 自适应机制@Adaptive 修饰类,方法 URL ?word,word = xxx 指定方式
- Adaptive类不属于直接扩展类
- Wrapper包装机制 aop实现,对spi接口进行增强
- 加载、激活机制 Activate 一次性激活多个实例
-
》group分组激活,order指定加载顺序
-
》getActivateExtension(url,value,group)取并集
-
》activate类属于直接扩展类
SPI 源码解析
- 校验是否是SPI注解、接口
- 从缓存中获取指定SPI接口的loader
- first 注入对象zkclient
- loader.getExtension(true);–getDefaultExtension();