100 行代码透彻解析 RPC 原理

本文探讨了RPC(远程过程调用)的概念及其工作原理,指出它允许程序在不同服务器间进行无缝调用。以Java中的Dubbo为例,解释了基于接口的RPC调用如何通过动态代理实现。在调用过程中,JDK的Proxy和InvocationHandler起关键作用,InvocationHandler的invoke方法处理远程方法调用并返回结果。
摘要由CSDN通过智能技术生成

49ebb22438b81a1b8e9e96125eedf05a.png

若有收获,请记得分享和转发哦

引 言

本文主要论述的是“RPC 实现原理”,那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用。RPC 是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而开发人员无需额外地为这个交互编程。

值得注意是,两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样。接下来我们便来分析一下一次 RPC 调用发生了些什么?

一次基本的 RPC 调用会涉及到什么?

现在业界内比较流行的一些 RPC 框架,例如 Dubbo 提供的是基于接口的远程方法调用,即客户端只需要知道接口的定义即可调用远程服务。在 Java 中接口并不能直接调用实例方法,必须通过其实现类对象来完成此操作,这意味着客户端必须为这些接口生成代理对象,对此 Java 提供了 ProxyInvocationHandler 生成动态代理的支持;生成了代理对象,那么每个具体的发方法是怎么调用的呢?jdk 动态代理生成的代理对象调用指定方法时实际会执行 InvocationHandler 中定义的 #invoke 方法,在该方法中完成远程方法调用并获取结果。

43f25f7743d1afe2062507a0aa8090f1.png

e2a1139cb5438200a5bf85588bc3a7e0.png

9aec7727c2c938da73e1f2e68cb85e5c.png

5a612541daca1b5a92a451d7784435bd.png

d7626874f49c475230001cafafd89dfc.png

c3ea822ab66c4a71de69ff86c2c63c7a.png

7b80e9745a27884ec55d393ee84a5ce3.png

9fb81224ee9ff427428633e1e79da467.png

e77e8927f1a81307c1a410be5b1262e5.png

c9e9a78bce5bfd67232d715e69454096.png

626d6c80ea332561f3a5934aa40956c4.png

7a28c249a431a4b5b1e9742486be4a2f.png

c04c642b23f8d042f61f10ba98491402.png

cd3149b3911dbdcc43923df98db4091f.png

e70dbaddd2517e47e2ff45eb4748a224.png

254f751b4915f65935fee1c4c74d926e.png

09512f87b5209a221ad3a3413264b5d7.png

4083f0a70f70d7d10a04acacb2f6620a.png

baef25d0572f819b96dcb97a0c94a1f3.png

7629e66a2a51a5d81e60649905d7fc3c.png

1eb5335a53c1ae040200777e5601d28c.png

403c9d95bfd3c2499ea5537196bb2bb4.png

b0ab952be778cf2e599436fc05d17caa.png

232040d9af0897251cd32cc4a0162ee7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值