Dubbo的微内核机制

架构模式 - 微内核模式 1. 微内核模式简介 微内核(Microkernel)架构模式结构如下图所示,有时也被称为插件架构模式(Plug-in Architecture Pattern),通过插件向核心应用添加额外的功能,可以实现功能的独立和分离。 微内核架构包含两部分组件,即内核系统(Core system)和插件(Plug-in Component)。微内核架构的内核系统通常提供系统运行所需的最小功能集,插件是独... 阅读详情

Wikipedia上微内核(Microkernel)的定义

In computer science, amicrokernel(also known asμ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms includelow-level address space management,thread management, andinter-process communication (IPC).If the hardware provides multiple rings or CPU modes, the microkernel may be the only software executing at the most privileged level, which is generally referred to as supervisor or kernel mode. Traditional operating system functions, such as device drivers, protocol stacks and file systems, are typically removed from the microkernel itself and are instead run in user space.


13467292-02fdcf2b52ab3c30.png

wikipedia上的定义特指这是一种操作系统内核设计风格,其对标的内核设计风格是monolithic kernel。

本文提到的微内核

本文讲到的微内核架构(Microkernel architecture)更宽泛一些,不局限于操作系统内核设计问题域,是一种设计范型(design paradigm),更接近于《Software Architecture Patterns》一书中所写:

Themicrokernel architecturepattern allows you to add additional application features as plug-ins to the core application, providing extensibility as well as feature separation and isolation.The microkernel architecture pattern consists oftwotypes of architecturecomponents:a core systemandplug-in modules. Application logic is divided between independent plug-in modules and the basic core system, providingextensibility,flexibility, andisolationof application features and custom processing logic.


13467292-7005978835658bea.png

微内核架构由两大架构模块组成:核心系统与插件模块。设计一个微内核体系关键工作全部集中于核心系统怎么构建。

所有的软件存在的目的都是为了去解决某个现实世界中具体领域的问题,简称问题域。比如dubbo的问题域是服务化与服务治理、maven的问题域是编译打包与软件项目管理。

如果某个问题域发现有如下特征,就可以考虑使用微内核设计思想:

问题域能够沉淀一层比较核心的概念、流程或功能,这些元素可以被稳定维护在一个核心之中;

Maven将代码编译打包场景定义为三套生命周期:clean、default、site;其核心的default生命周期中20多个编译步骤将问题域进行了高度抽象;Maven的plugin(又名mojo)在定义时都需要将自己挂载到某个goal和step上;

Dubbo将SOA调用高度抽象为20余个核心SPI,这些SPI又类似协议栈分层的设计细分为核心的7、8个层次(proxy、cluster、protocol等);dubbo将自己主要的SOA服务调用功能实现都定义为这些SPI的具体扩展实现(plugin);有了这些抽象的SPI,plugin也就有了依附的基础;

问题域有开放封闭的迫切需求,其中封闭的部分、可扩展部分分别由不同的团队、工程来维护与组织。比如:

Framework的实现封闭 vs. 依赖Framework的应用扩展开放,比如dubbo这样的中间件设计场景;

操作系统核心实现封闭 vs. 操作系统应用层开放,比如所有微内核操作系统设计场景;

平台级业务系统核心逻辑实现封闭 vs. 具体业务系统扩展开放,比如阿里中台核心平台系统的设计场景;

上面的两个问题域特征,刚好带出了在进行微内核架构核心系统设计时的两个关键点:

对问题域的核心概念、流程、功能的洞察与抽象;有了这些核心元素,plugin的扩展才能有所依附、与其代码之间的互动才能实际落地发生;

设计一套机制用于规范和管理plugin生命周期:定义、加载、销毁等;

Dubbo架构概要介绍

Dubbo主要解决了服务化架构中的几个关键问题:

远程调用(RPC)

解决远程的进程到进程的调用;

集群逻辑(cluster invoke cluster)

更进一步,解决服务集群到服务集群的调用问题,例如软负载机制;

服务发现与服务治理(Registry / Governance)

集中解决服务治理所需要的基础功能:服务的注册与发现、注册中心里的基础服务治理功能

采用了类似协议栈的分层设计,归纳下来主要分为三层:

Service层 (Service/Config/Proxy)

解决provider侧服务暴露 / consumer侧消费服务的问题

集群层(Registry / Cluster)

解决服务注册与发现、集群调用策略领域关键问题

RPC层(Protocol / Exchange/ Transport / Serialize)

解决点到点的同步远程调用领域的问题

这主要的三层符合分层架构风格的特征,即:上层逻辑无需关注下层实现细节。这个特征使得dubbo的扩展方可以采用类似搭积木的方式进行扩展。比如:彻底更换RPC协议,而共享上层的集群调用与服务治理实现;更多的奥妙就不在此文展开,感兴趣的同学可以仔细研究下图(摘自Dubbo官方文档),内涵与细节非常丰富:

13467292-862c19124e2575f9.png

Dubbo与微内核架构

Dubbo为什么会使用微内核架构?最直观的原因:为了推广方便

Dubbo在设计之初,正值Alibaba B2B进行服务化转型的关键时期。所要推广的应用系统要么还处于“恐龙级单体”应用状态;要么用“土办法”解决简单的集群间调用。

想要顺利推广,得具备这几个关键特征:

性能好

在一次服务调用中,框架所占用的资源和时间要缩小到对应用层基本可以忽略的程度;

鲁棒性好

各种设计细节都需要兜底和防呆,避免因为一些次要的原因,导致整个应用系统崩溃(最经典的案例就是因为注册中心bug导致服务的提供者被全部剔除恶性事件了,其中各种心酸,具体的心得可以另开一篇文章专门探讨);

引入的依赖少

最小化对业务代码的侵入:可以做到应用容器无关(不同的web容器、homemade应用容器都不影响使用)、框架无关(不强依赖Spring)

可扩展性好(能做到开放封闭)

依赖于自己抽象的SPI以及plugin加载机制,能做到应用方非常自由地通过SPI方式插入自己想要的逻辑,而不需要修改Dubbo本身

最后这一项,就是Dubbo采用微内核设计的主要原因:

dubbo所要支持的应用系统千差万别,在一个组织中推行服务化,dubbo需要面临诸多的扩展需求,举几个场景:

场景一:

遗留系统是Python写的单体应用,想要用Java来进行领域拆分改造,有一些RPC调用的场景,老系统采用Rest + VIP的方式进行远程调用;

场景二:

用户想要实现自己的分布式调用跟踪,在这个基础之上建立自己的运维工具体系。

场景三:

希望在SOA的调用链条上插入自己的filter逻辑,去实现调用审计的需求;

还有很多不一一列举。作为一个开源框架,尝试将所有上面的需求都不加区分的在框架内实现一定是不可取的,众口难调。

如何做到干好自己的活儿,又不挡用户的道儿呢?

答案不言自明。

Dubbo的扩展点实现举例

以扩展实现Filter SPI为例。

Filter SPI 定义:

packageorg.apache.dubbo.rpc;importorg.apache.dubbo.common.extension.SPI;/**

* Filter. (SPI, Singleton, ThreadSafe)

*/@SPIpublicinterfaceFilter{/**    * do invoke filter.    *

    *     * // before filter    * Result result = invoker.invoke(invocation);    * // after filter    * return result;    *     *    *@paraminvoker    service    *@paraminvocation invocation.    *@returninvoke result.    *@throwsRpcException    *@seeorg.apache.dubbo.rpc.Invoker#invoke(Invocation)    */Resultinvoke(Invoker<?> invoker, Invocation invocation)throwsRpcException;}复制代码

filter是链式组装的,要实现自己的filter逻辑,只需要实现下面的invoke接口即可。filter的组装需要注意官方文档中记录的约定:

用户自定义 filter 默认在内置 filter 之后。

特殊值 default,表示缺省扩展点插入的位置。比如:filter="xxx,default,yyy",表示 xxx 在缺省 filter 之前,yyy 在缺省 filter 之后。

特殊符号 -,表示剔除。比如:filter="-foo1",剔除添加缺省扩展点 foo1。比如:filter="-default",剔除添加所有缺省扩展点。

provider 和 service 同时配置的 filter 时,累加所有 filter,而不是覆盖。比如:<dubbo:provider filter="xxx,yyy"/> 和 <dubbo:service filter="aaa,bbb" />,则 xxx,yyy,aaa,bbb 均会生效。如果要覆盖,需配置:<dubbo:service filter="-xxx,-yyy,aaa,bbb" />

扩展配置

<!-- 消费方调用过程拦截 --><!-- 消费方调用过程缺省拦截器,将拦截所有reference --><!-- 提供方调用过程拦截 --><!-- 提供方调用过程缺省拦截器,将拦截所有service -->复制代码

XxxFilter.Java

packagecom.xxx;importcom.alibaba.dubbo.rpc.Filter;importcom.alibaba.dubbo.rpc.Invoker;importcom.alibaba.dubbo.rpc.Invocation;importcom.alibaba.dubbo.rpc.Result;importcom.alibaba.dubbo.rpc.RpcException;publicclassXxxFilterimplementsFilter{publicResultinvoke(Invoker<?> invoker, Invocation invocation)throwsRpcException{// before filter ...Result result = invoker.invoke(invocation);// after filter ...returnresult;    }}复制代码

扩展实现Jar包Maven 项目结构:

src |-main    |-java        |-com            |-xxx                |-XxxFilter.java (实现Filter接口)    |-resources        |-META-INF            |-dubbo                |-com.alibaba.dubbo.rpc.Filter (纯文本文件,内容为:xxx=com.xxx.XxxFilter)复制代码

META-INF/dubbo/com.alibaba.dubbo.rpc.Filter:

xxx=com.xxx.XxxFilter复制代码

xxx就是com.xxx.XxxFilter全限定名的别名了,它会出现在dubbo的provider或者consumer的配置文件中,dubbo会按需加载组装。

按照这样的方式定义其他的扩展点,以此类推,运行时dubbo会把自带的、以及应用自己扩展的实现全部加载进来,如下图所示(假设该应用还扩展了LoadBalance以及Protocol另外两个扩展点):

13467292-536accf60920a52f.png

Dubbo扩展点加载机制实现

扩展点加载

截取自dubbo官方文档《开发者指南-扩展点加载》, Dubbo的扩展点加载由JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来,主要针对这三个缺点:

JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。

如果扩展点加载失败,连扩展点的名称都拿不到了。比如:JDK 标准的 ScriptEngine,通过 getName() 获取脚本类型的名称,但如果 RubyScriptEngine 因为所依赖的 jruby.jar 不存在,导致 RubyScriptEngine 类加载失败,这个失败原因被吃掉了,和 ruby 对应不起来,当用户执行 ruby 脚本时,会报不支持 ruby,而不是真正失败的原因。

增加了对扩展点 IoC 和 AOP 的支持,一个扩展点可以直接 setter 注入其它扩展点。

扩展点加载源代码位于dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java

扩展点装配

ServiceConfig.export()和ReferenceConfig.refer()是dubbo bootstrap时组装运行时扩展点的关键入口,可以根据代码顺藤摸瓜。看代码时可能会被各种xxxConfig搞晕,可以参考dubbo官方文档《开发者指南-实现细节》

写在后面

对于Dubbo来讲,本文中描述的微内核机制足够使用了。但对于上文中提到过的中台业务系统而言,仅仅依靠核心系统+plugin加载机制又远远不够。中台业务系统面临的是更为严苛的工程挑战:

当扩展点SPI定义上千,如何治理?

如何做到复杂业务流程配置所见即所得?

中台系统修改之后,如何做到对现有业务系统不影响?

这些问题,阿里中台的星环系统都给出了自己答案,不得不佩服阿里中台战略坚定推进的勇气以及其实现者的智慧。

进群:可以领取免费的架构师学习资料。

进群:了解最新的学习动态

进群:了解最新的阿里,京东招聘资讯

进群:获取更多的面试资料

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。

5. 群号:835638062 点击链接加入群:https://jq.qq.com/?_wv=1027&k=5S3kL3v

6.阿里Java高级大牛直播讲解知识点,分享知识,上面五大专题都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

揭秘Dubbo四大核心扩展机制 摘要:Dubbo的扩展机制通过SPI增强实现高度可扩展性,包含四大核心机制:1) SPI服务发现机制,通过配置文件声明扩展点并改进原生SPI缺陷;2) 自适应扩展机制(@Adaptive),根据URL参数动态选择实现类;3) 自动包装机制,通过Wrapper类实现AOP功能;4) 自动激活机制(@Activate),条件化批量启用扩展。这些机制协同工作,支持IOC和AOP特性,符合开闭原则,使Dubbo成为"微内核+插件化"架构的典范,可灵活对接各类基础设施。 阅读详情

