既然是RPC,自然就有客户端和服务器,当然,org.apache.hadoop.rpc 也就有了类Client 和类Server。在这里我们来仔细考 察org.apache.hadoop.rpc.Client。下面的图包含了org.apache.hadoop.rpc.Client 中的关键类和关键方法。 由于Client 可能和多个Server 通信,典型的一次HDFS 读,需要和NameNode 打交道,也需要和某个/某些DataNode 通信。这 就意味着某一个Client 需要维护多个连接。同时,为了减少不必要的连接,现在Client 的做法是拿ConnectionId(图中最右 侧)来做为Connection 的ID。ConnectionId 包括一个InetSocketAddress(IP 地址+端口号或主机名+端口号)对象和一个用 户信息对象。这就是说,同一个用户到同一个InetSocketAddress 的通信将共享同一个连接。 ![]() 连接被封装在类Client.Connection 中,所有的RPC 调用,都是通过Connection,进行通信。一个RPC 调用,自然有输入参数, |
关注超人学院微信:BJ-CRXY
更多精彩内容请访问:http://bbs.superwu.cn