# study-rpc-all **Repository Path**: li-zhongwei/study-rpc-all ## Basic Information - **Project Name**: study-rpc-all - **Description**: (建议先看说明文档)基于学习开发的高性能rpc框架:study-rpc 主要包含rpc-core的核心代码 而这个仓库做了以下添加:(相当于做了一个整合) 1、整合springboot,能够快速开始 2、提供简单的测试用例 3、提供简单的压力测试 4、代码的模块做了一些管理 压力测试:平均qps6700左右(windows+12核+内存16g) - **Primary Language**: Java - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 3 - **Created**: 2022-10-15 - **Last Updated**: 2024-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # study-rpc-all(支持10Wqps(集群)) 整个项目的完成大概花了半年的空闲时间,期间有大量参考gitee和github上的一些个人开源或者大型开源rpc项目:比如motan、以及一些个人的优秀开源rpc 关于该项目整理的文档,大家可以关注我的csdn博客:https://blog.csdn.net/whatjeans/category_12093707.html?spm=1001.2014.3001.5482 简单分享一下写这个rpc的原因: - :+1: 1. 学习rpc的设计和思想,提高自己的编码能力和设计能力 - :+1: 2. 我在写之前,看了很多别人写的rpc,有的简单,有的复杂,而我写的study-rpc处于之间,有进行一些性能上的小细节优化(总之,新手适合简单的rpc,先了解rpc流程,后面想自己动手实践的时候可以参考一下我的;对于有一定经验,但是对rpc或者看源码比较吃力的的小伙伴,非常建议学习我的study-rpc,因为我的代码比知名度比较高的开源的rpc好理解一些(原因很明显,目前能力有限,设计的通用性和扩展性不是很好)) - :+1: 3. 也是因为写这个组件,期间看了不少的开源代码,也抄了不少的开源代码,总而言之,动手能力和设计能力都有明显的提高,至少在写业务代码的时候会根据业务场景去考虑使用那种设计模式去提高代码的扩展性 - :+1: 4. 竟然吃了这碗饭,希望自己以后也能慢慢融入开源的社区(主要是发现大佬都在开源 :joy: 向大佬看起) 使用技术栈:springboot、netty、zk zk:做注册中心,api使用的是curator (学习阶段:用什么注册中心不重要,工业落地阶段:需要考虑,不同的注册中心侧重点不同,性能也不同) netty:数据通讯层 客户端和服务端均采用netty通信(netty比较重要,基本上javaEE说的出开源的组件基本上都用的netty做的网络通信层) springboot:提供client和server 对应的stater自动配置(springboot应该已经是标配了吧,应该没人想回到ssh时代吧) #### 简单介绍一下这个框架 study-rpc是一款基于java语言开发的rpc框架,目前只支持java语言,建议整合springboot会更好使用 #### 目前已经实现的功能 1. 同步调用 2. 长连接池 3. 动态扩缩容 4. 常见的一些序列化方式 5. 负载算法(随机、轮询) 6. 服务注册和服务发现(zk以及本地注册中心) 7. 提供消费者、生产者、springboot整合的stater,开箱即用 8. 提供简单的使用案例 9. 心跳检测(主要解决服务提供者异常下线) 10. study-rpc文档整理 #### 未来 后面有时间的话,准备去研究一下 rpc调用全异步实现的方式和链路追踪 1. rpc异步调用实现 2. 链路追踪(可视化),提供调用链监测 3. 工业级的智能负载算法落地 4. 采用插件式架构重构项目 study-rpc 主要包含rpc-core的核心代码 而这个仓库study-rpc-all做了以下添加:(相当于结合springboot做了一个整合,写了一个测试接口,代码拉下去,配置环境基本上就可以跑了) 1. 整合springboot,能够快速开始 2. 提供简单的测试用例 3. 提供简单的压力测试 4. 代码的模块做了一些管理 性能 压力测试:平均qps6700左右(windows+12核+内存16g) 做一个集群的话,企业也是能够使用的 性能测试: ![输入图片说明](%E5%90%8C%E6%AD%A5qps.png) #### study-rpc业务架构图 ![输入图片说明](https://foruda.gitee.com/images/1665891422789381305/7f42e499_8235873.png "rpc业务架构图.png") #### 代码包介绍 rpc-core : rpc实现核心 study-rpc-client-stater : 客户端stater study-rpc-server-stater : 服务端stater common-api : 公共接口 test-consumer : client使用案列 test-provider : server使用案列 #### 安装教程 1. 需要前置安装zk,测试的话,单节点即可 2. 服务提供者启动,参考 test-provider包 3. 客户端消费者启动,参考test-consumer包 #### 使用说明(关于使用上还有很多没有规范) 1. 需要前置安装zk,测试的话,单节点即可 2. 服务提供者启动,参考 test-provider包 3. 客户端消费者启动,参考test-consumer包 4. 启动服务提供者 5. 启动消费者 6. 可以尝试测试接口(common-api包的HelloWorldService接口) 按照上述包流程: 1、启动zk 2、test-provider 主启动类 3、test-consumer 主启动类 4、调用test-consumer 的controller包下的HelloWorldController类的sayHello接口做测试 最后的最后,如果有所收获的话,还希望点一个小♥(ˆ◡ˆԅ),fork一下的话,是我更大的鼓励 #### 有关study-rpc的环境问题可以和我讨论交流 联系方式:qq 1210849153 一个还没有工作就有1年工作经验的菜鱼程序员