Hadoop RPC系统


与别的RPC系统相似(主要对比Thrift) Hadoop中也分为了序列化(Transport)、函数调用(Protocol)、传输(Server)和处理(Processor)四层.

序列化层将Request与Response转成字节流便于网络传输

函数调用层

传输层描述Client和Server之间通信方式  也就是TCP Socket

处理层

Client将要调用的方法与方法的参数包装成Request发送到Server

Server接收到请求、解析Request并在Server端处理再将结果封装成Response返回给Client

想到曾经有人问过为啥Hadoop不使用开源的RPC系统  我猜是因为Hadoop项目组高手如云 显然是不屑于使用别人写的东西

org.apache.hadoop.ipc包下面的java文件就是Hadoop

Hadoop RPC系统_第1张图片

Hadoop RPC Server中主要含有Listener、Responder和Handler三部分


Hadoop RPC Server中只有一个Listener作为Acceptor接受Client连接

Listener中含有一组Reader用来处理Client连接  每一个Reader即是一个线程

依顺序轮训reader数组  选出一个reader用来处理listener的事件

    currentReader = (currentReader + 1) % readers.length;
    return readers[currentReader];


CallQueueManager作为Hadoop RPC队列抽象,

createCallQueueInstance方法构建了BlockingQueue用来存储事件







你可能感兴趣的:(hadoop,rpc)