spark源码学习 -worker启动消息通信,inbox,outbox创建

本文深入剖析了Spark Worker的启动过程,包括如何通过Netty进行RPC通信,创建inbox/outbox处理消息。讲解了从Worker开启到与Master建立连接的详细步骤,涉及 RpcEnv、NettyRpcEnv、Dispatcher、MessageLoop等组件,以及如何利用inbox/outbox处理高并发请求。此外,还展示了如何向Master发送注册消息并建立连接。

注意:建议各位看如下代码,一定要导入一份源码到自己本地电脑中哦,可以导入进行调试。流程代码我删除许多,保留重点。

本章主要介绍的是,worker 开启,并与master通信流程,以及inbox收件箱outbox发件箱的创建。认真学习你可以收获许多哦,举例使用该inbox,outbox处理模式,可以嵌入到聊天程序当中哦,处理高并发请求。

废话不多说,进入主题。
spark业务操作和数据传输相隔里,数据传输就交给netty,netty不涉及业务,提高netty服务器的响应时间,提高代码的复用性,降低耦合性。work类中有许多业务处理逻辑,scale编写,数据消息传输netty Java编写。

worker 服务开启通信,需要一个开启远程通信环境RpcEnv。创建inbox收件箱outbox发件箱对消息进行收取转发。
具体worker创建,与master通信过程如下:
在这里插入图片描述
worker开启流程图

**开启worker步骤:**按顺序读

①Worker类: val rpcEnv = RpcEnv.create(systemName, host, port, conf, securityMgr)//开启worker服务入口类
②RpcEnv类
def create(。。。){
new NettyRpcEnvFactory().create(config)
}
③NettyRpcEnvFactory 类
def create(config: RpcEnvConfig): RpcEnv = {
val nettyEnv = new NettyRpcEnv(。。。。)
nettyEnv.startServer(config.bindAddress, actualPort)
}

④NettyRpcEnv类
{
private val dispatcher: Dispatcher = new Dispatcher(this, numUsableCores)
private val transportContext = new TransportContext(transportConf,new NettyRpcHandler(dispatcher, this

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值