Spark RPC
Spark RPC是spark个模块之间通信的基础,之前采用的事akka模型,在1.6之后基于netty编写了类似于akka的通信框架.
spark RPC涉及到的类图如下
RpcEnv是RPC模块中的主要的抽象类,其中定义了RPC调用涉及的主要对象和方法。RpcEnv负责注册维护RpcEndpoint和RpcEndpointRef
RpcEndPoint:负责消息处理的类,根据收到的消息来决定调用哪个函数,主要包含receive和receiveAndReply两个方法
RpcEndpintRef:远程RpcEndpoint对应的引用,想对应的RpcEndpoint发送消息
RpcAddress:维护RPC环境的地址和端口号
RpcCallContext:在RpcEndpoint中使用,RpcEndpoint处理完信息后,调用RpcCallContext返回信息或者错误
LocalNetty RpcCallContext:当sender和receiver在同一进程中使用
RemoteNetty RpcCallContext:当sender和receiver不在同一进程中