模拟 RPC 的客户端、服务端、通信协议
protocol接口
public interface RPCProtocol{
long versionID = 420;
void mkdir(String path);
}
server
public class RPCserver implements RPCProtocol{
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
Server server = new RPC.Builder(new Configuration())
.setBindAddress("localhost")
.setPort(8090)
.setProtocol(RPCProtocol.class)
.setInstance(new RPCserver())
.build();
System.out.println("Server start running");
server.start();
}
@Override
public void mkdir(String path) {
System.out.println("create path" + path);
}
}
client
public class RPCserver implements RPCProtocol{
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
Server server = new RPC.Builder(new Configuration())
.setBindAddress("localhost")
.setPort(8090)
.setProtocol(RPCProtocol.class)
.setInstance(new RPCserver())
.build();
System.out.println("Server start running");
server.start();
}
@Override
public void mkdir(String path) {
System.out.println("create path" + path);
}
}
测试
2022-04-22 16:29:13,275 INFO [org.apache.hadoop.ipc.CallQueueManager] - Using callQueue: class java.util.concurrent.LinkedBlockingQueue queueCapacity: 100 scheduler: class org.apache.hadoop.ipc.DefaultRpcScheduler 2022-04-22 16:29:14,278 INFO [org.apache.hadoop.ipc.Server] - Starting Socket Reader #1 for port 8090 Server start running 2022-04-22 16:29:14,541 INFO [org.apache.hadoop.ipc.Server] - IPC Server Responder: starting 2022-04-22 16:29:14,541 INFO [org.apache.hadoop.ipc.Server] - IPC Server listener on 8090: starting create path/text 2022-04-22 16:38:01,821 INFO [org.apache.hadoop.ipc.Server] - Socket Reader #1 for port 8090: readAndProcess from client 127.0.0.1:5475



