什么是 RPCRPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。简单来说,RPC 就是远程方法调用,远程方法调用和本地方法调用是相对的两个
文章目录Dubbo是什么RPC又是什么说说Dubbo的分层能说下Dubbo的工作原理吗为什么要通过代理对象通信说说服务暴露的流程说说服务引用的流程有哪些负载均衡策略集群容错方式有哪些了解 Dubbo SPI 机制吗说说Dubbo支持哪些协议Dubbo中都用到哪些设计模式如果让你实现一个RPC框架怎么设计 Dubbo是什么Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用
dubbo要解决的问题1、rpc调用需要定制。额外的工作量 2、分布式服务中,服务动辄几十上百,相互之间的调用错综复杂,相互依赖严重 3、对集群性的服务,需要负载策略 4、对集群性的服务,能动态扩展节点 注意:dubbo的扩展性相当好,使用了spi机制,比如,负载策略只有5种,我们可以自定义一种,然后实现dubbo的对应的负载接口即可使用,而整个dubbo的设计理念都是这样的。dubbo只能支持s
大家好,我是烤鸭: dubbo 源码解析: 1.服务导出 介绍: Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注
最近听到有朋友公司用这个Dubbo,正好想了解一下源码。经过一小段时间分析,发现知识点非常多,很有价值。包括:动态代理,spring整合,各种设计模式,线程池,锁,netty这样基于nio的tcp框架,协议的设计,当然最重要的是一种解决问题的思路,就吧这些体会记录下来: 网上已经看到一些源码分析,总感觉缺少点什么,看完文章还是感觉
1. ReferenceBean 这个bean实现了InitializingBean接口2. 这个类实现了接口的afterPropertiesSet()这个方法,在spring容器启动时,property设置完之后就会调用实现了InitializingBean接口的afterPropertiesSet方法 2.1 方法里分别对consumerConfig,applicationConfig,Mo
一、什么是RPC1.1 RPC概念RPC,Remote Procedure Call 即远程过程调用,与之相对的是本地服务调用,即LPC(Local Procedure Call)。本地服务调用比较常用,像我们应用内部程序**(注意此处是程序而不是方法,程序包含方法)**互相调用即为本地过程调用,而远程过程调用是指在本地调取远程过程进行使用。而RPC框架就是为了帮助我们在本地调用远程过程时,就像调
协议启动流程DubboProtocolDubboProtocol.exportDubboProtocol.openServerDubboProtocol.createServerExchangers.bind(url, requestHandler)new DubboProtocolServer(server)HeaderExchangerpublic class HeaderExchanger
原创
2021-12-01 14:05:15
102阅读
一. Dubbo源码核心模块dubbo的架构如上图,辅助是注册中心和监控中心,负责接收输入的是Provider(肉),负责输出的是ConsumerRegistry:注册中心。 负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。注册中心通过长连接感知 Provider 的存在,在 Provider 出现宕机的时候,注册中心会立即推送相关事件
dubbo的github地址:https://github.com/apache/incubator-dubbo(可下载整个压缩包,解压搜索xsd,就能找到dubbo.xsd文件)zookeeper3.4.10下载地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/(解压到本地,并进入其conf目录,重命名zoo_sample
Cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个。。。
转载
2021-07-30 10:09:04
184阅读
目前处于实习期间,白天工作,网上自主学习。最近没事逛了一下当前招聘网上的招聘要求,其中dubbo这个关键字出现的比较多,因此花了点时间学习了一番,在这写写自己的理解。 说起Dubbo,得先聊聊RPC,如果说互联网架构师互联网行业标配,那么RPC技术是分布式架构的基石一、什么是RPC RPC是指RPC协议:定义了rpc实现的规范,核心过程包括了客户端和服务端的通讯协议,寻址,数据序列化/反序列
从标题就知道,这次我讲的是集群容错中的第二个关键词 Router,中文意思就是 路由,这个 路由是个很有意思的词汇.因为前端的 路由和后端的 路由他们是不同的,但是思想是基本一致的.鉴于很多技术文章都有一个诟病,就是只讲 概念...
转载
2021-07-30 10:02:31
219阅读
终于到了集群容错中的最后一个关键词,也就是 LoadBalance(负载均衡),负载均衡必然会涉及一些算法.但是也不用太担心,算法这个词虽然高大上,但是算法也有简单和复杂之分.既然是源码解析类的文章,那么就有义务让看不懂代码的....
转载
2021-07-30 11:37:22
214阅读
前言ExtensionLoader,从字面理解,拓展组件加载器,是Dubbo里用来加载器内部SPI(ServiceProviderInterface)的加载器。在dubbo框架中,每一个SPI接口都对应着自己的ExtensionLoader实例。 理解ExtensionLoader的内部机制,能够更得心应手的使用Dubbo的拓展组件,比如Filter,Listener,Protocol,
原创
2022-10-18 17:58:44
435阅读
服务导出在这里记录一下对" Dubbo 导出服务的过程"的研究。触发时机public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<Contex
dubbo的源码解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词 directory,
转载
2021-07-30 10:14:25
126阅读
由于明天还要加班(心疼自己一秒),之前答应过小伙伴每周更新一篇dubbo的源码解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词 directory,这个内容不多,比较适合这种时间比较紧的分享.后面还会陆续分享dubbo源码解析系列,但是不止于dubbo.
转载
2021-07-30 11:46:25
104阅读
SPI 全称为 Service Provider Interface,
原创
2023-01-25 08:11:44
163阅读
本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 Protocol+Invoker简介1 Protocol+Invoker简介想要在一个JVM里调用另一个JVM里的的方法,或许你会想到如下的姿势: HttpClient RestTemplate WebService ServerSocket/Socket RMI — 可以参看我的上篇文章《【dubbo源码解析~番外篇】— JDK和Spring的RMI使用姿势简介》但是.
原创
2021-07-09 15:52:43
829阅读