作者:幽幽独舞99 | 来源:互联网 | 2023-07-18 10:58
RPC框架RPC是一个远程过程调用RPC框架主要由客户端、服务端和协议三个组成RPCProtocol接口packagecom.Protocol.util;importorg.apa
RPC框架
RPC是一个远程过程调用
RPC框架主要由客户端、服务端和协议三个组成
RPCProtocol接口
package com.Protocol.util;
import org.apache.hadoop.ipc.VersionedProtocol;
/*
* @author Administrator
* @version 1.0
*/
public interface RPCProtocol extends VersionedProtocol {
//定义RPC协议的ID
public static final long versiOnID= 1L;
//定义接口方法
public String helloWorld(String name);
}
MyNameNode类
package com.Server.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.ipc.ProtocolSignature;
import java.io.IOException;
/*
* @author Administrator
* @version 1.0
*/
public class MyNameNode implements RPCProtocol {
public String helloWorld(String name) {
return "Hello! " + name;
}
public long getProtocolVersion(String s, long l) throws IOException {
return RPCProtocol.versionID;
}
public ProtocolSignature getProtocolSignature(String s, long l, int i) throws IOException {
return new ProtocolSignature(RPCProtocol.versionID, null);
}
}
MyRPCServer类
package com.Server.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import java.io.IOException;
/*
* @author Administrator
* @version 1.0
*/
public class MyRPCServer {
public static void main(String[] args) throws IOException {
//构建RPC框架
RPC.Builder builder = new RPC.Builder(new Configuration());
//绑定地址
builder.setBindAddress("localhost");
//绑定端口
builder.setPort(8080);
//绑定协议
builder.setProtocol(RPCProtocol.class);
//调用协议的实现类对象
builder.setInstance(new MyNameNode());
//创建服务
RPC.Server server = builder.build();
//启动服务
server.start();
}
}
MyRPCClient类
package com.Client.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import java.io.IOException;
import java.net.InetSocketAddress;
/*
* @author Administrator
* @version 1.0
*/
public class MyRPCClient {
public static void main(String[] args) throws IOException {
//获取RPC协议调用Server
RPCProtocol proxy = RPC.getProxy(RPCProtocol.class, RPCProtocol.versionID, new InetSocketAddress("localhost", 8080), new Configuration());
//发送请求
String message = proxy.helloWorld("Jabin");
//输出信息
System.out.println(message);
}
}