dubbo
文章平均质量分 78
阿斌Java之路
这个作者很懒,什么都没留下…
展开
-
Dubbo全文索引
《我的Dubbo学习计划》《Dubbo框架整体设计》《框架基石,DubboSPI机制》《Dubbo服务暴露原理》《Dubbo服务引用原理》《Dubbo服务调用过程》《Dubbo集群容错》《Dubbo过滤链Filter》《Dubbo八股文,查缺补漏》...原创 2022-05-22 13:58:17 · 275 阅读 · 0 评论 -
Dubbo八股文,查缺补漏
恭喜大家看完了dubbo源码,但是这些问题你能回答的上来么?快看看dubbo相关的八股文,给自己做一个总结,并查缺补漏吧!1.Dubbo是什么?RPC又是什么?2. Dubbo能做什么?3.能说下Dubbo的总体的调用过程吗?4.说说Dubbo 支持哪些协议,每种协议的应用场景和优缺点5.Dubbo中都用到哪些设计模式?6.如果Dubbo中provider提供的服务由多个版本怎么办?7.服务暴露的流程是怎么样的?8.服务引用的流程是怎么样的?9.Dubbo的注册中心有哪些?10.聊聊Dubbo SPI机制转载 2022-05-22 13:50:33 · 433 阅读 · 0 评论 -
Dubbo过滤链Filter
dubbo的过滤器是运行在远程调用invoke的过程。它的注入时机,是通过dubbo的wrapper包装机制,通过ProtocolFilterWrapper类组装过滤链条,也就是责任链模式。来看看有多少dubbo自带过滤器:以及每个过滤器的作用:具体的组装逻辑和每个过滤器的作用,自行看源码源码阅读《深度解析dubbo过滤器Filter》《深度解析dubbo过滤器之回声测试》《深度解析dubbo过滤器之ContextFilter》《深度解析dubbo过滤器之TimeoutFilter》《原创 2022-05-22 13:49:28 · 299 阅读 · 0 评论 -
Dubbo集群容错
本篇文章,将开始分析 Dubbo 集群容错方面的源码。集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。集群容错体现在我们的客户端调用中,通过invoker屏蔽了底层的细节,看看调用invoker会发生啥:在服务消费者初始化期间,集群 Cluster 实现类为服务消费者创建 Cluster Invoker 实例,即上图中的 merge 操作。在服务消费者进行远程调用时。以 FailoverClusterI原创 2022-05-22 13:48:53 · 242 阅读 · 0 评论 -
Dubbo服务调用过程
服务调用过程由于 Invoker 是 Dubbo 领域模型中非常重要的一个概念,很多设计思路都是向它靠拢。这就使得 Invoker 渗透在整个实现代码里,对于刚开始接触 Dubbo 的人,确实容易给搞混了。 下面我们用一个精简的图来说明最重要的两种 Invoker——服务提供 Invoker 和服务消费 Invoker:贴一张服务调用的整体过程图这张图可以看出大致的整理流程,然而一些集群,重试,负载均衡等步骤会专门抽出一节来讲。本章更注重服务端和消费端具体的通信细节,线程模型等。客户端调用客原创 2022-05-22 13:48:19 · 3018 阅读 · 1 评论 -
Dubbo服务引用原理
服务引用细节在整体上看,Dubbo框架做服务消费也分为两大部分,第一步通过持有远程服务实例生成Invoker,这个Invoker在客户端是核心的远程代理对象。第二步会把Invoker通过动态代理转换成实现用户接口的动态代理引用。这里的Invoker承载了网络连接、服务调用和重试等功能,在客户端,它可能是一个远程的实现,也可能是一个集群实现。这个图实际上说的并不好,实际上我们是在RegistryProtocol(注册中心)refer到了RegistryDirectory(服务提供者的动态刷新类)然后被我原创 2022-05-22 13:47:49 · 318 阅读 · 0 评论 -
Dubbo服务暴露原理
服务暴露就是provider将对应接口的实现类,转换为可调用的invoker,并且导出为exporter的过程。具体的暴露时序图如下:我们可以通过编写api模式的服务暴露,从export作为入口,查看源码。public static void main(String[] args) throws Exception { ServiceConfig<DemoServiceImpl> service = new ServiceConfig<DemoServiceImpl原创 2022-05-22 13:47:05 · 1015 阅读 · 0 评论 -
框架基石,DubboSPI机制
Dubbo良好的扩展性与两个方面是密不可分的,一是整 个框架中针对不同的场景,恰到好处地使用了各种设计模式,二就是本章要介绍的加载机制。基于DubboSPI加载机制,让整个框架的接口和具体实现完全解耦,从而奠定了整个框架良好可扩展性的基础。dubbo的扩展核心类ExtensionLoader可谓框架的基石。可以看到源码中大量引入的ExtensionLoader相关的扩展机制,了解了扩展机制是阅读后续源码的大前提。ExtensionLoader.getExtensionLoader(Cluster.cla原创 2022-05-22 13:46:28 · 372 阅读 · 0 评论 -
Dubbo框架整体设计
dubbo调用关系dubbo的调用关系主要由四部分组成:一、Provider: 暴露服务的服务提供方Protocol:协议, 负责提供者和消费者之间协议交互数据Service:服务,真实的业务服务信息,可以理解为接口和实现Container:容器,dubbo的运行环境二、Consumer:调用远程服务的服务消费方Protocol:协议,负责提供者和消费者之间协议交互数据Cluster:集群,感知提供者端的列表信息Proxy:代理,可以理解为提供者的服务调用代理类,由它接管Consu原创 2022-05-22 13:45:35 · 321 阅读 · 0 评论 -
我的Dubbo学习计划
大家好,我是阿斌。从今天开始,我们就要开始学习一个优秀的RPC框架-Dubbo了。从大致的使用流程,再到深入探究源码,预计的学习时间是在三周左右。开始学习在学习之前,我们可以先了解一下,一个优秀的RPC框架能够提供什么样的能力?远程调用动态代理序列化网络通信编码对调用方来说,只需要调用一个接口,而接口最终的实现,是一个屏蔽了底层细节的proxy。proxy会帮助我们将参数序列化,编码,网络传输给远程服务。在提供者端,会统一解析请求,根据映射关系找到具体的接口实现,并返回结果。在网络传原创 2022-05-22 13:44:32 · 1357 阅读 · 2 评论