Hadoop RPC源码分析
Hadoop RPC源码分析 上一篇文章 http://www.cnblogs.com/dycg/p/rpc.html 讲了Hadoop RPC的使用方法,这一次我们从demo中一层层进行分析。 RPC说白了,就3个核心,交互协议、服务端、客户端。 在Hadoop RPC(hadoop-common-2.4.jar)中也是这样 交互协议 org.apache.hadoop.ipc.VersionedProtocol ,所有协议的父类 其实就2个方法,版本与签名。不同版本与签名的协议,就算同一个类名也无法通信。 服务端: RPC.Server 处理客户端的连接请求,并处理相关业务,最后返回结果 客户端: Client,封装请求数据,并接收Response 好,正式开始分析源码吧。 协议部分,我就不说了,就是实现VersionedProtocol接口并添加一些业务方法即可。 我们从客户端程序入口点开始分析,先看看客户端是如何取得协议对象的。 想要与服务端通信就先要得到协议对象,RPC.getProxy就是得到协议对象的方法,沿着代码进入最底层,你会发现,它默认先得到一个RpcEngine(默认实现是WritableRpcEngine),它是什么呢?简单点说就是,它相当于我们启动服务器,获取协议的类。有了WritableRpcEngine后,调用它的getProxy方法