Spark Netty与Jetty (源码阅读十一)
spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼。它基于NIO的服务端客户端框架,具体不再说了,下面开始。
创建了一个线程工厂,生成的线程都给定一个前缀名。

像一般的netty框架一样,创建Netty的EventLoopGroup:

在常用的netty框架中呢,会创建客户端辅助类,设置SocketChannel:
Bootstrap b = new Bootstrap();
b.group(group).channel(NioSocketChannel.class)
spark中呢 根据参数IOMode,返回正确的客户端SocketChannel:
返回正确的服务端socketChannel:

返回远端的Channel地址:

创建一个ByteBuf对本地线程缓存禁用的分配器。ByteBuf是由事件循环线程分配,所以线程本地缓存对于TransportClient是禁用的,ByteBuf释放是由Executor线程,不是事件循环线程完成。本地线程缓存经常会延迟ByteBuf的回收,导致巨大的内存消耗。

Spark这个禽兽,对Jetty也进行了封装,什么是Jetty呢,它是以java作为开发语言的servlet容器,它的API以一组jar包的形式发布,提供网络和web服务.在我理解,Netty是用socket~Jetty呢 就是Http~那么下来,我们看一下JettyUtils:

createServlet,生成HttpServlet匿名内部类,此Responder类型发生隐式转换,转换为用户传入的函数参数。
要为Jetty创建servlet,就涉及ServletContextHandler的API的使用,生成ServletContextHandler:

创建给定路径为前缀的请求的响应处理,将SparkUI中的全部handler加入ContextHandlerCollection.,如果使用配置spark.ui.filters指定了filter,则给所有handler添加filter.然后调用startServiceOnPort,最终回调函数connect:

Spark Netty与Jetty (源码阅读十一)的更多相关文章
- Spark常用函数(源码阅读六)
源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中. 连接Hbase,读取hbase的过程,首先代码如下: def tableInitByTime(sc : SparkC ...
- spark源码阅读之network(1)
spark将在1.6中替换掉akka,而采用netty实现整个集群的rpc的框架,netty的内存管理和NIO支持将有效的提高spark集群的网络传输能力,为了看懂这块代码,在网上找了两本书看< ...
- Spark源码阅读之存储体系--存储体系概述与shuffle服务
一.概述 根据<深入理解Spark:核心思想与源码分析>一书,结合最新的spark源代码master分支进行源码阅读,对新版本的代码加上自己的一些理解,如有错误,希望指出. 1.块管理器B ...
- Netty源码阅读(一) ServerBootstrap启动
Netty源码阅读(一) ServerBootstrap启动 转自我的Github Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速 ...
- 深度学习(七十一)darknet 源码阅读
深度学习(七十一)darknet 源码阅读
- 编译spark源码及塔建源码阅读环境
编译spark源码及塔建源码阅读环境 (一),编译spark源码 1,更换maven的下载镜像: <mirrors> <!-- 阿里云仓库 --> <mirror> ...
- win7+idea+maven搭建spark源码阅读环境
1.参考. 利用IDEA工具编译Spark源码(1.60~2.20) https://blog.csdn.net/He11o_Liu/article/details/78739699 Maven编译打 ...
- spark源码阅读
根据spark2.2的编译顺序来确定源码阅读顺序,只阅读核心的基本部分. 1.common目录 ①Tags②Sketch③Networking④Shuffle Streaming Service⑤Un ...
- netty(一)---服务端源码阅读
NIO Select 知识 select 示例代码 : //创建 channel 并设置为非阻塞 ServerSocketChannel serverChannel = ServerSocketCha ...
随机推荐
- Unity3D教程:茄子童萌會
http://s.epb.idv.tw/han-shi-ku/unity Unity 0000 Unity3D學習之路 - C#學習筆記(一) 0001 Unity3D學習之路 - C#學習筆記(二) ...
- NOPI导出加载模板
ListExcel导出(加载模板) /// <summary> /// List根据模板导出ExcelMemoryStream /// </summary> /// <p ...
- SDK截图(三):压缩位图之理论准备篇
压缩位图我们使用简单的行程长度编码的方法,详情参考<windows程序设计>15章之DIB压缩. 在BITMAPINFOHEADER结构中有两个和位图压缩有关的字段,分别是biCompre ...
- Array(数组)--map方法
关于Array.prototype.map() MDN 给的定义是: 在作用数组元素的每一项上调用一个方法(callback),返回一个新数组: 使用格式:arr.map(callback[,this ...
- Installshield如何实现升级覆盖文件
这个简单的问题,问过的人不计其数,但是反馈者寥寥,并且往往不能顺利达成目标,只能采取复杂方式来实现,这里吐槽一下IS的帮助文档,很庞大很全,但是有些小技巧就是不讲. 网友冰雪孤独哥今天提供了及时的反馈 ...
- [转] LBYL与EAFP两种防御性编程风格
检查数据可以让程序更健壮,用术语来说就是防御性编程.检查数据的时候,有这样的两种不同的风格.LBYL:Look Before You Leap EAFP:Easier to Ask Forgiven ...
- 从AutoCAD和.NET开始
引自并参考Kean's blog:http://through-the-interface.typepad.com/through_the_interface/2006/07/getting_star ...
- python 中locals() 和 globals()
1.locals() 和 globals() 是python 的内建函数,他们提供了字典的形式访问局部变量和全局变量的方式. 示例代码: def test(arg): a=1 b=2 data_dic ...
- bootstrap-15
缩略图:缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或者右侧)带有标题.描述信息.Bootstrap框架将这一部独立成一个模块组件,并通过thumbnail样式配 ...
- linux 系统性能分析
CPU篇 top 1时,看各个cpu是否均衡:看每个cpu的使用率分布是否合理 看load average的负载( 1分钟.5分钟.15分钟前到现在的平均值) 看内存的使用 看进程数运行.休眠数 M看 ...