相关推荐

Dubbo学习(五):深入 Plugin

摘要:Dubbo框架的核心在于其灵活的SPI扩展机制,通过ExtensionLoader实现微内核架构。相比JDK SPI,Dubbo SPI支持按需加载、依赖注入和自动包装,解决了全量加载和功能单一的问题。关键特性包括动态生成的@Adaptive代理类,根据URL参数选择实现;@Activate注解实现条件激活扩展;以及IOC/AOP支持。这种机制使Dubbo成为高度可定制的RPC框架,所有功能均可通过插件扩展,为开发者提供了强大的定制能力。

470

Allegro网表导入封装与管脚报错排查:从原理到实战

在PCB设计流程中,网表导入是连接原理图与版图的关键环节。OrCAD Capture与Allegro PCB Editor通过PCB Footprint属性、封装文件(.psm)和焊盘文件(.pad)进行数据对接,任何命名不一致或路径配置缺失都会触发报错。实际工程中,封装缺失、管脚不匹配、Device文件缺失是最高频的导入障碍,而这些问题大多源于库路径未配置、命名规范不统一或跨工具数据转换残留差异。掌握Allegro的库搜索机制与报错含义,能显著提升硬件工程师的排错效率。本文系统梳理了网表导入的底层原理、高

weixin_34109408的博客 495

