Java后端实战项目推荐-手写RPC框架
RPC框架的搭建的学习视频可以在慕课网,搜索RPC,即可看到,“自己动手实现RPC框架”,当然,这个课程全程只有两个多小时,仅仅是一个带你入门的作用,更多的学习,可以通过阅读Dubbo等RPC框架的源码来进行。
1. 项目介绍
首先了解什么是RPC框架,RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。下面是常见的集中RPC框架的对比。
该项目将带大家从原理及实现上理解RPC框架。
首先讲解RPC是什么,我们为什么需要RPC;
进一步分析其核心原理,梳理其中会涉及到的技术点,为我们后续造轮子做准备;
然后从工程建立模块划分开始,接着定义协议、实现序列化、实现网络模块、实现server模块、实现client模块,开发完成之后利用自己的RPC开发一个具备分布式特效的功能。
当然,RPC的功能远不止此,我们可以通过阅读更多的开源代码,来为自己RPC框架增加功能,这也是一件充满乐趣的事情。
2. 从此项目中我们可以学到什么
上图主要说明了RPC框架的五个模块,包括五个主要模块,包括协议模块、序列化模块、网络模块、server模块以及Client模块,同时说明了每个模块中的类及其调用关系。
课程主要实现了Server和Client的远程调用,包括动态代理、序列化以及网络传输。
但是在本课程中没有实现注册中心模块,各位可以参考相关RPC框架(个人参考Dubbo)来进行完善。
个人主要额外实现的部分:
-
基于redis实现的注册中心 -
更多负载均衡算法的实现
2.1 后端技术
-
Lombok -
负载均衡策略 -
Fastjson序列化 -
JDK动态代理 -
HTTP网络编程 -
Maven -
Redis实现的注册中心(可选)
2.2 其他技术
-
Git
3. 简历中如何写?
项目名称:基于Java语言实现的RPC框架
项目描述:
-
实现轻量级RPC框架,使得客户端可以通过网络从远程服务端程序上请求服务 -
注册中心部分使用Redis实现注册、订阅功能(可选) -
在客户端实现了基于一致性哈希算法的负载均衡(可选) -
动态代理部分使用JDK动态代理 -
网络传输部分使用Http协议进行传输
4. 总结
该项目是一个基于全长两个多小时的视频的小项目,在完成整个课程之后,我们即可对RPC框架的基本原理b、功能和实现方式有着一定的了解。
但是,这是一个值得你在完成之后继续花心思去琢磨去研究的项目。
通过研究Dubbo等常见RPC框架,你可以为你的RPC项目添加模块,比如注册中心,也可以为你现有的模块增加更多的实现方法,比如各类负载均衡算法的实现,基于Netty的通信等等,如果你可以将这些融会贯通,那么对你的成长以及面试都会有非常大的帮助。
往期实战项目推荐