{"id":15351349,"url":"https://github.com/tangsiyang2001/compact-rpc","last_synced_at":"2025-08-21T15:41:23.978Z","repository":{"id":127684916,"uuid":"463166123","full_name":"TangSiyang2001/compact-rpc","owner":"TangSiyang2001","description":"可插拔式的微内核RPC框架，旨在支持高可拓展性和轻量化的RPC功能。","archived":false,"fork":false,"pushed_at":"2022-09-03T08:22:50.000Z","size":206,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T19:20:04.334Z","etag":null,"topics":["java","nacos","netty","netty-rpc","protocol","rpc","rpc-framework","spi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TangSiyang2001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-24T13:51:11.000Z","updated_at":"2023-05-01T02:37:02.000Z","dependencies_parsed_at":"2023-08-17T04:15:47.109Z","dependency_job_id":null,"html_url":"https://github.com/TangSiyang2001/compact-rpc","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":"0.10526315789473684","last_synced_commit":"b23de381c1bca7e124be6921c5c99630450464f6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TangSiyang2001/compact-rpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangSiyang2001%2Fcompact-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangSiyang2001%2Fcompact-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangSiyang2001%2Fcompact-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangSiyang2001%2Fcompact-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TangSiyang2001","download_url":"https://codeload.github.com/TangSiyang2001/compact-rpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangSiyang2001%2Fcompact-rpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271501795,"owners_count":24770711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","nacos","netty","netty-rpc","protocol","rpc","rpc-framework","spi"],"created_at":"2024-10-01T12:03:41.633Z","updated_at":"2025-08-21T15:41:23.918Z","avatar_url":"https://github.com/TangSiyang2001.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# compact-rpc\n\n#### 项目简介\n\n- 适合框架开发学习和小型项目使用的轻量级rpc框架。\n- 主要功能模式类似于知名rpc框架dubbo。\n- 该项目麻雀虽小，五脏俱全，孵化于作者学习中间件开发的过程中。跟随本项目的实现思路能够使读者快速掌握一个rpc框架的基本原理和设计思想。\n- 为了更加方便地理解本项目，您需要对[Netty](https://netty.io/)（通信框架）和[Nacos](https://nacos.io/)（注册中心）稍作了解。\n\n#### 项目模块\n\n- **compact-rpc-base**：该项目的基础模块，实现了项目通用的接口、注解、实体和工具。\n- **compact-rpc-impl**：该项目的主要模块，实现了该rpc框架的通信协议、序列化机制，服务注册与发现，服务端、客户端通信等主体功能。\n- **compact-rpc-spring**：该项目的拓展模块，实现与原生spring框架的适配，能够伴随ApplicationContext自启动，同时根据注解情况自动完成服务注册，支持远程过程调用。\n- **compact-rpc-example**：示例模块，其中带有compact-rpc-test前缀的均为测试模块。\n  - **compact-rpc-test-api**：服务端与客户端共同依赖的服务接口模块。\n  - **compact-rpc-test-client**：客户端样例。\n  - **compact-rpc-test-server**：服务端样例。\n\n#### 快速开始\n\n[下载Nacos](https://github.com/alibaba/nacos/releases)\n\n**在本地启动Nacos单机版**\n\n首先先在命令行中切换到相应安装目录下\n\n```bash\ncd nacos/bin\n```\n\n运行\n\n###### Windows\n\n```bash\nstartup.cmd -m standalone\n```\n\n###### Linux/Unix/Mac\n\n```bash\nsh startup.sh -m standalone\n```\n\n如果您使用的是ubuntu系统，或者运行脚本报错提示[[符号找不到，可尝试如下运行：\n\n```bash\nbash startup.sh -m standalone\n```\n\n![image-20220422230615761](http://cdn.blog.yileng.top/image-20220423210318408.png)\n\n观察到nacos启动成功\n\n##### 克隆项目到本地\n\n等待依赖导入成功后，运行服务端测试（com.tsy.rpc.test.server.App的main方法）\n\n![image-20220422231304094](http://cdn.blog.yileng.top/image-20220422231304094.png)\n\n\n\n![image-20220422232146205](http://cdn.blog.yileng.top/image-20220423210834811.png)\n\n正常启动\n\n![image-20220422231600599](http://cdn.blog.yileng.top/image-20220422231600599.png)\n\n若服务端没有出现异常退出，运行客户端测试（com.tsy.rpc.test.client.App的main方法）\n\n![image-20220422231711768](http://cdn.blog.yileng.top/image-20220422231711768.png)\n\n\n\n![image-20220422232106090](http://cdn.blog.yileng.top/image-20220423210432954.png)\n\n控制台打印出hello rpc!字样，测试成功。\n\n![image-20220422231902456](http://cdn.blog.yileng.top/image-20220423211058800.png)\n\n\n\n#### 主要实现内容\n\n- spi机制\n\n  ​\tExtensionLoader的实现\n\n- 客户端 动态代理\n\n- 服务端\n\n- 注册中心\n\n  ​\tnacos sdk\n\n- 通信消息实体\n\n- 自定义协议\n\n  4B  magic code（魔法数）   1B messageType（消息类型） 1B version（版本）  1B compress（压缩类型） 1B codec（序列化类型）  4B  requestId（请求的Id）  4B full  length（消息长度）\n\n- 序列化/反序列化实现\n\n- protostuff\n\n- 负载均衡\n\n- spring扩展\n\n#### 设计与实现思路\n\n待更新","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangsiyang2001%2Fcompact-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftangsiyang2001%2Fcompact-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangsiyang2001%2Fcompact-rpc/lists"}