一個簡單的基於BIO的RPC框架
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框架