设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

Spark通信架构

2019-7-26 18:07 发布者: heian 评论 0 查看 946
一、通讯组件概览 对源码分析,对于筹划思绪明白如下: RpcEndpoint:RPC端点 ,Spark针对于每个节点(Client/Master/Worker)都称之一个Rpc端点 ,且都实现RpcEndpoint接口,内部根据差别端点的需求,筹划差别的

一、通讯组件概览

对源码分析,对于筹划思绪明白如下:

  1. RpcEndpoint:RPC端点 ,Spark针对于每个节点(Client/Master/Worker)都称之一个Rpc端点 ,且都实现RpcEndpoint接口,内部根据差别端点的需求,筹划差别的消息和差别的业务处置惩罚,假如须要发送(扣问)则调用Dispatcher
  2. RpcEnv:RPC上下文环境,每个Rpc端点运行时依赖的上下文环境称之为RpcEnv
  3. Dispatcher:消息分发器,针对于RPC端点须要发送消息大概从远程RPC吸收到的消息,分发至对应的指令收件箱/发件箱。假如指令吸收方是自己存入收件箱,假如指令吸收方为非自身端点,则放入发件箱
  4. Inbox:指令消息收件箱,一个本地端点对应一个收件箱,Dispatcher在每次向Inbox存入消息时,都将对应EndpointData参加内部待Receiver Queue中,别的Dispatcher创建时会启动一个单独线程举行轮询Receiver Queue,举行收件箱消息斲丧
  5. OutBox:指令消息发件箱,一个远程端点对应一个发件箱,当消息放入Outbox后,紧接着将消息通过TransportClient发送出去。消息放入发件箱以及发送过程是在同一个线程中举行,如许做的重要缘故起因是远程消息分为RpcOutboxMessage, OneWayOutboxMessage两种消息,而针对于须要应答的消息直接发送且须要得到效果举行处置惩罚
  6. TransportClient:Netty通讯客户端,根据OutBox消息的receiver信息,哀求对应远程TransportServer
  7. TransportServer:Netty通讯服务端,一个RPC端点一个TransportServer,继承远程消息后调用Dispatcher分发消息至对应收发件箱
    留意:
    TransportClient与TransportServer通讯虚线表现两个RpcEnv之间的通讯,图示没有单独表达式
    一个Outbox一个TransportClient,图示没有单独表达式
    一个RpcEnv中存在两个RpcEndpoint,一个代表自己启动的RPC端点,别的一个为 RpcEndpointVerifier

二、参考类图

     一个Endpoint就是一个发送和吸收消息的实体,有一个inbox,用来吸收消息,有一个dispatcher,用来路由消息,有一个TransportServer,用来吸收远程TransportClient发送的消息。一个Endpoint根据其通讯的节点的数量,有相应数量的Outbox,
一个Outbox就有一个对应的TransportClient。用于将dispatcher分发来的消息传送到远程的TransportServer上。

    RPCEndPoint抽象类中,有三个方法须要留意
     1、receive方法,用来界说可以大概继承什么消息
     2、receiveAndRelay方法,用来界说可以大概继承什么消息并复兴什么消息。
     3\onStart方法,该方法在节点启动的时间主动调用。

 

三、高层视图


master、worker都是一个endpoint 



路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:JAVAEE经典架构下一篇:基于Mplayer开源多媒体库的音视频播放器

相关阅读

一周热门

头条攻略!

日排行榜

相关分类