张贴在 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子项目,这里我做了删减,方便看核心代码: 首先我们定义一个服务接口如下所示: …

    更多

  • Rest 协议

    Tuesday, July 26, 2022 在 功能演示

    Dubbo RestProtocol 设计文档 原版本dubbo rest consumer restClient支持 依赖resteasy 不支持spring mvc provider(较重) 依赖web container (tomcat,jetty,)servlet 模式,jaxrs netty server 改版dubbo rest 方向: 更加轻量,具有dubbo风格的rest,微服务体系互通(Springcloud Alibaba) 1.注解解析 2. …

    更多

  • 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) …

    更多