在上一篇《HDFS、YARN核心框架RPC基础模型》文章中,介绍了RPC模型,但没分析如何应用到NameNode的,趁着假期在家有空闲时间,就顺便整理了一下。
我们可以选择从NamNode源代码的startCommonServices函数做为切入点。如图:

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

知道了成员变量的类型,那么我们继续查找NameNodeRpcServer,跳到其构造函数中,
这里面定义一个nn变量,从成员变量nn的定义可以知道这是一个namenode实例的引用,在NaneNoderpcServer 对象构造函数中,将namenode服务和serviceRpcServe.getListenerAddress监听端口关联起来,这样就可以对外提供服务了,但现在还不能确定这就是我们要找的RPC服务,然后我们
再来看下serviceRpcServe的源码定义:

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

至此,发现该函数继承自ipc.Server,也就找到了关联点,利用ipc.Server的网络IO线程模型,从而得以支持高并发实现。
文章转载自架构与英文,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




