rpc hadoop

来源:互联网 发布:最小公倍数算法流程图 编辑:程序博客网 时间:2024/05/02 02:10

RPC概念:

       Remote Procedure Call ,远程过程调用,也就是说,调用过程代码不是在调用者本地运行,而是要实现调用者与被调用者二者之间的链接与通信形式               
    RPC的基本通信模型是基于Client/Server进程间星湖通信的一种同步通信形式,他对Client提供了远程服务的过程抽象,其底层消息传递操作对Client是透明
    的。在RPC中,client即是请求服务调用者,而server则是Client的请求而被调用的程序。

RPC协议图:


首先是建立RPC服务,约定底层的RPC传输通道(UDP或者是TCP).客户端的调用参数根据传输前所提供的目的地址及RPC上层应用程序号,通过
底层传输通道转至相应的服务器,即RPC application programme server.客户端随机处于等待状态,以服务器等待应答或者TimeOut超时信号。
  当服务器获得了请求消息,会根据注册RPC时告诉RPC系统的程序入口地址执行相应的操作,并将结果返回到客户端。当一次RPC调用结束后,相应
    线程发送相应的信号,客户端程序编继续运行。

hadoop中对rpc的实现


客户端代码

package cn.itcast.rpc;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
/**
 * 客户端获得业务类的动态代理对象
 * @author Administrator
 *
 */
public class RPCClient {
    public static void main(String[] args) throws IOException {
        Bizable proxy = RPC.getProxy(Bizable.class, 12120L, new InetSocketAddress("192.168.80.100",9527), new Configuration());
        String name = proxy.sayHi("Kitty");
        System.out.println(name);
        
    }
}

客户端代码

package cn.itcast.rpc;
import java.io.IOException;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;
/**
 * 服务器端
 * @author Administrator
 *
 */
public class RPCServer implements Bizable{
    public static void main(String[] args) throws Exception{
        Server server = new RPC.Builder(new Configuration()).setInstance(new RPCServer()).setProtocol(Bizable.class).setBindAddress("192.168.80.100").setPort(9527).build();
        server.start();
    }
    @Override
    public String sayHi(String name) {
        return "hello "+ name;
    }
    
}

业务接口

package cn.itcast.rpc;
/**
 * 服务器端与客户端都必须要实现的业务接口
 * @author Administrator
 *
 */
public interface Bizable {
    //版本号
    public static final long versionID = 12120L;
    
    
    public String sayHi(String name);
}














0 0
原创粉丝点击