从零开始手写 dubbo rpc 框架

摘要:
rpcrpc是基于netty实现的javarpc框架,类似于dubbo。前言工作至今,接触rpc框架已经有很长时间。也建议想写rpc框架的有相关的知识储备。其他rpc框架使用的经验此处不再赘述。快速迭代原来一直想写rpc,却不行动的原因就是想的太多,做的太少。陆陆续续经过近一个月的完善,对rpc框架有了自己的体会和进一步的认知。代码实现功能,主要参考ApacheDubbo文档文档文档将使用markdown文本的形式,补充code层面没有的东西。
rpc

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

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

前言

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

但是对于其原理一直只是知道个大概,从来没有深入学习过。

以前一直想写,但由于各种原因被耽搁。

技术准备

Java 并发实战学习

TCP/IP 协议学习笔记

Netty 权威指南学习

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

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

其他 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 拦截器

免责声明:文章转载自《从零开始手写 dubbo rpc 框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装spring boot整合shiro下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET(C#)主流ORM总揽

  前言 在以前的一篇文章中,为大家分享了《什么是ORM?为什么用ORM?浅析ORM的使用及利弊》。那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper,Entity Framework(EF)还是ServiceStack.OrmLite?或者是你还有更好的ORM推荐呢? 如果有的话,不防也一起分享给大家。 http...

TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的使用 框架源码结构 补充说明 源码地址 说明 之前有好几篇博客在讲TCP/UDP通信方面的内容,也有做过一些Demo(包括整理出来的、可供学习使用的简单通信框架)。具体可以参见以下博客: http://www.cnblogs.com/xia...

frida rpc调用维护ios手机脚本

1.kill_frida_rpc_server.sh #!/bin/bash echo "关闭服务" echo "`date "+%Y-%m-%d %H:%M:%S"` 正在杀进程..." ps -ef | grep 你的fridarpc服务.py | grep -v grep | awk '{print $2}' | xargs kill -9 ech...

魅族5.0以上设备(亲测有效)激活Xposed框架的流程

对于喜欢研究手机的哥们来说,大多时候会使用到Xposed框架及种种功能强大的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是比较简单的,但随着系统版本的持续更新,5.0以后的系统,激活Xposed框架变得比较麻烦,有些教程甚至需要我们刷入RECOVERY的举措来激活,这给我们带来很大的难度,尤其是对我们屌丝用户来说,...

Django框架简介

Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。 想要更详细的了解MVC模式? >>点我 Django框架的设...

值得推荐的C/C++框架和库 (真的很强大)

  值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接:http...