blade一款简洁优雅微内核设计的JavaWeb框架

blade:一款简洁优雅,微内核设计的 Java Web 框架

dubbo

因为 RPC 和 HTTP 就不是一个层级的东西,所以严格意义上这两个没有可比性,也不应该来作比较,而题目问的就是把这两个作为比较了。 HTTP 只是传输协议,协议只是规范了一定的交流格式,而且 RPC 是早于 HTTP 的,所以真要问也是问有 RPC 为什么还要 HTTP。 RPC 对比的是本地过程调用,是用来作为分布式系统之间的通信,它可以用 HTTP 来传输,也可以基于 TCP 自定义协议传输。 官网的一张图。 首先注册中心和监控中心是可选的,你可以不要监控,也不要注册中心,直接在配置

weixin_38410177的博客 777

多模态融合相关概念

多模态图像融合

weixin_43921949的博客 7369

从零开始:用7353张VOC/YOLO格式混凝土缺陷数据集训练你的第一个检测模型

本文详细介绍了如何使用7353张VOC/YOLO格式的混凝土缺陷数据集训练首个目标检测模型。从环境配置、数据解析到YOLOv5模型训练与优化,提供了完整的实战指南,特别针对数据不平衡问题给出了解决方案,助力开发者快速掌握混凝土缺陷识别技术。

