RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
public class PublicServer{
main{
//1、构建rpc框架
Builder builder = new RPC.Builder(new Configuration());
//2、绑定地址
builder.setBindAddress("localhost");
//3、绑定端口号
builder.setPort(7777);
//4、绑定协议
builder.setProtocol(ClientnamenodeProtocal.class)
//5、调用协议的实现类
builder.serInstance(new MyNameNode());
//6、创建服务
Server server = builder.build();
server.start();
}
}
public class GetHDFS{
public static void main(String[] args) throws Exception{
//1、拿到协议
ClientnamenodeProtocal proxy = RPC.getProxy(ClientnamenodeProtocal.class, 1L, new InetSocketAddress("loaclhost",7777),new Configuration());
//2、发送请求
String metaData = proxy.getMetaData("/a.txt")
//3、拿到元数据信息
System.out.println(metaData);
}
}
public class MyNameNode implements ClientnamenodeProtocal{
@Override
public String getMetaData(String path){
return path + ": 3 - {BLK_1,BLK_2,BLK_3,...}"
}
}
//遵循的协议
public interface ClientnamenodeProtocal{
//1、定义协议的id
public static final long versionID = 1L;
//2、定义方法(拿到元数据的方式)
public String getMetaData(String path);
}