Spark-源码学习-通信服务-架构设计-路由层
一、概述
Spark RPC 路由层负责将 RPC 消息路由到要该对此消息处理的 RpcEndpoint。在 Spark 中,RpcEndpoint 使用 Dispatcher、Inbox 和 Outbox 三个组件进行消息路由。当一个 RpcEndpoint 接收到来自远程进程的消息时,Dispatcher 会将消息存储在 RpcEndpoint 的 Inbox 中,然后 RpcEndpoint 的线程会从 Inbox 中取出消息并处理它。当 RpcEndpoint 需要向远程进程发送消息时,它会使用 Outbox 将消息发送到远程进程的 Dispatcher。
二、架构设计
2.1. 消息分发器 Dispatcher
消息分发器 Dispatcher 是有效提高 NettyRpcEnv 对消息异步处理并最大提升并行处理能力的前提。
引用本站文章
Spark-源码学习-通信服务-架构设计-路由层-Dispatcher
Joker
2.2. Inbox&Outbox
2.2.1. 指令消息收件箱 Inbox
InboxMessage 是 Inbox 内的消息。InboxMessage 是一个特质,所有类型的 RPC 消息都继承自 InboxMessage
引用本站文章
Spark-源码学习-通信服务-架构设计-路由层-Inbox
Joker
2.2.2. 指令消息发件箱 Outbox
一个远程端点对应一个发件箱,当消息放入 Outbox 后,紧接着将消息通过 TransportClient 发送出去。
引用本站文章
Spark-源码学习-通信服务-架构设计-路由层-Outbox
Joker
消息放入发件箱以及发送过程是在同一个线程中进行、这样做的主要原因是远程消息分为 RpoOutboxMessage 和
OneWayOutboxMessege 两种消息,而针对于需要应答的消息直接发送且需要得到结果进行处理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo