自主實現RPC工具 myrpc

2021-08-17 03:02:44 字數 1326 閱讀 4004

原始碼位置

rpc(remote procedure call),遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。在如今分布式盛行的年代,這一項技術變得尤為重要。常用的rpc框架有motan,dubbo等。

我這款rpc工具,旨在通過簡單的配置,低入侵地呼叫遠端方法。同時能將呼叫時發生的異常友好地返回,便於排查錯誤。

時序圖非常簡單,客戶端請求服務端,本地獲取**物件然後傳送請求到服務端。服務端執行簡單的負載均衡策略,然後執行讀請求,執行目標**,返回執行結果或異常。

類圖里的類分為幾個部分,客戶端(黃),服務端(紅+綠+藍),負載均衡模組,基礎工具類模組。

實現原理很簡單,客戶端獲取**類,然後基於nio發起遠端請求,服務端響應並返回執行結果。

使用方式很簡單:

客戶端配置與呼叫:

<?xml version="1.0" encoding="utf-8"?>

127.0.0.1

8899

package com.wheel.test;

import com.wheel.client.aopfactory;

import com.wheel.dto.requestdata;

/** * created with intellij idea

* date: 2018/1/1

* time: 下午2:43

* * @author 陳樟傑

*/public class clienttest

}

服務端配置:

<?xml version="1.0" encoding="utf-8"?>

3 8899

256 5

當初寫這個東西是因為學校工程實習,我就寫了這個「玩具」來應付。與真正的rpc框架還有很大的差距。沒考慮很多細節問題,如nio的一些問題,如半包;執行緒模型構建也不完善;很多分布式的問題,如「腦裂」,節點宕機等等都沒考慮。

一轉眼又很久沒寫文章了,懶惰是人的本性啊。在此表個決心,從此以後提高文章質量,寫走心的技術文章。每篇走心的文章,我都會在標題後面加上「@精選」,方便篩選。同時也會開始在知乎上寫文章,促進個人思考與沉澱。

RPC實現原理

rpc remote procedure call 遠端過程呼叫,是乙個計算機通訊協議。該協議允許執行於一台計算機的程式呼叫另一台計算機的子程式,而程式設計師無需額外地為這個互動作用程式設計。兩個或多個應用程式都分布在不同的伺服器上,它們之間的呼叫都像是本地方法呼叫一樣,如下圖。阿里的dubbo g...

實現RPC框架

什麼是rpc client端 student student call serveraddr,addage,student 1.將這個呼叫對映為call id。2.將call id,student params 序列化,以二進位制形式打包 3.把2中得到的資料報傳送給serveraddr,這需要使用...

RPC 設計與實現

讀 磁碟 filechannel read bytebuffer 變數 寫 bytebuffer 變數 filechannel write 磁碟 唯讀filechanel fileinputstream getchannel 可寫filechanel fileoutputstream getchan...