spark 源码分析之十二--Spark RPC剖析之Spark RPC总结

spark 源码分析之五 -- Spark内置RPC机制剖析之一建立NettyRpcEnv中,剖析了NettyRpcEnv的建立过程。html

Dispatcher、NettyStreamManager、TransportContext、TransportClientFactory、TransportServer、Outbox、Inbox等等基础的知识都已经在前面剖析过了。网络

能够参照以下文章作进一步了解。架构

spark 源码分析之五 -- Spark内置RPC机制剖析之一建立NettyRpcEnv框架

spark 源码分析之六 -- Spark内置RPC机制剖析之二Dispatcher和Inbox、Outbox剖析源码分析

spark 源码分析之七 -- Spark内置RPC机制剖析之三RpcEndPoint和RpcEndPointRef剖析spa

spark 源码分析之八 -- Spark内置RPC机制剖析之四TransportContext和TransportClientFactory剖析netty

spark 源码分析之九 -- Spark内置RPC机制剖析之五StreamManager和RpcHandlercode

spark 源码分析之十 -- Spark内置RPC机制剖析之六TransportResponseHandler、TransportRequestHandler和TransportChannelHandler剖析htm

spark 源码分析之十一 -- Spark内置RPC机制剖析之七TransportClient和TransportServer剖析blog

 

spark rpc 总体架构图以下(本身画的😄,很久不画了,生疏了):

做以下说明:

1. spark 网络层是直接依赖于netty 框架的,它的适配器直接绑定到netty 的channel 上。

2. 图中的channel 的encoder 和 decoder 等等netty 相关的组件没有体现出来。

3. channel 是全双工的,因此NettyRpcEnv既有TransportClient 也有TransportServer。

4. 请求包括数据层面的chunk请求和控制层面的rpc请求。chunk请求会被StreamManager处理,rpc 请求会进一步经过Dispatcher分发给合适的endpoint。返回结果经过channel 返回给发送端。

5. RpcEndpointRef能够是本地的RpcEndpoint的简单包装也能够是远程RpcEndpoint 的表明。当RpcEndpoint 发送给 RpcEndpointRef 时,若是这个 RpcEndpointRef 是本地 RpcEndpointRef,则事件消息会被Dispatcher作进一步分发。若是是远程消息,则事件会被进一步封装成OutboxMessage,进而经过本地TransportClient将这个消息经过channel 发送给远程的 RpcEndpoint。

至此,spark rpc所有分析完毕。

原文出处:https://www.cnblogs.com/johnny666888/p/11160486.html

相关文章
相关标签/搜索