当前位置: 首页 > 业界动态 > 技术实现 > 本文


Hadoop源码之RPC机制




发布时间: 2012-12-14 14:26:24  
      研读Hadoop源码,不得不说其中的RPC机制。

    实现RPC的几个基本步骤:

    1)客户端需要有一个负责与远程服务端对象通信的对象,称为A;

    2)服务端需要有一个负责与远程客户端对象通信的对象,称为B;

    3)A负责将客户端请求的Java类型方法、参数,序列化成字节流,通过网络传递给B;

    4)B负责将通过网络收到的请求字节流,反序列化成Java类型方法、参数,传递给真正的服务端对象,并调用方法;

    5)B收到服务端对象返回的结果,再序列化传递给A;

    6)A反序列化后,将结果返回给客户端调用者。

    如果采用RMI实现上述RPC过程的话,A即为存根对象,B即为骨架对象;实际上CORBA架构也离不开上述的过程。

    下面从RPC调用过程的先后出场顺序,阐述hadoop的RPC方案:

   

   

    通过new 一个Invoker,来实现invocationHandler,实现调用过程,具体调用又是通过New一个Client对象的call方法实现;

    2、上述的call调用与后续的调用,都是通过实现Writable接口的对象与ObjectWritable对象,来实现序列化与反序列化的,其中还包括所有Java基本类型在内都实现了Writable接口;

    3、CLIENT在向服务端发送请求时,进行了同步,解决了线程安全的问题,并通过新建一个connection线程将调用序列化输出;

   

    connection线程中,对call对象进行序列化输出;

    4、服务端socket监听线程监听到请求时,会开启一个connection线程,构造参数对象,进行反序列化,构造call对象,唤醒call队列;

    5、服务端Handler线程被唤醒后,调用服务端对象,获取结果后,又序列化输出;

   

    调用过程如下:

    6、以DataNode客户端为例,DataXceiveServer线程监听到服务端返回的数据后,就新开启一个DataXceiver线程,DataXceiver将返回的数据进行反序列化后再进行相应处理;

    这样就完成了一个完整的RPC调用过程。
    本文来源:CSDN.NET

分享到:
阅读:2582次
推荐阅读:

版权所有 © 2011-2016 南京云创大数据科技股份有限公司(股票代码:835305), 保留一切权利。(苏ICP备11060547号-1)  
云创大数据-领先的云存储、大数据、云计算产品供应商