Hadoop RPC源码解析——Client类

Hadoop RPC主要由三大部分组成:Client、Server和RPC,如下表所示。

内部类

功能

Client

连接服务器、传递函数名和相应的参数、等待结果

Server

主要接受Client的请求、执行相应的函数、返回结果

RPC

外部编程接口,主要是为通信的服务方提供代理


这三部分在Hadoop RPC架构中的位置如下图所示:


本文主要解析Client类。Client类主要包含了以下几个内部类

内部类

功能

Call

封装Invocation对象,作为VO写到服务端,也存储从服务端返回的数据

Connection

处理远程连接对象,继承了Thread

ConnectionID

唯一确定一个连接


Call内部类:它封装了一个RPC请求,它包含了五个成员变量:唯一标识id、函数调用信息param、函数执行返回值value、出错或异常信息error和执行完成标识符done。由于HadoopRPC Server采用了异步方式处理客户端请求,因此远程过程调用的发生顺序与结果返回顺序无直接关系,而Client端正是通过id识别不同的函数调用。当客户端向服务器端发送请求时,只需填充id和param两个变量,剩下三个变量由服务器端根据函数执行情况填充。

Connection内部类:Client与每个Server之间维护的一个通信连接。该连接相关的基本信息及操作被封装到了Connection中。其中基本信息主要包括:通信连接唯一标识remoteId,与Server端通信的Socket socket,网络输入数据流in,网络输出数据流out,保存RPC请求的哈希表calls。

ConnectionID内部类:该类封装了address、ticket、protocol,用来唯一标志一个从客户端到服务器的连接


Client类主要用来发送远程过程调用信息并接受执行结果。它涉及的类关系图下图3-9所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值