從零開始手寫 dubbo rpc 框架

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

相關文章
相關標籤/搜索