初中生都能看懂的RPC教程——3分钟让你搞明白RPC

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说白了就是这么简单。 问题:

  1. 计算机A和计算机B根本就是两台计算机,不是同一块内存,A怎么去调用B上的方法呢?
  2. 在计算机A上调用计算机B上的run()方法时,如何像本地调用一样方便,让调用者感知不到远程调用的逻辑呢?

思考:

    既然是两台计算机,那肯定需要用网络来通信; 可不可以这样?计算机A通过网络,给计算机B发送了想要调用run()的请求,并把参数100米发给B,B收到请求,自己调用run(),然后将结果传给A。 其实RPC就是这么干的! 说白了,RPC就是用一种策略,在计算机A上调用计算机B上的方法,它广泛应用于分布式系统。 总结
  1. 计算机A调用计算机B上的dog.run()方法,它们不在一台计算机上,所以底层需要用网络传输
  2. 底层网络传输,你可以用Java的Socket,也可以用基于Http协议的HttpClient,RPC并没有规定说你要用何种协议进行通讯

实践篇:《》

经验分享 程序员 微信小程序 职场和发展