weixin_42651281的博客 257

Dubbo相关介绍

一、Dubbo产生的背景 互联网项目用户量增加,访问并发量的增加,一个应用中所有的功能都集中于一个项目已经不能满足需要了,系统性能急需提升。提升性能的最直接的方式是构建集群,构建具有负载均衡功能的集群。但仅仅依靠增加具有相同业务功能的主机来提高系统的性能能了是有限的。需要将应用的功能进行分解,分解为多个子工程,每个子工程仅完成某一特定功能,例如,登录子工程、订单业务子工程、支付...

dianqu2773的博客 288

nnDetection复现Luna16 附模型

淘论文发现nnDetection框架对肺结节的检测效果挺好,便跑了跑复现了下, 作者诚不欺人,确实挺好, 并附上我依据文档训练的模型。

HeavenWalker 2597

【Dubbo原理】(一)Dubbo的微内核架构及SPI机制

微内核架构也被称为插件式架构,它是一种面向功能进行拆分的架构模式,除了我们接下来要聊的Dubbo以外,我们日常使用的IDEA、Eclipse这类IDE软件,操作系统,银行系统等都是采用了这种架构模式。SPI 全称为 Service Provider Interface,翻译为:服务提供程序接口。它是一种服务发现机制,本质就是将接口的实现类的完全限定名配置在文件中,服务在运行的过程中,可以通过加载器读取配置文件并加载实现类,从而达到在运行时动态的为接口替换实现。如何更通俗的理解SPI?

