从零开始手写 dubbo rpc 框架

rpc

rpc 是基于 netty 实现的 java rpc 框架,相似于 dubbo。java

主要用于我的学习,由渐入深,理解 rpc 的底层实现原理。git

前言

工做至今,接触 rpc 框架已经有很长时间。github

可是对于其原理一直只是知道个大概,历来没有深刻学习过。apache

之前一直想写,但因为各类缘由被耽搁。markdown

技术准备

Java 并发实战学习并发

TCP/IP 协议学习笔记负载均衡

Netty 权威指南学习框架

这些技术的准备阶段,花费了比较长的时间。tcp

也建议想写 rpc 框架的有相关的知识储备。ide

其余 rpc 框架使用的经验此处再也不赘述。

快速迭代

原来一直想写 rpc,却不行动的缘由就是想的太多,作的太少。

想一下把所有写完,结果就是啥都没写。

因此本次的开发,每一个代码分支作的事情实际不多,只作一个功能点。

陆陆续续通过近一个月的完善,对 rpc 框架有了本身的体会和进一步的认知。

代码实现功能,主要参考 Apache Dubbo

文档

文档

文档将使用 markdown 文本的形式,补充 code 层面没有的东西。

代码注释

代码有详细的注释,便于阅读和后期维护。

测试

目前测试代码算不上完善。后续将陆续补全。

rpc 模块

rpc-common 公共代码

rpc-server 服务端

rpc-client 客户端

rpc-register 注册中心

rpc-test 测试模块

代码分支

release_0.0.1-server 服务端启动

release_0.0.2-client 客戶端启动

release_0.0.3-客户端调用服务端

release_0.0.4-p2p 客户端主动调用服务端

release_0.0.5-serial 序列化

release_0.0.6-通用的反射调用

release_0.0.7-timeout 超时处理

release_0.0.8-register 注册中心

release_0.0.9-load balance 负载均衡

release_0.1.0-callType 调用方式

release_0.1.1-fail 失败策略

release_0.1.2-generic 泛化调用

release_0.1.3-gracefully 优雅关闭

release_0.1.4-interceptor 拦截器

测试代码

从 v0.0.6 及其以后,为了让代码保持纯净,将测试代码所有放在 rpc-example。

每一个测试代码和实现版本一一对应。

rpc-example

文档说明

0.0.1-server 服务端启动

0.0.2-client 客戶端启动

0.0.3-客户端调用服务端

0.0.4-p2p 客户端主动调用服务端

0.0.5-serial 序列化

0.0.6-通用反射调用

0.0.7-timeout 超时处理

0.0.8-register 注册中心

0.0.9-load balance 负载均衡

0.1.0-callType 调用方式

0.1.1-fail 失败策略

0.1.2-generic 泛化调用

0.1.3-gracefully 优雅关闭

0.1.4-interceptor 拦截器

相关文章
相关标签/搜索