HDAOOP RPC分析-----------總結

RPC(Remote Peocedure Call):遠程進程調用java


RPC是Hadoop框架運行的基礎。服務器


RPC:一方叫作客戶端,一方是服務器端,框架


    其中被調用對象的調用是在客戶端,執行是在服務器端
ide


    1.服務器端提供的對象必須是一個接口,且必須繼承VersionedProtocol,
oop

    2.客戶端可以調用的對象的方法必須位於對象的接口中。
spa



   Hadoop Rpc的調用
server


   1.MyBizI(被調用對象接口)
對象

   2.MyBiz(實現類)
繼承

   3.MyServer
接口

   4.MyClient

---------------------------

//被調用對象必須是一個接口,實現VersionedProtocal

//被調用對象的方法必須位於接口中    

public interface MyBizI extends VersionedProtocol{

   public abstract String hello(String name);

}

-----------------------------

//實現類,重寫getProtocolVersion方法,用來判斷Server和Client端調用的是否是一個版本的

public class MyBiz implements MyBizI {

/*

* (non-Javadoc)

*

* @see rpc.MyBizI#hello(java.lang.String)

*/

public String hello(String name) {

return "hello " + name;

}


@Override

public long getProtocolVersion(String protocol, long clientVersion)

throws IOException {

// TODO Auto-generated method stub

return 111L;

}


}

-----------------------

//Server端

public class MyServer {

   public static final String SERVER_ADDREDD="localhost";

   public static final int SERVER_PORT=123;

   public static void main(String[] args) throws Exception {

   Server server = RPC.getServer(new MyBiz(), SERVER_ADDREDD, SERVER_PORT, new Configuration());

   server.start();

}

}

//Client端

public class MyClient {

   public static void main(String[] args) throws Exception {

       MyBizI waitForProxy = (MyBizI)RPC.waitForProxy(MyBizI.class, 111L, new InetSocketAddress(MyServer.SERVER_ADDREDD,MyServer.SERVER_PORT), new Configuration());

       String hello = waitForProxy.hello("wk");

       System.out.println(hello);

       RPC.stopProxy(waitForProxy);

       }

}

相關文章
相關標籤/搜索