积木成林,聚沙成塔 2065

【Telephony】Telephony总纲!Phone进程流程(AOSP)

整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。 Phone进程启动的过程中,会初始化非常多的分支功能,SIM卡流程初始化就是其中之一,所以我觉得有必要写一下Phone进程的框架

weixin_44513784的博客 1979

保姆级教程:用Python+NumPy手把手模拟光学散射与记忆效应(附代码)

本文提供了一份详细的Python+NumPy教程,手把手教你模拟光学散射与记忆效应。从基础光波建模到散射介质实现,再到菲涅尔衍射和光学记忆效应验证,逐步构建完整的仿真系统。通过附带的代码示例,读者可以快速掌握计算光学仿真的核心技术,为医学成像、物理仿真等领域的研究提供实用工具。

weixin_30172941的博客 325

java 微内核 插件案例,一文读懂微内核架构 - 飘渺Jam的个人空间 - OSCHINA - 中文开源技术交流社区...

什么是微内核架构?微内核是一种典型的架构模式 ,区别于普通的设计模式,架构模式是一种高层模式,用于描述系统级的结构组成、相互关系及相关约束。微内核架构在开源框架中的应用非常广泛,比如常见的 ShardingSphere 还有Dubbo都实现了自己的微内核架构。那么,在介绍什么是微内核架构之前,我们有必要先阐述这些开源框架会使用微内核架构的原因。为什么要使用微内核架构?微内核架构本质上是为了提高系统...

weixin_39929138的博客 1043

本地化搭建DeepSeek+RAGFlow,构建个人知识库

本地化搭建DeepSeek+RAGFlow,构建个人知识库。至少32G以上内存、500G以上空余磁盘空间。

gogospecter的专栏 7432

Dubbo原理和源码解析之“微内核+插件”机制

github新增仓库 "dubbo-read"(点此查看),集合所有《Dubbo原理和源码解析》系列文章,后续将继续补充该系列,同时将针对Dubbo所做的功能扩展也进行分享。不定期更新,欢迎Follow。 1 框架设计 在官方《Dubbo 开发指南》框架设计部分提到,Dubbo 服务框架的基本设计原则是: 采用 URL 作为配置信息的统一格式,所有扩展点都通过传递 URL 携带配置信息; 采用 Microkernel + Plugin 模式,Microkernel 只负责组装 Plugin..

chuixue24的博客 439

【OpenFOAM】-olaFlow-算例4- irreg45degTank

不规则波浪模拟

ou_no的博客 2117

rk3568 适配以太网(mac 2 mac)

MDIO(Management Data Input/Output)是一种管理数据输入/输出协议,用于在以太网交换机和PHY(物理层收发器)之间进行通信。在Android中,MDIO总线用于控制网络接口的PHY芯片,例如通过MDIO总线访问PHY芯片的寄存器。这些寄存器包含了一些关于网络连接状态、链路速度和其他计算机网络相关信息的数据。MDIO总线通常由网络接口控制器(NIC)使用,以便在OS中管理PHY芯片。在Android设备上,MDIO总线通常由内核驱动程序管理,并且可以通过 /sys/bus/mdi

weixin_35723192的博客 2454

