Skip to content

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

License

Notifications You must be signed in to change notification settings

yeecode/EasyRPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7eb8975 · Sep 27, 2024

History

10 Commits
Sep 27, 2024
Oct 24, 2021
Sep 27, 2024
Sep 27, 2024
Feb 22, 2020
Feb 22, 2020
Sep 27, 2024

Repository files navigation

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代码

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages