
目录
- 目录
- 1. 背景
- 2. 远程过程调用的定义
- 3. 远程过程调用的优点
- 4. 远程过程调用的缺点
- 5. 实例
- 5.1. 客户端
- 5.2. 远程对象
- 5.3. 服务端
- 6. 参考文献
1. 背景
这学期上了《分布式系统》课程,内容主要是基于Java实现分布式计算,所以老师前几节课主要在给我们讲用Java做分布式可能会用到的一些技术。为了方便学习和记录,我将老师讲的内容结合书籍和资料做了一些整理,这一篇主要讨论远程过程调用。
2. 远程过程调用的定义
远程过程调用是一种进程间通信技术,用于基于客户端-服务器的应用程序。它也被称为子例程调用或函数调用。
客户端有一个请求消息,RPC将其转换并发送给服务器。此请求可以是对远程服务器的过程或函数调用。当服务器接收到请求时,它将所需的响应发送回客户机。客户端在服务器处理调用时被阻塞,只有在服务器完成后才恢复执行。[1]
远程过程调用的顺序如下:
- 客户端存根由客户端调用。
- 客户端存根发出一个系统调用,将消息发送到服务器,并将参数放入消息中。
- 客户端操作系统将消息从客户端发送到服务器。
- 消息由服务器操作系统传递到服务器存根。
- 服务器存根从消息中删除参数。
- 然后,服务器存根调用服务器执行操作。
- 执行完成后,结果原路返回到客户端。
过程如下图所示

3. 远程过程调用的优点
RPC的一些优点如下:
- 远程过程调用支持面向过程和面向线程的模型。
- RPC的内部消息传递机制对用户隐藏。重写和重新开发代码的工作量在远程过程调用中是最小的。
- 远程过程调用可以在分布式环境中使用,也可以在本地环境中使用。
- 为了提高性能,RPC省略了许多协议层。
4. 远程过程调用的缺点
RPC的一些缺点如下:
- 远程过程调用是一个可以用不同方式实现的概念。它不是一个标准。
- RPC对于硬件架构没有灵活性。它只基于交互。
- 远程过程调用而增加了成本。
5. 实例
Java 中可以通过使用Socket、反射机制和动态代理来实现一个RPC框架。
5.1. 客户端
5.1.1. 客户端实现
package 5.1.2. 动态代理类
package 5.1.3. 连接器
package 5.2. 远程对象
package 5.3. 服务端
package 6. 参考文献
[1] https://www.tutorialspoint.com/remote-procedure-call-rpc
联系邮箱:curren_wong@163.com
Github:https://github.com/CurrenWong
欢迎转载/Star/Fork,有问题欢迎通过邮箱交流。
本文结合课程内容,对远程过程调用(RPC)进行了介绍。RPC是一种进程间通信技术,用于客户端 - 服务器应用程序。文中阐述了其定义、顺序,分析了优缺点,还给出了在Java中通过Socket、反射机制和动态代理实现RPC框架的实例。
1121

被折叠的 条评论
为什么被折叠?



