葉曉江 分散式計算 技術筆記
阿新 • • 發佈:2019-01-05
概述
- 作用
- 使用示例
- 原始碼執行流程分析
- 機器之間相互通訊
- 前言:hadoop 0.1.0 版本,Myprocotol類為傳送的資料型別類 server端類 client 端類
- Myprocotol 類
public interface MyProtocol { public String line(String s); }
- Server端
public class MyServer implements MyProtocol{ private Server server; public MyServer(){ try { server=RPC.getServer(this, 9090, new Configuration()); server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } } @Override public String line(String s) { System.out.println("This Mothed is invoke..."); return s+" yxj VMware Workstation AES encryption."; } public static void main(String[] args) { new MyServer(); } }
- Client 類
public class MyClient{ private MyProtocol proxy; public MyClient(){ InetSocketAddress addr=new InetSocketAddress("hadoop1",9090); proxy=(MyProtocol)RPC.getProxy(MyProtocol.class, addr, new Configuration()); } public void xyz(String s) { System.out.println(proxy.line(s)); } public static void main(String[] args) { MyClient client=new MyClient(); client.xyz("yy xx "); } }
- 使用:分別啟動 MyServer 和 MyClient 即可
- Client Server RPC 所有類列表
- 問:Client 即為 Client,Server 即為 Server 為什麼要 RPC 類?
- 答:封裝。考慮機器A 機器B,A 既可能作為客戶機訪問B,也可能作為伺服器為B服務。故,用RPC來封裝 Client 與 Server。
- 我精簡後的程式碼,只有 Client 與 Server 無 RPC,框圖如下:
- 精簡後的程式碼如下
- Client 端
- 資料類:MyProtocol 類
- 入口類:MyClient 類
- Client入口類:SubstanceClient 類
- Client 類
- 全部程式碼如下:
- Client 端
//程式碼太多,未貼出
- Server 端
- 資料格式類:Myprotocol 類
- Server啟動類:MyServer 類
- Server入口類:SubstanceServer 類
- Server實體類:Server 類
- Server 端
//程式碼太多,未貼出
- 流程圖
- Client 端流程圖
- Server 端流程圖