1、爲何不使用RMI 編程
最最主要仍是由於RMI的可控性不夠靈活,其次數據序列化格式不夠精簡。 網絡
這兩點能夠在實際編程中慢慢體會,ipc例子能夠在網上搜到。 oop
2、主要技術元素 大數據
包含四點:一、序列化對象(數據傳輸的核心) 代理
二、反射 對象
三、動態代理 隊列
四、Socket傳輸 ip
3、原理 開源軟件
主要說明實現原理,忽略網絡異常處理機制、權限、版本校驗。 it
客戶端調用遠程方法時,經過動態代理運用反射機制將所需參數以及方法等封裝成序列化對象經過Socket傳輸給服務端,在沒有接受到返回值時一直Wait。服務端獲取到序列化對象後經過反射機制調用指定的方法獲得返回值,而後將返回值傳輸給客戶端。客戶端接受到返回值後被Notify。
4、代碼
主要分爲Client 與Server。
Client並不複雜,主要任務是封裝方法參數,等待返回值。
Server相對複雜一點,包含一個Listener、多個Reader、多個Handler、一個Responder,並使用了多路複用Selector機制。Listener復則接受來自各個客戶端的鏈接請求,Reader負責讀取客戶端鏈接的數據並放入阻塞隊列中供Handler處理,Handler從阻塞隊列中獲取數據解析成方法請求經過反射調用方法獲得返回值後,將值放入阻塞隊列中供Responder處理,Responder從阻塞隊列中獲取返回值後傳輸給客戶端,至此整個流程完畢!
5、Hadoop ipc缺點
不適合流式數據的傳輸,也不適合大數據的傳輸,鑑於此建立了一個流式RPC的組件,具體參考開源軟件中的「流式RPC」