YARN源代码解读
RPC是分布式系统的核心:序列化层(Protobuf/Avro/Writable)/函数调用层(反射/动态代理)/网络传输层(Socket)/服务器端处理架构(网络I/O模型)
请求/应答 同步/异步
RMI
1)客户程序以本地方式调用系统产生的 Stub 程序;
2)该 Stub 程序将函数调用信息按照网络通信模块的要求封装成消息包,并交给通信
模块发送到远程服务器端。
3)远程服务器端接收此消息后,将此消息发送给相应的 Stub 程序;
4)Stub 程序拆封消息,形成被调过程要求的形式,并调用对应函数;(动态代理)
5)被调用函数按照所获参数执行,并将结果返回给 Stub 程序;
6)Stub 程序将此结果封装成消息,通过网络通信模块逐级地传送给客户程序
相关类org.apache.hadoop.ipc.RPC:
public static Server RPC.Builder (Configuration).build() :
public static <T> ProtocolProxy <T> getProxy/waitForProxy(...) :
Hadoop RPC:
VersionedProtocol
定义
实现
server
client?为什么传入的参数是interface
RPC.setProtocolEngine是为了改变序列化方法
org.apache.hadoop.ipc.Client
org.apache.hadoop.ipc.Server