hadoop学习笔记(二)——RPC代理机制解析
RPC/代理机制分析
????在hadoop的通信机制中不得不提到rpc通信机制,Client与namenode,namenode与datanode,datanode之间很多通信都是基于rpc机制。
提到RPC机制,其实根据我的理解,他就是一种代理,只不过它和我们平常的代理不同的地方是它是一种远程代理!首先介绍一下代理机制!
?
一、代理机制
提到代理机制又不得不提到Java中的一个非常重要的概念,反射机制!
那么什么是反射呢?
简单的说就是应用程序在运行是通过JavaReflection?api取得一个类名的class信息。请看代码示例:
?
??
部分结果如下:
?下面介绍代理机制:
其实代理机制我的理解就是一个对象代替另外一个对象实现某项功能!其中前一个对象我们称之为代理对象,后面一个对象才是我们的真实对象!
对于代理类我们必须实现InvocationHandler接口,必须实现它的invoke(Object?proxy,?Method?method,?Object[]?args)方法;在这个方法中我们调用真实对象的方法。
?
?
?
真实的对象中的那个方法,
????//构造方法重载;
public?SumInt(Integer?a,Integer?b){
this.a=a;
this.b=b;
}
其调用关系如下:
?
??
二、RPC(远程方法调用)
?RPC的本质也是代理,但是RPC是一种远程代理,在我们的代理类的实现方法中我们不是直接invoke调用真实类的方法,而是通过socket或是其他向server发送信息,server接受信息,调用方法然后返回结果:在客户端看来就好像真的调用了代理对象的方法一样!神奇吧。。。
请看示例,在这里我们实现了一个简单的演示,客户端发送一条消息给server,server端调用方法返回另外一条消息。
?
?结果如下:
??
?<!--EndFragment-->