Hadoop源码剖析11-Hadoop的IPC实现过程

1. Connection

IPC连接(Connection)是IPC客户端和服务器关系的一个抽象,一个IPC客户端在
调用服务器上的方法前,需要和服务器建立一个连接。由于客户端对连接的抽象与服务器
端对连接的抽象不太一样,连接必须区分为客户端连接类Client.Connection和服务器连接
类Server.Connection,它们各自提供了客户端和服务器管理连接需要的相关信息和方法。
Hadoop的远程过程调用使用TCP协议进行通信,IPC连接建立在TCP连接之上。

2. Call

在客户端和服务器建立连接以后,客户端就可以对外提供远程过程调用服务了,远程
过程调用是对IPC接口上方法的调用,它在Hadoop源代码中的抽象就是远程调用Call.和
Connection类似,客户端和服务器分别定义了各自的内部远程调用类,分别是Client.Call和
Server.Call.通过对Call的抽象,客户端对远程服务器的过程调用,就可以通过IPC客户端
和服务器间的连接,发送到服务器,处理后再返回到客户端。

3. Server 处理

Server处理器指的是监听器(Listener)、处理器(Handler)和应答器(Responder),三
者配合在IPC服务器上完成客户端的远程调用的处理.

  • 其中,Listener监听客户端发来的连接请求和连接建立后的数据请求,并调用服务器端
    连接对象上的相关方法。连接对象的主要工作是接收来自客户端的远程调用请求帧,反序列
    化以后,这些调用请求会放入一个阻塞队列中,由Handler处理.
  • Handler根据远程调用Call中的上下文,调用对应的IPC接口实现类,完成服务春端的
    过程调用,调用结果经过序列化后,在连接的应答队列为空时,返回给客户端.
  • 当客户端比较忙时(这时应答队列不为空),Handler将调用结果放入响应队列,并由
    Responder通过IPC连接发送回客户端。也就是说,Handler和Responder都可以发送调用结果.
发布了162 篇原创文章 · 获赞 264 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_43893397/article/details/104038988