Java实现一个简单RPC框架

什么是RPC框架

RPC(Remote Procedure Call),顾名思义,指的是远程过程(方法)调用,与之相对应的就是本地方法调用。

本地方法调用:
Java实现一个简单RPC框架
放到具体的代码中,可以理解为,被调用方(producer)和调用方(consumer)在同一个项目当中。
远程方法调用:
Java实现一个简单RPC框架
放到具体的代码中,可以理解为,被调用方法(producer)和调用方(consumer)在不同的项目当中。

为什么还要使用远程调用?

远程调用主要的目的就是为了降低机器的负载,把消耗资源比较大的操作放到一个独立的机器上。比如上图中 Provider 的 print 方法就是一个比较消耗资源的操作,这时我们把它放到机器 B 上,就可以降低机器 A 的负载,从而不会影响到机器 A 中其他重要业务的正常执行。

使用主要技术

  • 动态代理:jdk的动态代理。
  • 序列化和反序列化:java的序列化。
  • 网络通信:socket通信(BIO方式)。
  • 反射、注解

项目结构图

Java实现一个简单RPC框架

代码