從零開始手寫 dubbo rpc 框架

rpc

rpc 是基於 netty 實現的 java rpc 框架,類似於 dubbo。

主要用於個人學習,由漸入深,理解 rpc 的底層實現原理。

前言

工作至今,接觸 rpc 框架已經有很長時間。

但是對於其原理一直只是知道個大概,從來沒有深入學習過。

以前一直想寫,但由於各種原因被耽擱。

技術準備

Java 併發實戰學習

TCP/IP 協議學習筆記

Netty 權威指南學習

這些技術的準備階段,花費了比較長的時間。

也建議想寫 rpc 框架的有相關的知識儲備。

其他 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 攔截器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章