远程过程调用,可以通过网络远程计算机请求服务,不需要关注底层网络协议实现,通常请求从客户机发起,服务程序由服务器提供
特点:
- RPC采用C/S模式
- 客户端发送一个带有参数的请求信息到服务端
- 服务器端根据发送过来的参数调用相应的程序,将结果发送回客户端
- 客户端接受到结果后继续运行
- 透明性:对于用户来说,远程调用其他机器上的程序,和调用本地方法一样
- 高性能:能够并发处理多个来自客户端的请求
- 可控制:JDK中提供的RPC框架为RMI,但是过于重量级,可控制性较差
Hadoop的RPC
- 序列化层:客户端与服务端通信传递的信息采用了Hadoop中提供的序列化类或者自定义的Writable类型
- 函数调用层:通过动态代理和Java反射实现函数调用
- 网络传输层:采用基于TCP/IP的socket机制
- 服务端框架层:RPC Server利用Java NIO以及采用了事件驱动的I/O模型,提高了RPC Server的并发处理能力