Spark的RPC

一步一步走下去:

RpcAddress

RpcEndPointRef

当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。

部分方法:

RpcEnv

RpcEnv的部分方法:

RpcEndpoint

正如他所说我们前去看他的生命周期:

那么RpcEndpoint表示一个个需要通信的个体都有哪些?如master,worker,driver

Driver这里就不在做演示了,有兴趣的可以自行进入源码中查看。

在调用中,我们发现了一个RpcCallContext的特性,在receiveAndReply被作为参数。

所以关注了一下他:


整片博客中由许多方法,类并未列出,看时做一个参考即可。在自己的idea中查看源码。仅做一个引导。

瞎琢磨一阵,做个小总结:

打个比喻:若是将Spark类比为一个人的话,Spark RPC无疑就是它的血液部分。所以说Spark RPC可以说是Spark分布式集群的基础。

在整个RPC中:

RpcEnv为RpcEndpoint提供处理消息的环境。RpcEnv负责RpcEndpoint整个生命周期的管理,包括:注册endpoint,endpoint之间消息的路由,以及停止endpoint。

RpcEndpoint表示一个个需要通信的个体(如master,worker,driver),主要根据接收的消息来进行对应的处理。一个RpcEndpoint经历的过程依次是:构建->onStart→receive→onStop。其中onStart在接收任务消息前调用,receive和receiveAndReply分别用来接收另一个RpcEndpoint(也可以是本身)send和ask过来的消息。

RpcEndpointRef是对远程RpcEndpoint的一个引用。当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。

RpcAddress表示远程的RpcEndpointRef的地址,Host + Port。

浅析SparkRPC源码(spark2.11)相关推荐

  1. SparkRPC源码分析之RPC管道与消息类型

    SparkRPC源码分析之RPC管道与消息类型 我们前面看过了netty基础知识扫盲,那我们应该明白,ChannelHandler这个组件内为channel的各种事件提供了处理逻辑,也就是主要业务逻辑 ...

  2. element label动态赋值_浅析 vuerouter 源码和动态路由权限分配

    背景 上月立过一个 flag,看完 vue-router 的源码,可到后面逐渐发现 vue-router 的源码并不是像很多总结的文章那么容易理解,阅读过你就会发现里面的很多地方都会有多层的函数调用关 ...

  3. Eclipse导入Zookeeper源码Version2017.11.3

    将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...

  4. 浅析 vue-router 源码和动态路由权限分配

    背景 上月立过一个 flag,看完 vue-router 的源码,可到后面逐渐发现 vue-router 的源码并不是像很多总结的文章那么容易理解,阅读过你就会发现里面的很多地方都会有多层的函数调用关 ...

  5. Linux源码0.11解析:03_head.s

    本文解析head.s程序,主要分为 部分: 1 设置中断描述表(IDT) 2 设置全局描述符表(GDT) 3 检测A20总线打开 4 检测协处理器 5 开启分页机制 6 调用主函数 7 地址再探 在执 ...

  6. 浅析libuv源码-node事件轮询解析(2)

    上一篇讲了轮询的边角料,这篇进入正题.(竟然真有人看我博客,上两个图给你们整理下思路) 这是轮询总流程图. 下图为本节内容简图. Poll for I/O The loop blocks for I/ ...

  7. 浅析libuv源码-node事件轮询解析(1)

    好久没写东西了,过了一段咸鱼生活,无意中想起了脉脉上面一句话: 始终保持自己的竞争力.所以,继续开写! 一般的JavaScript源码看的已经没啥意思了,我也不会写什么xx入门新手教程,最终决定还是啃 ...

  8. libuv访问mysql_浅析libuv源码-编译启动

    面试的间隙回头复习了一下node,感觉node就像一个胶带,把V8和libuv粘在了一起. V8毫无疑问,负责解析执行JavaScript,相当于语言层面的桥梁:而libuv则是负责操作系统底层功能的 ...

  9. [HGE]-源码分析-11 sound

    音效部分. HGE的音效底层接口用的BASS库,做的事情就是把BASS库里的操作封装了一下. 这个文件里面函数挺多,外部的接口分为,Effect,music,Stream,Channel 先上图看看这 ...

最新文章

  1. 新冠影响男性生育能力,肾脏睾丸易感染,科学家建议康复患者检查生殖系统...
  2. beego ajax图片上传,Beego框架POST请求接收JSON数据
  3. 正点原子stm32f407开发板pcb图_#试用名单公布#正点原子ARM Linux开发板I.MX6ULL
  4. 这几张图告诉你化学到底有多神奇!看完瞬间觉得智商都提高了!
  5. C语言 gcc API
  6. java batik_Java端使用Batik将SVG转为PNG
  7. 1.深入浅出:理解三极管截止、放大和饱和状态!——参考《模拟电子技术基础》清华大学华成英主讲
  8. [译] SolidWorks的发展历史(1994~2007)
  9. Windows系统打开服务窗口(三种方式)
  10. 阿里云虚拟主机内存占用大问题解决
  11. 计算机组成原理A原是什么,计算机组成原理(A).doc
  12. 第一次OllyDbg逆向记录(分析思路和注意点其他文章)
  13. 财税!2020个人银行账户进账多少会被查?
  14. excel导出图片---HSSFWorkbook--SXSSFWorkbook
  15. 快速创建ROS2 packages
  16. 机器人学笔记之——空间描述和变换:算子
  17. Chrome浏览器更新
  18. 2021-11-05 奈氏准则,香农定理(考研中的第一波知识点)
  19. 新版ideal2021配置Tomcat
  20. 基于Java+SQLServer2017实现(Web)酒店客房管理系统【100010327】

热门文章

  1. CodeForces - 1217F Forced Online Queries Problem(线段树分治+并查集撤销)
  2. 牛客 - 膜法记录(状压dp预处理)
  3. UVA - 11437 Triangle Fun(简单几何)
  4. (转)区间合并pushup函数模板
  5. 排序算法-04快速排序(Python实现)
  6. Virtual Box中Centos虚拟机设置静态IP
  7. C语言执行shellcode的五种方法
  8. C++虚继承(二) --- C++ 对象的内存布局(上)(陈皓)
  9. Cronet android 设计与实现分析——备选服务机制
  10. MySQL(一): 数据类型、库的操作、表的操作