/EasyRPC

EasyRPC是一个远程过程调用(Remote Procedure Call,简称RPC)的最小实现。它使用极少的类、方法演示了RPC的实现原理,是一个学习RPC工作原理的良好示例。

Primary LanguageJavaApache License 2.0Apache-2.0

EasyRPC

language license

EasyRPC是一个远程过程调用(Remote Procedure Call,简称RPC)的最小实现。它使用极少的类、方法演示了RPC的实现原理,是一个学习RPC工作原理的良好示例。

该项目十分简单,包括客户端EasyRpcClient和服务端EasyRpcServer两部分。演示时,EasyRpcClient会通过RPC调用EasyRpcServer中的方法。

功能演示

/client/target/文件夹下下载最新版的EasyRpcClient-x.x.x.jar文件,并使用下面的命令启动:

java -jar EasyRpcClient-x.x.x.jar

则EasyRpcClient启动,并工作在12310端口。

/server/target/文件夹下下载最新版的EasyRpcServer-x.x.x.jar文件,并使用下面的命令启动:

java -jar EasyRpcServer-x.x.x.jar

则EasyRpcServer启动,并工作在12311端口。

然后可以调用以下几个方法:

  • 127.0.0.1:12310/getUserCount
  • 127.0.0.1:12310/getUserInfo
  • 127.0.0.1:12310/addUser
  • 127.0.0.1:12310/querySchoolName

上面几个方法会被则EasyRpcClient接收。然后,EasyRpcClient会通过RPC调用EasyRpcServer获得操作结果,并返回。

功能实现

EasyRpcClient实现

业务代码类为MainControllerSchoolServiceUserService三个类。其中MainController类负责接收外部请求并调用SchoolServiceUserServiceSchoolServiceUserService是两个接口,并不包含实现,其具体实现由EasyRpcServer提供。

RPC代码类在rpc子包中,主要完成动态代理、远程调用参数序列化、远程调用发起、远程调用结果反序列化等工作。

EasyRpcClient代码

EasyRpcServer实现

业务带代码类为SchoolServiceUserService两个类,类中包含具体实现。EasyRpcClient通过RPC最终调用了这里的代码。

RPC代码类在rpc子包中,主要完成远程调用接收、调用参数反序列化、调用实际触发、调用结果序列化等工作。

EasyRpcServer代码