Light RPC:一款輕量高效的Java RPC框架實踐指南
- 一、框架簡介
- 二、快速入門
- 1. 環境準備
- 2. 服務端配置
- 2.1 添加依賴
- 2.2 YAML配置
- 2.3 接口與實現
- 3. 客戶端配置
- 3.1 添加依賴
- 3.2 YAML配置
- 3.3 客戶端調用
- 三、核心設計解析
- 四、適用場景與優勢對比
- 五、總結
一、框架簡介
Light RPC 是一款基于Java RMI構建的輕量級RPC框架,具有以下核心優勢:
- 零業務入侵:無需改造現有代碼結構,通過注解即可實現遠程調用。
- 高性能:通信效率優于傳統RESTful,適合對性能敏感的輕量級場景。
- 簡單易用:避免復雜的三方組件(如Dubbo)維護成本,中小型項目的理想選擇。
- Spring Boot友好:無縫集成Spring生態,配置簡潔,開發效率高。
二、快速入門
1. 環境準備
克隆源碼并編譯:
git clone git@github.com:frfsz/LightRPC.git #github https://github.com/frfsz/LightRPC.git
# git clone git@gitee.com:frfs/LightRPC.git #gitee https://gitee.com/frfs/LightRPC.git
mvn install
編譯完成后,項目中按需引入服務端或客戶端依賴。
提示:v2.0.2版本已發布maven中央倉庫。
2. 服務端配置
2.1 添加依賴
<dependency> <groupId>io.github.frfsz</groupId> <artifactId>light-rpc-server-starter</artifactId> <version>2.0.2</version>
</dependency>
2.2 YAML配置
light: rpc: enabled: true base-package: com.test # 關鍵!接口類所在包路徑,需獨立為JAR供客戶端共用 registry: server-port: 9000 # RPC服務監聽端口
2.3 接口與實現
- 公共接口(獨立JAR包)
package com.test.admin; @RpcService // 標記為RPC服務接口
public interface ServerService { void test(String name);
}
- 服務端實現
package com.test.service.impl; public class ServerServiceImpl implements ServerService { @Override public void test(String name) { System.out.println("服務端執行:" + name); }
}
3. 客戶端配置
3.1 添加依賴
<dependency> <groupId>io.github.frfsz</groupId> <artifactId>light-rpc-client-starter</artifactId> <version>2.0.2</version>
</dependency>
3.2 YAML配置
light: rpc: enabled: true base-package: com.test # 與服務端相同的接口包路徑 registry: clients: - host: 192.168.1.2 # 服務端IP port: 9000 # 服務端端口 name: - admin # 子包名,全路徑為com.test.admin - host: 192.168.1.1 # 支持多服務端配置 port: 9000 name: - test # 全路徑為com.test.test
3.3 客戶端調用
package com.test.client; @Service
public class TestClient { @RpcClient // 自動注入遠程服務代理 private ServerService serverService; public void invokeRemote() { serverService.test("Hello Light RPC!"); }
}
三、核心設計解析
-
接口共享機制
- 服務端與客戶端通過獨立JAR包共享接口,確保序列化一致性。
base-package
定義了接口的掃描范圍,需與服務端嚴格一致。
-
多服務端路由
- 客戶端可配置多個服務端實例,按子包名(
name
字段)自動路由請求。
- 客戶端可配置多個服務端實例,按子包名(
-
注解驅動
@RpcService
:標記服務端接口,框架自動注冊實現類。@RpcClient
:動態生成代理類,實現透明化遠程調用。
四、適用場景與優勢對比
場景 | Light RPC | Dubbo | RESTful |
---|---|---|---|
中小型項目 | ? 最佳 | ?? 過重 | ? 適用 |
性能要求高 | ? 高效 | ? 高效 | ?? 一般 |
維護成本 | ? 極低 | ?? 較高 | ? 低 |
學習曲線 | ? 簡單 | ?? 復雜 | ? 簡單 |
五、總結
Light RPC 以“輕量”為核心,通過簡潔的配置和注解驅動,為中小型項目提供了高性能的RPC解決方案。它完美平衡了開發效率與運行性能,尤其適合希望避免復雜框架依賴的團隊。如果你正在尋找一個“小而美”的RPC工具,Light RPC值得一試!
提示:生產環境中建議將接口JAR包托管至私有倉庫,實現依賴的版本化管理。