文章目錄
一、前言
手寫RPC,一步步來看,由於沒有兩臺電腦,就用一個電腦上的兩個工程進行交互。
RPC,遠程過程調用,調用遠程方法像調用本地方法一樣。RPC交互分爲客戶端和服務端,客戶端調用服務端方法,服務端接收數據並打印到控制檯,並response響應給客戶端。
二、服務端與客戶端連接
2.1 構建工程結構
使用idea新建兩個maven Project,架構爲quickstart(因爲我們只是應用程序,不是web程序),分別爲rpcServer 和 rpcClient ,在rpcServer中新建兩個Modul,也都是maven quickstart,分別爲rpcServerApi和rpcServerProvider。
如圖:
注意,無論新建Maven Project還是Maven Modul,事先要設置好idea中的maven home,user settings file,maven repository,類似筆者電腦
2.2 rpcServerApi被rpcServerProvider 和 rpcClient 引用
將rpcServerApi 作爲依賴在rpcServerProvider中使用,然後,將rpcServerApi Maven clean,再Maven install,就可以生成jar包安裝到本地的maven repository中,這樣,讓rpcClient再次引入rpcServerApi作爲依賴。
如圖:
注意,maven quickstart生成爲jar包,maven webapp生成爲war包,這裏rpcServerApi是quickstart,所以maven install是生成jar包(到本地maven repository)。
2.3 服務端和客戶端通信
2.3.1 rpcServerApi 提供接口
2.3.2 rpcServerProvider
2.3.3 rpcClient
2.4 服務端與客戶端交互成功
先運行rpcServerProvider工程的Main類的main方法,啓動服務端,綁定8080端口;然後,啓動rpcClient工程的App類的main方法,去連接8080端口,運行成功:
三、進一步數據傳送
3.1 服務端 rpcServerProvider
將 rpcServerProvider maven install 更新下,這樣更改對於rpcClient就可見了。
3.2 客戶端rpcClient
四、多線程、傳送數據Bean的序列化和反序列化
4.1 服務端 rpcServerProvider
4.2 客戶端 rpcClient
五、服務端反射調用並返回給客戶端
5.1 rpcServerProvider
5.2 rpcClient
六、成功交互
七、小結
手寫RPC完成了。
工程文件:https://download.csdn.net/download/qq_36963950/12482263