rpc hadoop

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);
}














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值