{"id":21519685,"url":"https://github.com/leeyazhou/nfs-rpc","last_synced_at":"2026-01-27T12:36:49.674Z","repository":{"id":43872790,"uuid":"72528069","full_name":"leeyazhou/nfs-rpc","owner":"leeyazhou","description":"nfs-rpc","archived":false,"fork":false,"pushed_at":"2025-09-04T02:32:37.000Z","size":306,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-04T04:30:18.750Z","etag":null,"topics":["netty","reactive","rpc","spring"],"latest_commit_sha":null,"homepage":"https://leeyazhou.github.io/nfs-rpc/","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/leeyazhou.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-11-01T10:56:52.000Z","updated_at":"2025-09-04T02:32:40.000Z","dependencies_parsed_at":"2025-04-28T10:43:11.027Z","dependency_job_id":"d3d9e44a-84de-4151-94ae-ae1c5a83ef9b","html_url":"https://github.com/leeyazhou/nfs-rpc","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/leeyazhou/nfs-rpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeyazhou%2Fnfs-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeyazhou%2Fnfs-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeyazhou%2Fnfs-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeyazhou%2Fnfs-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leeyazhou","download_url":"https://codeload.github.com/leeyazhou/nfs-rpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeyazhou%2Fnfs-rpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28813215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["netty","reactive","rpc","spring"],"created_at":"2024-11-24T00:59:51.889Z","updated_at":"2026-01-27T12:36:49.664Z","avatar_url":"https://github.com/leeyazhou.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NFS-RPC\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![Java](https://img.shields.io/badge/java-1.8+-green.svg)](https://www.oracle.com/java/)\n[![Maven](https://img.shields.io/badge/maven-3.6+-orange.svg)](https://maven.apache.org/)\n\nNFS-RPC 是一个高性能的Java RPC框架，支持多种网络传输协议和序列化方式，提供简单易用的API接口。\n\n## 📋 项目简介\n\nNFS-RPC 是一个基于Java开发的高性能RPC框架，具有以下特点：\n\n* **多协议支持**: 支持Netty、Netty4、Mina2、Grizzly等多种网络传输协议\n* **多序列化方式**: 支持Java原生序列化、Hessian、Kryo、Protobuf等多种序列化方式\n* **高性能**: 基于异步非阻塞I/O，支持连接池和负载均衡\n* **易扩展**: 模块化设计，支持自定义协议和序列化方式\n* **生产就绪**: 包含完整的性能测试套件和监控功能\n\n## 🏗️ 项目架构\n\n```xml\nnfs-rpc/\n├── nfs-rpc-core/          # 核心模块，包含RPC基础框架\n├── nfs-rpc-codec/         # 序列化模块，支持多种序列化方式\n├── nfs-rpc-netty/         # Netty传输协议实现\n├── nfs-rpc-netty4/        # Netty4传输协议实现\n├── nfs-rpc-mina/          # Mina2传输协议实现\n├── nfs-rpc-grizzly/       # Grizzly传输协议实现\n└── nfs-rpc-benchmark/     # 性能测试模块\n```\n\n## ✨ 主要特性\n\n### 传输协议支持\n\n* **Netty**: 基于Netty 3.x的高性能异步网络框架\n* **Netty4**: 基于Netty 4.x的现代化网络框架\n* **Mina2**: 基于Apache Mina 2.x的网络应用框架\n* **Grizzly**: 基于Grizzly的网络框架\n\n### 序列化支持\n\n* **Java**: Java原生序列化\n* **Hessian**: 高效的二进制序列化协议\n* **Kryo**: 快速、高效的Java序列化库\n* **Protobuf**: Google的高性能序列化协议\n\n### 核心功能\n\n* 同步/异步RPC调用\n* 连接池管理\n* 负载均衡\n* 超时控制\n* 异常处理\n* 性能监控\n\n## 🚀 快速开始\n\n### 环境要求\n\n* JDK 1.8+\n* Maven 3.6+\n\n### 依赖配置\n\n在Maven项目中添加依赖：\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.bytesgo.nfs.rpc\u003c/groupId\u003e\n    \u003cartifactId\u003enfs-rpc-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.1-SNAPSHOT\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- 选择传输协议 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.bytesgo.nfs.rpc\u003c/groupId\u003e\n    \u003cartifactId\u003enfs-rpc-netty\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.1-SNAPSHOT\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- 选择序列化方式 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.bytesgo.nfs.rpc\u003c/groupId\u003e\n    \u003cartifactId\u003enfs-rpc-codec\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.1-SNAPSHOT\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### 服务端示例\n\n```java\nimport com.bytesgo.nfs.rpc.core.server.Server;\nimport com.bytesgo.nfs.rpc.netty.server.NettyServer;\n\npublic class RPCServer {\n    public static void main(String[] args) throws Exception {\n        // 创建服务器配置\n        ServerConfig config = new ServerConfig();\n        config.setHost(\"127.0.0.1\");\n        config.setPort(8888);\n        config.setBusinessThreadPool(Executors.newFixedThreadPool(20));\n        \n        // 创建服务器\n        Server server = new NettyServer(config);\n        \n        // 注册服务处理器\n        server.registerProcessor(RPCProtocol.TYPE, \"testservice\", new TestServiceImpl());\n        \n        // 启动服务器\n        server.start();\n        System.out.println(\"RPC Server started on port 8888\");\n    }\n}\n```\n\n### 客户端示例\n\n```java\nimport com.bytesgo.nfs.rpc.core.client.ClientFactory;\nimport com.bytesgo.nfs.rpc.netty.client.NettyClientFactory;\n\npublic class RPCClient {\n    public static void main(String[] args) throws Exception {\n        // 创建客户端工厂\n        ClientFactory clientFactory = new NettyClientFactory();\n        \n        // 获取客户端\n        Client client = clientFactory.get(\"127.0.0.1\", 8888, 1000);\n        \n        // 创建调用对象\n        Invocation invocation = new Invocation()\n            .setProcessorName(\"testservice\")\n            .setMethodName(\"execute\")\n            .setArgs(new Object[]{\"Hello RPC\"});\n        \n        // 执行RPC调用\n        Object result = client.invokeSync(invocation, 5000, Codecs.JAVA_CODEC, RPCProtocol.TYPE);\n        System.out.println(\"RPC Result: \" + result);\n    }\n}\n```\n\n## 📊 性能测试\n\n项目包含完整的性能测试套件，支持不同协议和序列化方式的性能对比。\n\n### 运行性能测试\n\n#### 启动服务器\n\n```bash\n# Netty4服务器\ncd nfs-rpc-benchmark/src/nfs-script/server\nsh netty4server.sh 8888 20 1024\n\n# 参数说明: 端口 最大线程数 响应大小(字节)\n```\n\n#### 运行客户端测试\n\n```bash\n# Netty4 RPC测试\ncd nfs-rpc-benchmark/src/nfs-script/client\nsh netty4rpc.sh\n\n# 其他协议测试\nsh minarpc.sh      # Mina2 RPC\nsh grizzlyrpc.sh   # Grizzly RPC\nsh nettyrpc.sh     # Netty3 RPC\n```\n\n### 测试结果\n\n性能测试会输出以下指标：\n* 请求总数\n* 响应时间统计\n* 吞吐量\n* 错误率\n\n## 🔧 配置说明\n\n### 服务器配置\n\n```java\nServerConfig config = new ServerConfig();\nconfig.setHost(\"127.0.0.1\");           // 监听地址\nconfig.setPort(8888);                  // 监听端口\nconfig.setBusinessThreadPool(threadPool); // 业务线程池\nconfig.setMaxThreads(100);             // 最大线程数\nconfig.setConnectTimeout(3000);        // 连接超时时间\n```\n\n### 客户端配置\n\n```java\n// 连接池配置\nClientFactory clientFactory = new NettyClientFactory();\nclientFactory.enableSendLimit();        // 启用发送限制\nClientFactory.sendLimitPercent = 50;    // 发送限制百分比\n\n// 客户端参数\nClient client = clientFactory.get(\n    \"127.0.0.1\",    // 服务器IP\n    8888,           // 服务器端口\n    1000,           // 连接超时时间\n    5               // 连接池大小\n);\n```\n\n## 🧩 扩展开发\n\n### 自定义协议\n\n实现 `Protocol` 接口：\n\n```java\npublic class CustomProtocol implements Protocol {\n    public static final int TYPE = 100;\n    \n    @Override\n    public int getType() {\n        return TYPE;\n    }\n    \n    // 实现其他方法...\n}\n```\n\n### 自定义序列化\n\n实现 `Codec` 接口：\n\n```java\npublic class CustomCodec implements Codec {\n    public static final int TYPE = 100;\n    \n    @Override\n    public int getType() {\n        return TYPE;\n    }\n    \n    @Override\n    public byte[] encode(Object obj) throws Exception {\n        // 实现编码逻辑\n    }\n    \n    @Override\n    public Object decode(String className, byte[] bytes) throws Exception {\n        // 实现解码逻辑\n    }\n}\n```\n\n## 📝 协议类型\n\n| 协议类型 | 值 | 说明 |\n|---------|-----|------|\n| `RPCProtocol.TYPE` | 1 | 反射RPC协议 |\n| `SimpleProcessorProtocol.TYPE` | 2 | 简单处理器协议 |\n\n## 🔌 序列化类型\n\n| 序列化类型 | 值 | 说明 |\n|-----------|-----|------|\n| `Codecs.JAVA_CODEC` | 1 | Java原生序列化 |\n| `Codecs.HESSIAN_CODEC` | 2 | Hessian序列化 |\n| `Codecs.KRYO_CODEC` | 3 | Kryo序列化 |\n| `Codecs.PB_CODEC` | 4 | Protobuf序列化 |\n\n## 🤝 贡献指南\n\n欢迎贡献代码！请遵循以下步骤：\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 创建 Pull Request\n\n## 📄 许可证\n\n本项目基于 [Apache License 2.0](LICENSE) 开源协议。\n\n## 👥 作者\n\n* **bluedavy** - *初始作者* - [bluedavy@gmail.com](mailto:bluedavy@gmail.com)\n\n## 🙏 致谢\n\n感谢所有为NFS-RPC项目做出贡献的开发者。\n\n## 📞 联系方式\n\n* 项目主页: [http://code.google.com/p/nfs-rpc](http://code.google.com/p/nfs-rpc)\n* 问题反馈: 请在GitHub Issues中提交问题\n* 邮箱: bluedavy@gmail.com\n\n---\n\n**注意**: 本项目已迁移到GitHub，原Google Code项目页面仅供参考。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeyazhou%2Fnfs-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleeyazhou%2Fnfs-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeyazhou%2Fnfs-rpc/lists"}