栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【HDFS】Hadoop RPC中的Responder、Listener、Reader、Handler

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【HDFS】Hadoop RPC中的Responder、Listener、Reader、Handler

闲得无聊捋了一遍这块的源码,做个粗糙的笔记(阅读不友好型)。

Hadoop RPC中的几个类

NameNode#main()
|
initial()
|
NameNoeRpcServer#start()
|
Server#start():
----启动Responder : run方法里会调doAsyncWrite,如果一次没处理完,还会attach到channel,下次继续处理。
----启动Listener : 绑定监听端口,注册OP_ACCEPT事件,执行doAccept方法。初始化Reader线程并start Reader线程(目前用Round-Robin方法选择Reader)。 doAccept方法中主要就是构造Connection对象,然后注册到ConnectionManager中,同时也会把这个connection添加到Reader线程的pendingConnections这个阻塞队列中等待Reader线程的run方法去take处理。
|
-------- Reader: doRead()方法里 -> readAndProcess方法。
header:hrpc; data长度等于一个确切的rpc的长度,从头里获取这个值。
count = channelRead(channel, data);
processOneRpc() --> Connection#processRpcRequest()->在这里构造RpcCall->internalQueueCall(入CallQueue)

---- 启动Handler:
run方法里:CallQueue中take,执行RpcCall#run() -> Server#call方法 -> 找RpcInvoker调用call方法。-> sendResponse() -> doResponse(先setupResponse设置call对象里面的响应体,之后会调用Responder#doRespond方法将call添加到responseQueue里等待Responder线程处理,也即connection.sendResponse(call)方法里)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号