hadoop yarn 学习读书笔记(1)-rpc

 RPC总体架构

 同其他RPC框架一样,Hadoop RPC主要分为四个部分,分别是序列化层、函数调用层、网络传输层和服务器端处理框架,具体实现机制如下:

  •     序列化层。序列化主要作用是将结构化对象转为字节流以便于通过网络进行传输或写入持久存储,在RPC框架中,它主要用于将用户请求中的参数或者应答转化成字节流以便跨机器传输。前面介绍的Protocol Buffers和Apache Avro均可用在序列化层,Hadoop本身也提供了一套序列化框架,一个类只要实现Writable接口即可支持对象序列化与反序列化。   
  •     函数调用层。函数调用层主要功能是定位要调用的函数并执行该函数,Hadoop RPC采用了Java反射机制与动态代理实现了函数调用。  
  •     网络传输层。网络传输层描述了Client与Server之间消息传输的方式,Hadoop RPC采用了基于TCP/IP的Socket机制。   
  •     服务器端处理框架。服务器端处理框架可被抽象为网络I/O模型,它描述了客户端与服务器端间信息交互方式,它的设计直接决定着服务器端的并发处理能力,常见的网络I/O模型有阻塞式I/O、非阻塞式I/O、事件驱动I/O等,而Hadoop RPC采用了基于Reactor设计模式的事件驱动I/O

a653a41611fb9e427c122d1736e3290e?thumb=384x&scale=auto

 

Hadoop RPC使用方法

  • public static <T>ProtocolProxy <T>getProxy/waitFor-Proxy(…):构造一个客户端代理对象(该对象实现了某个协议),用于向服务器发送RPC请求。   
  • public static Server RPC.Builder (Configuration).build():为某个协议(实际上是Java接口)实例构造一个服务器对象,用于处理客户端发送的请求。
  1. 定义暴露服务的接口,接口需要扩展org.apache.hadoop.ipc.VersionedProtocol
  2. 为接口提供实现类
  3. 绑定接口和实现类,并通过RPC暴露接口。

        

Server server = new RPC.Builder(conf).setProtocol(SelfProtocol.class)   .setInstance(new SelfProtocolImpl()).setBindAddress(ADDRESS).setPort(0)                            .setNumHandlers(5).build();

server.start();

  1. rpc远程调用。

#客户端实现

proxy = (ClientProtocol)RPC.getProxy(ClientProtocol.class, ClientProtocol.versionID, addr, conf);

int result = proxy.add(5, 6);

String echoResult = proxy.echo("result");

转载于:https://my.oschina.net/u/347227/blog/1359195

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值