溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

從零開始手寫 dubbo rpc 框架

發(fā)布時間:2020-07-20 22:37:12 來源:網(wǎng)絡 閱讀:137627 作者:葉止水ryo 欄目:編程語言

rpc

rpc 是基于 netty 實現(xiàn)的 java rpc 框架,類似于 dubbo。

主要用于個人學習,由漸入深,理解 rpc 的底層實現(xiàn)原理。

前言

工作至今,接觸 rpc 框架已經(jīng)有很長時間。

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

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

技術準備

Java 并發(fā)實戰(zhàn)學習

TCP/IP 協(xié)議學習筆記

Netty 權(quán)威指南學習

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

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

其他 rpc 框架使用的經(jīng)驗此處不再贅述。

快速迭代

原來一直想寫 rpc,卻不行動的原因就是想的太多,做的太少。

想一下把全部寫完,結(jié)果就是啥都沒寫。

所以本次的開發(fā),每個代碼分支做的事情實際很少,只做一個功能點。

陸陸續(xù)續(xù)經(jīng)過近一個月的完善,對 rpc 框架有了自己的體會和進一步的認知。

代碼實現(xiàn)功能,主要參考 Apache Dubbo

文檔

文檔

文檔將使用 markdown 文本的形式,補充 code 層面沒有的東西。

代碼注釋

代碼有詳細的注釋,便于閱讀和后期維護。

測試

目前測試代碼算不上完善。后續(xù)將陸續(xù)補全。

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-客戶端調(diào)用服務端

release_0.0.4-p2p 客戶端主動調(diào)用服務端

release_0.0.5-serial 序列化

release_0.0.6-通用的反射調(diào)用

release_0.0.7-timeout 超時處理

release_0.0.8-register 注冊中心

release_0.0.9-load balance 負載均衡

release_0.1.0-callType 調(diào)用方式

release_0.1.1-fail 失敗策略

release_0.1.2-generic 泛化調(diào)用

release_0.1.3-gracefully 優(yōu)雅關閉

release_0.1.4-interceptor 攔截器

測試代碼

從 v0.0.6 及其之后,為了讓代碼保持純凈,將測試代碼全部放在 rpc-example。

每個測試代碼和實現(xiàn)版本一一對應。

rpc-example

文檔說明

0.0.1-server 服務端啟動

0.0.2-client 客戶端啟動

0.0.3-客戶端調(diào)用服務端

0.0.4-p2p 客戶端主動調(diào)用服務端

0.0.5-serial 序列化

0.0.6-通用反射調(diào)用

0.0.7-timeout 超時處理

0.0.8-register 注冊中心

0.0.9-load balance 負載均衡

0.1.0-callType 調(diào)用方式

0.1.1-fail 失敗策略

0.1.2-generic 泛化調(diào)用

0.1.3-gracefully 優(yōu)雅關閉

0.1.4-interceptor 攔截器

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI