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。
来源:oschina
链接:https://my.oschina.net/u/4473161/blog/3196153