立即注册 登录
About云-梭伦科技 返回首页

旧收音机的个人空间 https://www.aboutyun.com/?5994 [收藏] [复制] [分享] [RSS]

日志

第二次讨论RPC代码总结

热度 1已有 1422 次阅读2015-1-5 20:46

第一部分:什么是RPC

         RPC (Remote Procedure Call Protocol) – 远程过程协议调用 。通过 RPC 我们可以从网络上的计算机请求服务,而不需要了 解底层网络协议。 Hadoop 底层的交互都是通过 rpc 进行的。例 如: datanode 和 namenode 、 tasktracker和 jobtracker 、 secondary namenode 和 namenode 之间的通信都是通过 rpc 实 现的。


RPC 模式

         RPC 采用客户机 / 服务器 模式 。请求程序就是一个客户机, 而服务提供程序就是一个服务器。首先,客户机调用进程发送 一个有进程参数的调用信息到服务进程,然后等待应答信息。 在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答 复信息,然后等待下一个调用信息,最后, 客户端 调用进程接 收答复信息,获得进程结果,然后调用执行继续进行。

Server:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;

public class RPCServer implements Bizable{
public String sayHi(String name){
return "HI ~ " + name;
}
public static void main(String[] args) throws Exception {
Server server= new RPC.Builder(new Configuration()).setInstance(new RPCServer()).setProtocol(Bizable.class).setBindAddress("127.0.0.1").setPort(9527).build();
server.start();
}
}
Client:
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

public class TestClient {
public static void main(String[] args) throws IOException {
Bizable proxy = RPC.getProxy(Bizable.class, 10010,new InetSocketAddress("127.0.0.1", 9527), new Configuration());
String result = proxy.sayHi("test");
System.out.println(result);
RPC.stopProxy(proxy);
}

}
Interface:
public interface Bizable {
public static final long versionID = 10010;
public String sayHi(String name);
}


路过
1

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 nextuser 2015-1-6 03:01
代码好乱

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条