什么是RPC
RPC(Remote Procedure Call) 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术。RPC假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。
RPC使得开发包括网络分布式程序在内的应用程序更加容易
Hadoop 中的RPC
RPC 分为 Server & Client 两种角色。Server 提供方法调用,Client通过网络来调用Server端的方法,处理返回的数据。
RPC Server 分为以下几种对象
结构 | 功能 |
Server.Listener | RPC Server的监听者,用来接收RPC Client的连接请求和数据,其中数据封装成Call后PUSH到Call队列。 |
Server.Handler | RPC Server的Call处理者,和Server.Listener通过Call队列交互。 |
Server.Responder | RPC Server的响应者。Server.Handler按照异步非阻塞的方式向RPC Client发送响应,如果有未发送出的数据,交由Server.Responder来完成。 |
Server.Connection | 对Client的连接的存储,有客户端的IP端口,调用的服务器端的方法,参数。 |
Server.Call | 持有客户端的Call信息。 |
RPC Client 分为以下几种对象
结构 | 功能 |
Client.ConnectionId | 到RPC Server对象连接的信息存储器。 |
Client.Call | Call调用信息。 |
Client.ParallelResults | 来自服务器端对方法调用的响应。 |
RPC.Invoker | 对InvocationHandler的实现,提供invoke方法,实现RPC Client对RPC Server对象的调用。 |
RPC.Invocation | 用来序列化和反序列化RPC Client的调用信息。(主要应用JAVA的反射机制和InputStream/OutputStream) |