1. 程式人生 > >一個簡單的基於BIO的RPC框架

一個簡單的基於BIO的RPC框架

簡單的 png 1-1 -s github 幫助 spa 兩個類 還需

github地址:https://github.com/Luyu05/BioRpcExample


PART1:先來整體看下項目的構成

技術分享

其中bio-rpc-core就是所謂的rpc框架

bio-rpc-example-client即所謂的服務調用方(你的項目中想要調用服務的地方)

bio-rpc-example-server即所謂的服務提供方(你的項目中寫好服務想要供別人調用的地方)


PART2:這個框架咋用?

服務使用方

1.首先,在想要調用服務的地方(bio-rpc-example-client)引入框架的jar包,本例中如下圖

技術分享

2.跟普通的要托管給spring的bean一樣,在配置文件中引入bean的基本信息,值得註意的是這裏的這個類NetComClientProxy(框架裏的核心部分)

技術分享

3.在想要使用的地方,通過@resource等讓spring幫助我們完成自動註入,此時就可以像調用本地類的方法一樣調用遠程的方法了~

技術分享

4.至此服務使用方講解完成,是不是很簡單,下面看看服務提供方需要做什麽(你會發現比這裏更簡單)

服務提供方

1.第一步與上面類似,引入框架jar包

技術分享

2.第二步,在你想要對外提供的類的上方,加上一個註解

技術分享

3.值得註意的是,還需要在服務提供方服務使用方的pom文件中引入對應的api的jar包,如下圖

技術分享

4.大功告成,啟動項目試試,先啟動server(服務提供端:bio-rpc-example-server),再啟動client(服務調用端:bio-rpc-example-client),如果看到下面內容,就說明你已經成功了~你現在已經可以把服務部署到老王的PC上(我們稱為A),再在你本機上(稱為B)調用A上定義的類以及方法(B是怎麽知道A上定義的方法的具體細節的?還記得我們引入的定義類的api包嗎),最重要的是方法的執行過程耗費的是A機器的資源,與你也就是B機器沒啥太大關系,你只要負責發送調用請求,再收方法執行結果就行了。

技術分享


PART3 框架是咋實現的,為啥我通過簡單的幾個註解,還有配置的bean就可以用老王的機器執行我的任務了?

感興趣的同學可以下載源碼看看,在bio-rpc-core裏面,核心代碼加起來不過200+行,很容易就能看懂,重點關註NetComClientProxy和NetComServerFactory這兩個類(還記得我們配置bean的時候的那個class嗎?)


一個簡單的基於BIO的RPC框架