Spark RPC阅读笔记(初稿)

原创 2016年06月01日 19:07:48

阅读代码的版本为2.0.0-SNAPSHOT。在最新的Spark源码中,RPC统一采用了Netty作为传输框架。主要由RpcEnv,RpcEndpointRpcEndpointRef组成,他们之间的关系图如下:
这里写图片描述

RpcEnv必须由RpcEnvFactory实现,RpcEnv可以理解一个容器,所有的RpcEndpoint都必须像RpcEnv注册,并得到对应的RpcEndpointRef,这样就可以由RpcEndpointRef 发送消息到RpcEnv,由RpcEnv找到对应的RpcEndpoint并对收到的消息进行处理和反馈。接下来简单介绍下这三个类:

RpcEnv

RpcEnv的类的注释如下:
An RPC environment. RpcEndpoints need to register itself will process messages sent from RpcEndpointRef or remote nodes, and deliver them to corresponding RpcEndpoints. For uncaught exceptions caught by RpcEnv, RpcEnv will use RpcCallContext.sendFailure to send exceptions back to the sender, or logging them if no such sender or to retrieve RpcEndpointRefs given name or uri.

大致意思就是上面我写的那段话,对于出现了错误,RpcEnv会将错误发回到Sender或者日志记录。

注册方法:

/**
   Register a RpcEndpoint with a name and return its RpcEndpointRef. RpcEnv
does not guarantee thread-safety.
   */
  def setupEndpoint(name: String, endpoint: RpcEndpoint): RpcEndpointRef

注册RpcEndpointRpcEnv,并返回对应的RpcEndpointRef.

类中还有一些获得对应RpcEndpointRef的方法。

RpcEndpoint

RpcEndpoint类的注释:
An end point for the RPC that defines what functions to trigger given a message. It is guaranteed that onStart, receive and onStop will be called in sequence. The life-cycle of an endpoint is: constructor -> onStart -> receive -> onStop

Note: receive can be called concurrently. If you want receive to be thread-safe, please use ThreadSafeRpcEndpoint. If any error is thrown from one of RpcEndpoint methods except onError, onError will be invoked with the cause. If onError throws an error, RpcEnv will ignore it.

RpcEndpoint定义了一系列对接受到的消息做出反应的方法.RpcEndpoint的内部的生命周期是constructor -> onStart -> receive -> onStop。主要的处理逻辑是根据在receive收到消息,然后调用相应的处理方法。
receive可以并发访问,Spark提供了ThreadSafeRpcEndpoint线程安全的版本。

RpcEndpointRef

RpcEndpointRef类的注释:
A reference for a remote RpcEndpoint. RpcEndpointRef is thread-safe.

可以理解为是RpcEndpoint的远程引用,内部的方法主要是发送消息的一些方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark源码学习笔记6-RpcEnv(Rpc实现层)

继5-RpcEnv(Rpc抽象层) 之后,我们再来了解下Rpc框架下的实现层。

Spark源码学习笔记5-RpcEnv(Rpc抽象层)

继4-SparkEnv 之后,我们再来详细研究下SparkEnv中出现的一个核心RpcEnv。

spark源码阅读笔记

  • 2017年11月16日 10:53
  • 1.65MB
  • 下载

Spark底层通信RPC源码分析

这是本人自己看着源码和经验来进行分析,可能排版或者文章里面有错误或者错别字,敬请谅解,也可加本人QQ:157788748来进行交流,如果真的对你有帮助麻发个红包支持一下作者 谢谢...

spark源码之sparkEnv(1)RPC通信

1 SparkConf构造函数Spark Driver用于提交用户应用程序,实际可以看作Spark的客户端。启动./bin/spark-submit时,会产生sparkContext,配置参数则是 ...

spark rpc远程调用基础

http://blog.csdn.net/xyang81/article/details/7292380 一、什么是ClassLoader?          大家都知道,当我们写好一...

Spark RPC之RpcEndpointVerifier

RpcEndpointVerifier的作用是,当RpcEndpointRef访问对应的RpcEndpoint前,判断RpcEndpoint是否存在...

Spark RPC之Netty启动

Spark RPC概述中我们介绍了Spark RPC接口的设计和使用,并且spark1.6版本中RPC底层实现使用netty,并在后续2.x版本中彻底移除了akka,因此,我们看下Spark RPC内...

Spark RPC通信层设计原理分析

Spark将RPC通信层设计的非常巧妙,融合了各种设计/架构模式,将一个分布式集群系统的通信层细节完全屏蔽,这样在上层的计算框架的设计中能够获得很好的灵活性。同时,如果上层想要增加各种新的特性,或者对...

Spark RPC之Dispatcher、Inbox、Outbox

概要 Dispatcher、Inbox、Outbox完成了Spark RPC底层对请求消息的分发及处理流程,Dispatcher和Inbox作用于server端,处理请求,Outbox作用于clie...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark RPC阅读笔记(初稿)
举报原因:
原因补充:

(最多只允许输入30个字)