张贴在 2022
7-Dubbo的SPI扩展机制之自动激活扩展Activate源码解析
Sunday, August 07, 2022 在 Dubbo3 [v3.0.8] 源码解析
7-Dubbo的SPI扩展机制之自动激活扩展Activate源码解析 7.1 Activate扩展的说明 此注解对于使用给定条件自动激活某些扩展非常有用,例如:@Activate可用于在有多个实现时加载某些筛选器扩展。 group() 指定组条件。框架SPI定义了有效的组值。 value() 指定URL条件中的参数键。 SPI提供程序可以调用ExtensionLoader。getActivateExtension(URL、String、String)方法以查找具有给定条件的所有已激活扩展。 比如 …
06-Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析
Saturday, August 06, 2022 在 Dubbo3 [v3.0.8] 源码解析
6 Dubbo的SPI扩展机制之普通扩展对象的创建与Wrapper机制的源码解析 6.1 普通扩展对象的加载与创建 这里我们要分析的是ExtensionLoader类型的getExtension(String name)方法, 有了前面自适应扩展的铺垫,这里就更容易来看了getExtension是根据扩展名字获取具体扩展的通用方法,我们来根据某个类型来获取扩展的时候就是走的这里,比如在这个博客开头的介绍: ApplicationModel中获取配置管理器对象 configManager = …
05-自适应扩展对象的创建getAdaptiveExtension方法
Friday, August 05, 2022 在 Dubbo3 [v3.0.8] 源码解析
5 自适应扩展对象的创建getAdaptiveExtension方法 自适应扩展又称为动态扩展,可以在运行时生成扩展对象 ExtensionLoader中的getAdaptiveExtension()方法,这个方法也是我们看到的第一个获取扩展对象的方法. ,这个方法可以帮助我们通过SPI机制从扩展文件中找到需要的扩展类型并创建它的对象, 自适应扩展:如果对设计模式比较了解的可能会联想到适配器模式,自适应扩展其实就是适配器模式的思路,自适应扩展有两种策略: 一种是我们自己实现自适应扩展:然后使 …
04-Dubbo的扩展机制
Thursday, August 04, 2022 在 Dubbo3 [v3.0.8] 源码解析
4-Dubbo的扩展机制 4.1 回顾我们前面使用到扩展场景 在上一章中我们初始化应用模型对象的时候,了解到有几个地方用到了扩展机制来创建对象,这一章我们会详细来讲一下这个扩展对象的加载过程,这里我们先来回顾下哪些地方用到了扩展机制: // 使用扩展机制获取TypeBuilder Set<TypeBuilder> tbs = model.getExtensionLoader(TypeBuilder.class).getSupportedExtensionInstances(); // …
03-框架,应用程序,模块领域模型Model对象的初始化
Wednesday, August 03, 2022 在 Dubbo3 [v3.0.8] 源码解析
3-框架,应用程序,模块领域模型Model对象的初始化 在上一章中我们详细看了服务配置ServiceConfig类型的初始化,不过我们跳过了AbstractMethodConfig的构造器中创建模块模型对象的过程,那这一章我们就来看下模块模型对象的初始化过程: public AbstractMethodConfig() { super(ApplicationModel.defaultModel().getDefaultModule()); } 那为什么会在Dubbo3的新版本中加入这个域模型呢, …
02-启动服务前服务配置ServiceConfig类型是如何初始化的?
Tuesday, August 02, 2022 在 Dubbo3 [v3.0.8] 源码解析
2-启动服务前服务配置ServiceConfig类型是如何初始化的? 2.1 示例源码回顾: 为了方便我们理解记忆,这里先来回顾下上一章我们说的示例代码,如下所示: public class Application { public static void main(String[] args) throws Exception { startWithBootstrap(); } private static void startWithBootstrap() { …
01 从一个服务提供者的Demo说起
Monday, August 01, 2022 在 Dubbo3 [v3.0.8] 源码解析
1 从一个服务提供者的Demo说起 为了更方便了解原理,我们先来编写一个Demo,从例子中来看源码实现: 1.1 启动Zookeeper 为了Demo可以正常启动,需要我们先在本地启动一个Zookeeper如下图所示: 1.2 服务提供者 接下来给大家贴一下示例源码,这个源码来源于Dubbo源码目录的 dubbo-demo/dubbo-demo-api 目录下面的dubbo-demo-api-provider子项目,这里我做了删减,方便看核心代码: 首先我们定义一个服务接口如下所示: …
Dubbo Java 3.1.3 正式发布
Monday, July 18, 2022 在 社区动态
Dubbo 3.1.3 修改内容 修复本地调用的过程中 Filter 顺序异常的问题 支持导入协议配置项到 MetadataService 支持在发布 MetadataService 时自动选择可用端口 完善错误码内容 泛化调用下支持一致性哈希负载均衡 修复泛化调用时反序列化异常的问题 修复由于 JVM Methods 顺序不一致导致的应用级元数据无法复用的问题 默认关闭端口复用能力,修复 remoting 组建找不到 SPI 的问题 修复由于引用计数异常导致的 safe gard …
浅析 Dubbo 3.0 中接口级地址推送性能的优化
Thursday, June 23, 2022 在 源码分析
URL 简介 在阐述地址推送性能的具体优化之前,我们有必要先了解一下与之息息相关的内容 — URL。 定义 在不谈及 dubbo 时,我们大多数人对 URL 这个概念并不会感到陌生。统一资源定位器 (RFC1738――Uniform Resource Locators (URL))应该是最广为人知的一个 RFC 规范,它的定义也非常简单。 因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语 义。而这些字符串则被称为:“统一资源定位器”(URL) …