标签:实现类 lock receive 本质 类型 直接 private 基本 RoCE
RpcEndpointRef RPC通信实体的引用,等同于ActorRef,在客户端被调用,用来向服务端请求,主要方法是ask和askWithRetry
[x] - 停止Dispatcher
class TransClientFactory {
ConcurrentHashMap<SocketAddress, ClientPool> connectionPool;
}
class ClientPool {
TransportClient[] clients;
Object[] locks;
}
TransportClientBootstrap 由TransportContext传入,启动加载(如 SAAL和加密认证之类的启动操作)
val msgDispatch = internalReceive(client, message)
dispatcher.postMessage(msgDispatch, callback)
NettyStreamMessage: 提供文件服务能力
private val outboxes = new ConcurrentHashMap[RpcAddress, Outbox]()
class Outbox {
nettyEnv; //所在环境
address; //远端NettyRpcEnv地址
messages; //向外发送的消息列表
client; // TransportClient
connectFuture; //连接任务的Future引用
stopped; //是否停止
draining; //Outbox正有线程处理消息
}
a) 如果是同一节点,直接使用Dispatcher的postLocalMessage和postOneWayMessage,直接将消息放入EndpointData的Inbox中;
b) 如果发送方在远处,将消息封装成OutboxMessage,放入远端RpcEndpoint对应的Outbox的messages列表中;
与远端的TransportServer建立连接之后,经Netty管道,NettyRpcHandler处理,投递到远端的Dispatcher的EndpointData的Inbox中进行处理
processFetchRequest 处理获取块请求
processRPCRequest 处理RPC请求
processStreamRequest 处理Stream请求
processOneWayMessage 处理无需回复的请求
RPC服务端实现
TransportServer
标签:实现类 lock receive 本质 类型 直接 private 基本 RoCE
原文地址:https://www.cnblogs.com/fkpj/p/10099544.html