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

相關文章
相關標籤/搜索