RpcServer 线程模型
- NameNode启动过程:
- 线程模型
Listener 1个:
- 监听并接受来自客户端的连接.将新建连接放入pendingConnections.
- 清理空闲连接.
- 唤醒Reader.
Reader N个 : 从pendingConnections中获取连接,读取数据,从RpcRequest构造Call,并放入callQueue.
Handler N 个:
- 从callQueue获取客户端调用call,并执行.
- 调用Responder,将结果加入responseQueue的尾部.这里会调用一次发送.如果数据未发送完,注册
WRITE
事件到selector
.并唤醒Responder.
Responder 1个:
- 从responseQueue中按照FIFO顺序发送数据.
- 处理
selector
select出的数据. - 扫描callQueue,并丢弃过期的Call.
【版权所有@foreach_break 博客:http://blog.csdn.net/gsky1986】
时间: 2024-10-14 13:55:37