Spark Netty与Jetty (源码阅读十一)
2016-12-08 23:42
330 查看
spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼。它基于NIO的服务端客户端框架,具体不再说了,下面开始。
创建了一个线程工厂,生成的线程都给定一个前缀名。
像一般的netty框架一样,创建Netty的EventLoopGroup:
在常用的netty框架中呢,会创建客户端辅助类,设置SocketChannel:
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:
创建了一个线程工厂,生成的线程都给定一个前缀名。
像一般的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:
相关文章推荐
- mochiweb 源码阅读(十一)
- uboot源码阅读(十一)内存分配与nand存储分配
- Argo源码阅读(一):Jetty
- TiDB 源码阅读系列文章(十一)Index Lookup Join
- jQuery源码阅读(十一)---each、map、grep、merge、makeArray、inArray解读
- ORB-SLAM2的源码阅读(十一):LoopClosing类
- jetty源码阅读总结1
- jetty源码阅读总结1
- J.U.C并发框架源码阅读(十一)DelayQueue
- jetty源码阅读总结1
- spatialhadoop2.3源码阅读(十一) ShapeRecordReader & SpatialRecordReader[Grid Index MapReuce]
- RTMP学习(十一)rtmpdump源码阅读(6)请求播放
- tomcat源码阅读步骤十一
- Jetty源码阅读 - ServerConnector
- Spring源码阅读(十一)—AOP补充
- redis3.0.7源码阅读(十一)redis数据库rdb
- 源码阅读—String equals()
- [置顶] nginx源码阅读(二).初始化:main函数及ngx_init_cycle函数
- Halide学习笔记----Halide tutorial源码阅读10
- zabbix源码阅读——zabbix_server