原始碼位置:
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...