Spark-通信架構(gòu)

Spark 2.x版本使用Netty通訊框架作為內(nèi)部通訊組間。Spark基于Netty新的RPC框架借鑒了Akka中的設(shè)計(jì),基于Actor模型。

Spark通訊框架中各個(gè)組件(Client/Master/Worker)可以認(rèn)為是一個(gè)個(gè)獨(dú)立的實(shí)體,各個(gè)實(shí)體之間通過(guò)消息來(lái)進(jìn)行通信。

Endpoint(Client/Master/Worker)有1個(gè)InBox和多個(gè)OutBox(數(shù)量取決于當(dāng)前Endpoint與多少其他Endpoint通信),Endpoint接收到的消息被寫(xiě)入InBox,發(fā)送出去的消息寫(xiě)入OutBox并被發(fā)送到其他Endpoint的InBox中。

Spark通訊框架解析

Spark通訊架構(gòu)由以下幾方面組成:

  1. RpcEndpoint:RPC端點(diǎn),Spark針對(duì)每個(gè)節(jié)點(diǎn)(Client/Master/Worker)都稱(chēng)之為一個(gè)RPC端點(diǎn),且都實(shí)現(xiàn)RpcEndpoint接口,內(nèi)部根據(jù)不同端點(diǎn)的需求,設(shè)計(jì)不同的消息和不同的業(yè)務(wù)處理,ruguoxuyaofasong澤地阿瞳Dispatcher
  2. RpcEnv:RPC上下文環(huán)境,每個(gè)RPC端點(diǎn)運(yùn)行時(shí)以來(lái)的上下文環(huán)境稱(chēng)為RpcEnv
  3. Dispatcher:消息分發(fā)器,針對(duì)于RPC端點(diǎn)需要發(fā)送消息或者從遠(yuǎn)程RPC接收到的消息,分發(fā)至對(duì)應(yīng)的指令收件箱/發(fā)件箱。如果指令接收方是自己則存入收件箱,否則放入發(fā)件箱
  4. InBox:指令消息收件箱,一個(gè)本地RpcEndpoint對(duì)應(yīng)一個(gè)收件箱,Dispatcher在每次向InBox存入消息時(shí),都將對(duì)應(yīng)的EndpointData加入內(nèi)部ReceiverQueue中,另外Dispatcher創(chuàng)建時(shí)會(huì)啟動(dòng)一個(gè)單獨(dú)線(xiàn)程進(jìn)行輪詢(xún)ReceiverQueue,進(jìn)行收件箱消息消費(fèi)
  5. RpcEndpointRef:RpcEndpointRef是對(duì)遠(yuǎn)程RpcEndpoint的一個(gè)引用。當(dāng)我們需要一個(gè)具體的RpcEndpoint發(fā)送消息時(shí),一般我們需要獲取到該RpcEndpoint的引用,然后通過(guò)該應(yīng)用發(fā)送消息
  6. OutBox:指令消息收件箱,對(duì)于當(dāng)前RpcEndpoint來(lái)說(shuō),一個(gè)目標(biāo)RcEndpoint對(duì)應(yīng)一個(gè)發(fā)件箱,如果向多個(gè)目標(biāo)RpcEndpoint發(fā)送信息,則有多個(gè)OutBox。當(dāng)消息放入OutBox后,緊接著通過(guò)TransportClient將消息發(fā)送出去。消息放入發(fā)件箱以及發(fā)送過(guò)程是在同一個(gè)線(xiàn)程中進(jìn)行
  7. RpcAddress:表示遠(yuǎn)程的RpcEndpointRef的地址
  8. TransportClient:Netty通信客戶(hù)端,一個(gè)OutBox對(duì)應(yīng)一個(gè)TransportClient,TransportClient不斷輪詢(xún)OutBox,根據(jù)OutBox消息的Receiver信息,請(qǐng)求對(duì)應(yīng)的TransportServer
  9. TransportServer:Netty通信服務(wù)端,一個(gè)RpcEndpoint對(duì)應(yīng)一個(gè)TransportServer,接受遠(yuǎn)程消息后調(diào)用Dispatcher分發(fā)消息至對(duì)應(yīng)收發(fā)件箱
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容