网络通信模块是分布式系统中最底层的模块。直接支撑了上层分布式环境下复杂的进程间通信(ipc)。是所有分布式系统的基
网络通信模块是分布式系统中最底层的模块。直接支撑了上层分布式环境下复杂的进程间通信(ipc)。是所有分布式系统的基础。远程过程调用rpc是一种常用的分布式网络通信协议。它允许运行于一台计算机的程序调用另外一台计算机的子程序,同时将网络的通信细节隐藏起来。
hadoop rpc特点
1.透明性
当用户在一台计算机的程序调用另外一台计算机上的子程序时,用户自身不会感觉到跨机器之间的调用。
2.高性能
hadoop的各个系统均采用master/slave结构,其中,master实际是一个rpc server,它负责处理集群中所有的slave发送的服务器请求。为了保证master的并发能力,rpc server应是一个高性能服务器,能够有效处理来自多个client的并发rpc请求。
3.可控性
jdk自带了一个rpc框架rmi,但是hadoop考虑到其太重,所以并没有使用。而是完成了一个轻量级,高性能和可控性强的rpc框架。
hadoop rpc包括四个部分。序列化层,函数调用层,网络传输层,服务器端处理框架。
序列化层:将结构化对象专为字节流以便于通过网络进行传输或者写入持久存储。在rpc框架中,它主要用于将用户请求中的参数或者应答转化成字节流以便跨机器传输。
hadoop自己实现了序列化框架,一个类只要实现writable接口,即可支持对象序列化与反序列化。
函数调用层:定位要调用的函数并执行该函数。hadoop rpc采用java反射机制与动态代理实现了函数调用。
网络传输层:client与server之间消息传输的方式。hadoop rpc采用了基于tcp/ip的socket机制。
服务器端处理框架:网络io模型。描述了客户端与服务器端信息交互的方式。它的设计直接决定着服务器端的并发处理能力。hadoop rpc采用了基于reactor设计模式的事件驱动io模型。
hadoop rpc分为2层。
第一层是一个基于java nio实现的客户机/服务器通信模型。
客户端将用户的调用方法及参数封装成请求包后发送到服务器端。服务器端收到请求包后,经解包、调用函数、打包结果等一系列操作后,将结果返回给服务器端。
第二层是供更上层程序直接调用的rpc接口,这些接口底层即为客户机/服务器通信模型。
原文地址:深入解析mapreduce架构设计与实现原理–读书笔记(6)hadooprpc概述, 感谢原作者分享。