vlambda博客
学习文章列表

HDFS如何支持高并发

在上一篇《HDFS、YARN核心框架RPC基础模型》文章中,介绍了RPC模型,但没分析如何应用到NameNode的,趁着假期在家有空闲时间,就顺便整理了一下。


我们可以选择从NamNode源代码的startCommonServices函数做为切入点。如图:

从该代码我们看到rpcServer的出现,然后我们继续找到该成员变量的定义处,可以看到其实它是一个NameNodeRpcServer实例:


HDFS如何支持高并发


知道了成员变量的类型,那么我们继续查找NameNodeRpcServer,跳到其构造函数中,

HDFS如何支持高并发这里面定义一个nn变量,从成员变量nn的定义可以知道这是一个namenode的引用,在NaneNoderpcServer 对象构造函数中,将namenode服务和serviceRpcServe.getListenerAddress监听端口关联起来,这样就可以对外提供服务了,但现在还不能确定这就是我们要找的RPC服务,然后我们

再来看下serviceRpcServe的源码定义:

其是一个RPC的内部类Server的实例。继续跟踪代码,到了Server定义处: 

至此,发现该函数继承自ipc.Server,也就找到了关联点,利用ipc.Server的网络IO线程模型,从而得以支持高并发实现。