从零开始手写 dubbo rpc 框架
rpc
rpc 是基于 netty 实现的 java rpc 框架,类似于 dubbo。
主要用于个人学习,由渐入深,理解 rpc 的底层实现原理。
前言
工作至今,接触 rpc 框架已经有很长时间。
但是对于其原理一直只是知道个大概,从来没有深入学习过。
以前一直想写,但由于各种原因被耽搁。
技术准备
这些技术的准备阶段,花费了比较长的时间。
也建议想写 rpc 框架的有相关的知识储备。
其他 rpc 框架使用的经验此处不再赘述。
快速迭代
原来一直想写 rpc,却不行动的原因就是想的太多,做的太少。
想一下把全部写完,结果就是啥都没写。
所以本次的开发,每个代码分支做的事情实际很少,只做一个功能点。
陆陆续续经过近一个月的完善,对 rpc 框架有了自己的体会和进一步的认知。
代码实现功能,主要参考 Apache Dubbo
文档
文档
文档将使用 markdown 文本的形式,补充 code 层面没有的东西。
代码注释
代码有详细的注释,便于阅读和后期维护。
测试
目前测试代码算不上完善。后续将陆续补全。
rpc 模块
rpc-common 公共代码
rpc-server 服务端
rpc-client 客户端
rpc-register 注册中心
rpc-test 测试模块
代码分支
release_0.0.9-load balance 负载均衡
测试代码
从 v0.0.6 及其之后,为了让代码保持纯净,将测试代码全部放在 rpc-example。
每个测试代码和实现版本一一对应。
文档说明
从零开始手写 dubbo rpc 框架的更多相关文章
- 手写一个RPC框架
一.前言 前段时间看到一篇不错的文章<看了这篇你就会手写RPC框架了>,于是便来了兴趣对着实现了一遍,后面觉得还有很多优化的地方便对其进行了改进. 主要改动点如下: 除了Java序列化协议 ...
- 手写实现RPC框架(不带注册中心和带注册中心两种)
实现自己的RPC框架如果不需要自定义协议的话那就要基于Socket+序列化. ProcessorHandler:主要是用来处理客户端的请求. package dgb.nospring.myrpc; i ...
- 从0 开始手写一个 RPC 框架,轻松搞定!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:juejin.im/post/5c4481a4f265da613438aec3 之前在 RPC框架底层到底什么原理得知 ...
- 从零开始手写 spring ioc 框架,深入学习 spring 源码
IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...
- java 从零开始手写 RPC (04) -序列化
序列化 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 java 从零开始手写 RPC (03) 如何实 ...
- java 从零开始手写 RPC (05) reflect 反射实现通用调用之服务端
通用调用 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 java 从零开始手写 RPC (03) 如何 ...
- java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
说明 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 写完了客户端和服务端,那么如何实现客户端和服务端的 ...
- java 从零开始手写 RPC (07)-timeout 超时处理
<过时不候> 最漫长的莫过于等待 我们不可能永远等一个人 就像请求 永远等待响应 超时处理 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RP ...
- 从零开始实现一个分布式RPC框架
该rpc框架是一个mini版的dubbo.学习rpc之前,建议先了解NIO,Netty和Dubbo等知识.请移步网络编程 前言:(借用阿里大佬的一段话) 为什么要自己写一个RPC框架,我觉得从个人成长 ...
随机推荐
- 【java基础】Thread类之join方法
- luogu P1327 数列排序
题目描述 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 输入格式 第一行,正整数n (n<=10 ...
- [TimLinux] MySQL 导入sql文件数据慢的问题解决办法
慢的时候执行的命令: mysql -uusername -p -hip_address -Ddb_name < ./db.sql 快的时候执行的命令: mysql -uusername -p - ...
- 2018HDU多校五-G题 Glad You Game (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356 Glad You Game Steve has an integer array aa of ...
- git 多仓库源 配置
在后台配好ssh公匙后 在C:\Users\Administrator\.ssh 下修改config文件 就叫config不带后缀 若没有则新建 配置SSH 密匙 # 配置github.com Ho ...
- 【MobX】MobX 简单入门教程
一.MobX 介绍 首先看下官网介绍: MobX 是一个经过战火洗礼的库,它通过透明的函数响应式编程(transparently applying functional reactive progra ...
- 常用eslint配置
"off"或者0 //关闭规则关闭 "warn"或者1 //在打开的规则作为警告(不影响退出代码) "error"或者2 //把规则作为一个 ...
- inline以及inline-block行内元素:vertical-align属性
- 【MySql】使用学习
[MySql]使用学习 =================================================== 1.太多的连接 Too many connections ======= ...
- 2019年12月18日Linux开发手记
安装idle3: 1.端输入apt install idle3 以安装 2.安装完成后在终端输入idle以启动 配置pip: 1.终端输入apt install python3-pip 使用pip配置 ...