rpc
rpc 是基於 netty 實現的 java rpc 框架,相似於 dubbo。java
主要用於我的學習,由漸入深,理解 rpc 的底層實現原理。git
前言
工做至今,接觸 rpc 框架已經有很長時間。github
可是對於其原理一直只是知道個大概,歷來沒有深刻學習過。apache
之前一直想寫,但因爲各類緣由被耽擱。markdown
技術準備
Java 併發實戰學習併發
TCP/IP 協議學習筆記負載均衡
Netty 權威指南學習框架
這些技術的準備階段,花費了比較長的時間。tcp
也建議想寫 rpc 框架的有相關的知識儲備。ide
其餘 rpc 框架使用的經驗此處再也不贅述。
快速迭代
原來一直想寫 rpc,卻不行動的緣由就是想的太多,作的太少。
想一下把所有寫完,結果就是啥都沒寫。
因此本次的開發,每一個代碼分支作的事情實際不多,只作一個功能點。
陸陸續續通過近一個月的完善,對 rpc 框架有了本身的體會和進一步的認知。
代碼實現功能,主要參考 Apache Dubbo
文檔
文檔
文檔將使用 markdown 文本的形式,補充 code 層面沒有的東西。
代碼註釋
代碼有詳細的註釋,便於閱讀和後期維護。
測試
目前測試代碼算不上完善。後續將陸續補全。
rpc 模塊
rpc-common 公共代碼
rpc-server 服務端
rpc-client 客戶端
rpc-register 註冊中心
rpc-test 測試模塊
代碼分支
release_0.0.1-server 服務端啓動
release_0.0.2-client 客戶端啓動
release_0.0.3-客戶端調用服務端
release_0.0.4-p2p 客戶端主動調用服務端
release_0.0.5-serial 序列化
release_0.0.6-通用的反射調用
release_0.0.7-timeout 超時處理
release_0.0.8-register 註冊中心
release_0.0.9-load balance 負載均衡
release_0.1.0-callType 調用方式
release_0.1.1-fail 失敗策略
release_0.1.2-generic 泛化調用
release_0.1.3-gracefully 優雅關閉
release_0.1.4-interceptor 攔截器
測試代碼
從 v0.0.6 及其以後,爲了讓代碼保持純淨,將測試代碼所有放在 rpc-example。
每一個測試代碼和實現版本一一對應。
rpc-example
文檔說明
0.0.1-server 服務端啓動
0.0.2-client 客戶端啓動
0.0.3-客戶端調用服務端
0.0.4-p2p 客戶端主動調用服務端
0.0.5-serial 序列化
0.0.6-通用反射調用
0.0.7-timeout 超時處理
0.0.8-register 註冊中心
0.0.9-load balance 負載均衡
0.1.0-callType 調用方式
0.1.1-fail 失敗策略
0.1.2-generic 泛化調用
0.1.3-gracefully 優雅關閉
0.1.4-interceptor 攔截器