远程过程调用失败_Java中的远程过程调用(RPC)

本文结合课程内容,对远程过程调用(RPC)进行了介绍。RPC是一种进程间通信技术,用于客户端 - 服务器应用程序。文中阐述了其定义、顺序,分析了优缺点,还给出了在Java中通过Socket、反射机制和动态代理实现RPC框架的实例。

687324836c6ae2fb29dda6e9e090378d.png

目录

  • 目录
  • 1. 背景
  • 2. 远程过程调用的定义
  • 3. 远程过程调用的优点
  • 4. 远程过程调用的缺点
  • 5. 实例
    • 5.1. 客户端
    • 5.2. 远程对象
    • 5.3. 服务端
  • 6. 参考文献

1. 背景

这学期上了《分布式系统》课程,内容主要是基于Java实现分布式计算,所以老师前几节课主要在给我们讲用Java做分布式可能会用到的一些技术。为了方便学习和记录,我将老师讲的内容结合书籍和资料做了一些整理,这一篇主要讨论远程过程调用。

2. 远程过程调用的定义

远程过程调用是一种进程间通信技术,用于基于客户端-服务器的应用程序。它也被称为子例程调用或函数调用。

客户端有一个请求消息,RPC将其转换并发送给服务器。此请求可以是对远程服务器的过程或函数调用。当服务器接收到请求时,它将所需的响应发送回客户机。客户端在服务器处理调用时被阻塞,只有在服务器完成后才恢复执行。[1]

远程过程调用的顺序如下:

  • 客户端存根由客户端调用。
  • 客户端存根发出一个系统调用,将消息发送到服务器,并将参数放入消息中。
  • 客户端操作系统将消息从客户端发送到服务器。
  • 消息由服务器操作系统传递到服务器存根。
  • 服务器存根从消息中删除参数。
  • 然后,服务器存根调用服务器执行操作。
  • 执行完成后,结果原路返回到客户端。

过程如下图所示

890fd3e11331ec8b1daceddcc56003c7.png

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,有问题欢迎通过邮箱交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值