1. 程式人生 > >葉曉江 分散式計算 技術筆記

葉曉江 分散式計算 技術筆記

概述

  • 作用
  • 使用示例
  • 原始碼執行流程分析
作用
  • 機器之間相互通訊
使用示例
  • 前言: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 類
      • 全部程式碼如下:
//程式碼太多,未貼出
    • Server 端
      • 資料格式類:Myprotocol 類
      • Server啟動類:MyServer 類
      • Server入口類:SubstanceServer 類
      • Server實體類:Server 類
//程式碼太多,未貼出
  • 流程圖
    • Client 端流程圖


    • Server 端流程圖