Spark-Master源码和Master-HA
源码
总结1:
Master(startRpcEnvAndEndpoint)的工作主要有2部分组成
一是搭建环境(RpcEnvEndpoint)–> val rpc = RpcEnv.create(…)
在new NettyRpcEnvFactory().create()的nettyEnv.startServer()底层的receivers.offer(data)触发
new NettyRpcEnvFactory().create()的val nettyEnv = new NettyRpcEnv()底层的receivers.take()方法
//val transportContext = new TransportContext(NettyRpcHandler)方法。
二是触发执行 --> val masterEndpoint: RpcEndpointRef = rpcEnv.setupEndpoint(xx.new Master…)
在其底层的 val data:EndpointData = endpoints.get(name) receivers.offer(data)执行
endpoint.onStart()
其中receivers.offer(data)和endpoint.onStart()触发receivers.take()方法完成整个过程