hadoop1.x中IPC协议

首先:我们先来了解RPC协议具体的内容

(1):是远程方法的调用。一台计算机可以访问到另一台计算机的程序,但是我们却不需要去关注底层内容的实现

(2):hadoop之间进程的交互使用的都是RPC,比如NameNode和DataNode,JobTracker和TaskTracker之间的通信

2:RPC所用到的知识点

(1),动态代理

(2),反射

(3),序列化

(4),非阻塞IO(NIO)

3,RPC机制

(1):序列化层:Client与Server端通信传递的信息采用了Hadoop里提供的序列化或自定义的Writable类型

(2)函数调用层:Hadoop RPC通过动态代理以及java反射实现函数的调用

(3)网络传输层:Hadoop RPC采用了基于TCP/IP的socket机制

(4)服务器端框架层:RPC Server利用java NIO以及采用了事件驱动的I/O模型,提高RPC Server的并发处理能力

在学的时候,在想,为什么要使用动态代理

我的想法是,因为我们要实现远程的链接,但是,我们又不需要将他所有的底层东西知道,我们只需要调用自己想要的就行,而动态代理加反射就是一个很好的方法

根据RPC的机制,我们知道我们需要实现的有四点,按照我的想法来说

从客户端传递信息到服务器端所需要经过的具体过程为(通过一个案列说明):

一:序列化的过程

(1):因为我们在传送数据的时候,需要通过序列化的过程,所以你,首先我们需要对我们要传输的数据进行封装(Data[method,param,result]);

(2):客户端对数据的序列化处理:(RequestHandler:处理客户端对数据的序列化和反序列化处理)

(3):服务器端对建立新的线程对传入数据的处理(ProcessThread:服务器端建立新的线程处理数据)

二:函数调用层:

(1):使用反射技术,运行客户端请求的方法(NameNodeHandler)

(2): 使用java动态代理技术,创建通信协议的虚拟实现类(使用内部类直接写入到RPC协议中客户端调用的方法中)

三:网络传输层:

(1):协议接口(NameNode):实现接口(NameNodeImpl)

(2):使用RPC通信,根据IP,port,实现类为(RPC)

四:服务器端框架层:

这个主要用到的还是在序列化的时候,因为在序列化的额时候,我们需要对数据进行处理。

之后,便是测试

具体代码在下面上传




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值