HDFS中RPC机制

RPC 是远程过程调用 (Remote Procedure Call),即远程调用其他虚拟机中运行的 java
object。 RPC 是一种客户端/服务器模式, 那么在使用时包括服务端代码和客户端代码, 还有
我们调用的远程过程对象。

RPC调用机制,如下图

在这里插入图片描述

PRC cline 和 service 端必须实现同一接口!
运行机制、***、、、、
1、先获取 interface 接口 和 service 代理对象。
2、通过代理对象调用该代理类的业务方法,并调用socket的发送请求的方法。
3、服务端接收请求,并反射出请求中的动态代理类。
4、同时生成socket和该类的动态代理,并实现该类的逻辑。
5、通过socket相应该类运行结果给客户端
6、客户端通过接收service端的请求,获取运行结果。

RPC Cline端

java代码:

public interface MyRpc {
	//版本信息
	public static final long versionID = 1L;
	//业务方法
	public String loginServer(String name , String password);
	
}

client 端通过RPC.getProxy获取本地代理

public class Test {

	public static void main(String[] args) throws Exception {
		//获取MyRpc
		MyRpc proxy = RPC.getProxy(MyRpc.class, 1L, new InetSocketAddress("10.30.95.166", 10000), new Configuration());
		System.out.println(proxy.loginServer("常先生", "213123"));
	}
}

service端

MyRpcImpl 实现了MyRpc,并通过RPC.Builder获取Builder

public class MyRpcImpl implements MyRpc {

	@Override
	public String loginServer(String name, String password) {
		
		
		return "欢迎"+name+"登陆";
	}

}
public class Test {

	public static void main(String[] args) throws Exception {

		Builder builder = new RPC.Builder(new Configuration());

		builder.setBindAddress("10.30.95.166").setPort(10000).setProtocol(MyRpc.class).setInstance(new MyRpcImpl());

		Server build = builder.build();

		build.start();

	}

}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41854797/article/details/90114438