hadoop中rpc的具体实现:

本文回顾了一年前研究过的 Hadoop RPC 模块,并介绍了最新的改进与新增特性。主要探讨了 Java 中代理类机制的应用、对象与字节数组之间的序列化与反序列化过程,以及基于 Java 的 select 模型实现的 socket 网络通信。

还是一年前看过 rpc 模块,今天回头去复习了一下,发现有一些小小的改动,增加了一些接口,比如 RPCEngine 。还增加了对 socket 一些参数的配置,比如时间设置等。但总体思路基本没有变,关键就是下面几个点。

1.         java 中有代理类这样的机制,即只需要知道类名和方法名,即可以通过这个代理类去调用真正的类方法,而不需要直接去 new 一个对象,再调用该对象的方法来完成。特别是在 RPC 中,当客户端要调用某个远程对象的方法时,即可调用代理类,然后让代理类与远程进程进行通信,得到函数的返回值,再返回给客户端。

2.         不同类型的对象与字节数组之间的转换,方便低层的 socket 传输。即序列化与反序列化的功能, hadoop 中所有这些对象都需要实现 Writable 接口来完成序列与反序列的方法。

3.         socket 网络通信模型。最常用的就是异步方式,而在 java 实现中 select 模型较常用,而在 C 实现中 epoll 事件处理模型较常用。在 hadoop 实现里,就是基于 java select 模型实现。

另外, hadoop rpc 不支持多语言间进程通信,而像 ProtocolBuffer thrift avro 等是支持多语言的通信框架,画了个图来描述通信的类调用关系。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值