3分钟让你搞明白RPC——初中生都能看懂的RPC教程
看了看网上的RPC教程,讲的都太废话连篇了,决定自己写一个,几句话解释清楚,只要你能看懂java代码,就能看懂这篇文章。
- RPC
英文名:Remote Procedure Call
中文名:远程过程调用
啥意思:说白了,RPC就是在一台计算机上,调用另一台计算机上的函数,所以它肯定会用到网络通信。 - 举个例子
我们在计算机B上写了个小狗跑步的程序,调用了run()函数,让小狗跑了100米,这程序很弱智,都能看懂;
这其实就是非常普通的本地函数调用,因为在同一块内存,用方法栈和参数栈就能实现:
public class Dog {
public static void main(String[] args) {
Dog dog = new Dog();
String result = dog.run(100);
System.out.println(result);
}
public String run(int length) {
return "我跑到终点了,跑了" + length + "米";
}
}
问题来了,我们想在计算机A上,像调用本地方法一样,调用计算机B上dog对象的run()方法,这就是RPC要干得事,RPC说白了就是这么简单。
问题:
- 计算机A和计算机B根本就是两台计算机,不是同一块内存,A怎么去调用B上的方法呢?
- 在计算机A上调用计算机B上的run()方法时,如何像本地调用一样方便,让调用者感知不到远程调用的逻辑呢?
思考:
- 既然是两台计算机,那肯定需要用网络来通信;
- 可不可以这样?计算机A通过网络,给计算机B发送了想要调用run()的请求,并把参数100米发给B,B收到请求,自己调用run(),然后将结果传给A。
其实RPC就是这么干的!
说白了,RPC就是用一种策略,在计算机A上调用计算机B上的方法,它广泛应用于分布式系统。 - 总结
- 计算机A调用计算机B上的dog.run()方法,它们不在一台计算机上,所以底层需要用网络传输
- 底层网络传输,你可以用Java的Socket,也可以用基于Http协议的HttpClient,RPC并没有规定说你要用何种协议进行通讯
好了,看到这里我们都明白RPC是怎么回事了,具体RPC是如何实现的,请看下一篇。
下一篇,将为大家展示如何实现一个简单的RPC通信实例,非常简单!