Spark源码(五)——RPC组件
发布日期:2021-11-18 17:47:13
浏览次数:14
分类:技术文章
本文共 1046 字,大约阅读时间需要 3 分钟。
文章目录
前言
RPC是一种远程过程的调用,即是两台机器或节点之间的数据传输;- 各个组件都有自己的执行环境,java必须在jvm, spark在spark-env,rpc在rpc-env,rpc-env是在spark2.x.x新增的,替换了spark1.x.x的akka通信框架; 其中RPC-env离不开我们的sparkENV,在我们的SparkEnv启动时即是会启动RPC-ENV; sparkENV是在sparkcontext启动的时候启动;
一、Spark内置的RPC
sparkcontext是万物之初,在sparkContext中会有一个createsparkEnv(),一层一层往下创建;
在了解NettyRPCENV之前,需要先了解几个基本概念,这些很重要:- RPC端点:RPCEndPoint,简单就是能够处理RPC请求的一个组件的抽象;也就是相当于akka的actor;以下剖析RPCEndPoint,主要包括recieve方法和recieveandreply方法 其中ThreadSafeRpcEndpint主要是处理rpc消息的,有若干个类实现这个ThreadSafeRPcEndpoint;
2.akka框架中通信有两个组件,akka和akkaREF,所以rpcEndpointREF替换了akkaREF。
客户端想向服务端发送消息,必须要有服务端的RPCEndpoint的引用; RPCEnddpointREF包括如下方法: 3.消息相关的类:InboxMessage 一共有七种类型的消息: OneWayMessage:不需要回复的消息;rpcEndpoint可以处理此消息不响应 RPCMessage:这个消息发送给rpcendpoint就必须处理并响应; 其他三个类对应:RPCEndpoint的onconnected,ondisconnected,onNetworkError方法处理;- 重头戏:Dispatcher,消息调度器,有效提高nettyRpcENV对消息的处理并最大提升并行处理,主要负责将RPC消息发送到要对该消息处理RPCEndpoint;
转载地址:https://blog.csdn.net/weixin_37850264/article/details/111992615 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月31日 12时48分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Java网络编程与IO流】Java中BIO、NIO、AIO的区别是什么?
2019-04-26
【Leetcode刷题篇】leetcode136 只出现一次的数字
2019-04-26
spring boot整合thymeleaf,支持JSP和HTML页面开发
2019-04-26
【Java网络编程与IO流】Spring boot整合SSE实现服务器实时推送流信息
2019-04-26
【Leetcode刷题篇】leetcode141 环形链表II
2019-04-26
【Leetcode刷题篇】leetcode160 相交链表
2019-04-26
【Leetcode刷题篇】leetcode169 多数元素
2019-04-26
【Leetcode刷题篇】leetcode461 汉明距离
2019-04-26
【Leetcode刷题篇】leetcode204 计数质数
2019-04-26
【Leetcode刷题篇】leetcode70 爬楼梯
2019-04-26
【Leetcode刷题篇】leetcode739 每日温度
2019-04-26
【Leetcode刷题篇】leetcode121买卖股票的最佳时机
2019-04-26
【面试篇】Java多线程并发-Java关键字volatile详解
2019-04-26
【面试篇】Java的代理模式-静态代理和动态代理详解
2021-06-29
【面试篇】 Java对象拷贝(对象克隆 对象复制)
2021-06-29
【Leetcode刷题篇】leetcode64 最小路径和
2021-06-29
【Leetcode刷题篇】leetcode79 单词搜索
2021-06-29
【Leetcode刷题篇】leetcode300 最长上升子序列
2021-06-29