Dubbo微内核+插件机制实战:如何自定义扩展点替换默认功能?

本文深入解析了Dubbo微内核架构的设计哲学与SPI扩展机制,并通过实战案例详细演示了如何自定义扩展点以替换默认功能。文章以自定义负载均衡算法和协议实现为例,阐述了从接口定义、实现到配置部署的完整流程,帮助开发者掌握利用Dubbo插件化架构进行深度定制的能力。

xxx12的博客 738

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Dubbo扩展机制:ExtensionLoader

一、前言     Dubbo的ExtensionLoader是实现“微内核+插件式”的重要组件,它基于java spi机制却又提供了如下扩展:jdk spi仅仅通过接口类名获取所有实现,而ExtensionLoader则通过接口类名和key值获取一个实现Adaptive实现,就是生成一个代理类,这样就可以根据实际调用时的一些参数动态决定要调用的类了自动包装实现,这种实现的类一般是自动激活的,常用于...

yangxiaobo118的博客 2876

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

(四)Dubbo的SPI机制的底层是如何实现的?

(一)什么是SPI机制?Java中的SPI机制是如何实现的? (1)首先先说一下JavaSPI机制(Service Provider Interface)其实说白了就是定义一个接口,但是可以有多个实现该接口的实现类,其实也是一种服务发现机制。 其实SPI机制的本质就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类 (2)那么D...

王伟的博客 820

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

dubbo应用之微内核架构

Dubbo的微内核架构是一种可扩展的设计模式,基于核心框架 + 扩展插件的思想。dubbo的微内核架构设计理念,体现了一种可插拔,高度可扩展的架构设计,我们在日常的编程中也可以参考这种思路,用一种类似于操作系统的理念来设计自己的系统,当然一定要根据实际的场景需要,切勿过度设计。

shine0312的专栏 273

聊聊Dubbo - Dubbo可扩展机制实战

1. Dubbo的扩展机制 在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 如同罗马不是一天建成的,任何系统都一定是从小系统不断发展成为大系统的,想要从一开始就把系统设计的足够完善是不可能的,相反的,我们应该关注当下的需求,然后再不断地对系统进行迭代。在代码层面,要求我们适...

weixin_33816611的博客 417

Dubbo源码学习笔记 之 扩展机制与ExtensionLoader类

 dubbo的代码很久之前看过一遍,个人比较懒,没有做笔记总结,很多都忘了。最近抽时间仔细学习了下源码,记录总结下,加深印象。  环境:   源码版本: 2.7.3-SNAPSHOT IDE: idea Intelij 1. 扩展机制 与 ExtensionLoader 类 Dubbo 采用 的微内核+扩展的优秀设计,扩展点设计借鉴了JDK 的S...

weixin_30672295的博客 133

[Dubbo3.0.8源码解析系列]-4-Dubbo的SPI扩展机制与ExtensionLoader对象的创建源码解析

在上一章中我们初始化模型对象的时候了解到有几个地方用到了扩展机制来初始化对象,这一章我们会详细来讲一下这个扩展对象的加载过程 TypeDefinitionBuilder.initBuilders(this); public static void initBuilders(FrameworkModel model) { Set<TypeBuilder> tbs = model.getExtensionLoader(TypeBuilder.class).getSupported

宋小生-中间件 1872

理解 Dubbo SPI 扩展机制

写在前面 最近接触了 gRPC 体会到虽然众多 RPC 框架各有各的特点但是他们提供的特性和功能有很多的相似之处 , 这就说明他们面对同样的分布式系统带来的问题。从 2016 年左右开始接触到 dubbo ,基本停留在使用的层面,对 dubbo 的设计以及着重要解决的问题都没有系统的研究过,通过对 dubbo 和其他类似 RPC 产品的系统学习 ,学习分布式系统中面临的共同问题以及解决之道。 回到顶部 微内核架构 微内核架构 (Microkernel architecture)模...

daobuxinzi的博客 150
上一篇: MySQL 笔记 - 索引优化
下一篇: Java面试题大全(流行的框架部分)
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值