从零到一手写一个小型RPC框架——介绍篇
RPC框架介绍
RPC框架是微服务的通信工具,其涉及到网络传输、服务注册、序列化、代理模式等等知识的学习与使用,是微服务的入门框架。
现有的比较知名的RPC框架有阿里巴巴开源的Dubbo,谷歌的开源RPC框架gRPC,甚至SpringCloud中所使用的OpenFeign。既然具有如此多的RPC框架,那么其原理与使用则代表着我们需要认真学习。
项目背景
基于兴趣与找工作的目的,我在22年春招期间花了大约一周的时间开发了一个RPC框架,当时由于比较着急,所以并没有去了解RPC的痛点问题、背景等,只是依据Dubbo源码与网上的教程开发了一个简单的RPC。
在后续的复盘中,我发现现有网上的RPC从架构上就存在一定的问题,其并没有达到一个合格的RPC框架的使用标准,这也意味着我当时的RPC存在大量的问题。
在经历了大约一年的学习后,我决定重新按照我自己的思路重新编写一个RPC框架,再锻炼自己的技术与架构能力的同时,帮助同学们从0到1完成一个RPC框架。
这个应该算是我自己的2.0版本,本次取名为Bg-RPC(不鸽RPC),因为我比较的懒,本次取此RPC的名字也是激励自己一定要认真保质保量的完成此开源项目。
虽然说现在网上琳琅满目的小型RPC教程数不胜数,也有面试官跟我交流的时候说RPC已经是一个很成熟的产品了,并且确实RPC领域已经特别特别卷了,很难有革命性的突破,但是我认为对于自己来说还可以有以下的加强与探索点:
- 完整且合理的基准测试与压力测试
- 支持多种注册中心并且最好是在未来嵌入一个注册中心
- 支持多种序列化方式并且最好在未来嵌入一个序列化方式
- 对Netty直接内存管理的自动GC的实现
- 自研一个网络IO框架
开源地址以及教程内容
开源地址: 教程内容:
-
RPC之运行流程与架构分析 RPC之服务发现与注册 RPC之序列化方式 RPC之动态代理 RPC之网络传输 RPC之SPI机制 RPC之负载均衡算法 RPC之心跳检验 以及后续进阶内容