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 (源码阅读十一)的更多相关文章

  1. Spark常用函数(源码阅读六)

    源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中. 连接Hbase,读取hbase的过程,首先代码如下: def tableInitByTime(sc : SparkC ...

  2. spark源码阅读之network(1)

    spark将在1.6中替换掉akka,而采用netty实现整个集群的rpc的框架,netty的内存管理和NIO支持将有效的提高spark集群的网络传输能力,为了看懂这块代码,在网上找了两本书看< ...

  3. Spark源码阅读之存储体系--存储体系概述与shuffle服务

    一.概述 根据<深入理解Spark:核心思想与源码分析>一书,结合最新的spark源代码master分支进行源码阅读,对新版本的代码加上自己的一些理解,如有错误,希望指出. 1.块管理器B ...

  4. Netty源码阅读(一) ServerBootstrap启动

    Netty源码阅读(一) ServerBootstrap启动 转自我的Github Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速 ...

  5. 深度学习(七十一)darknet 源码阅读

    深度学习(七十一)darknet 源码阅读

  6. 编译spark源码及塔建源码阅读环境

    编译spark源码及塔建源码阅读环境 (一),编译spark源码 1,更换maven的下载镜像: <mirrors> <!-- 阿里云仓库 --> <mirror> ...

  7. win7+idea+maven搭建spark源码阅读环境

    1.参考. 利用IDEA工具编译Spark源码(1.60~2.20) https://blog.csdn.net/He11o_Liu/article/details/78739699 Maven编译打 ...

  8. spark源码阅读

    根据spark2.2的编译顺序来确定源码阅读顺序,只阅读核心的基本部分. 1.common目录 ①Tags②Sketch③Networking④Shuffle Streaming Service⑤Un ...

  9. netty(一)---服务端源码阅读

    NIO Select 知识 select 示例代码 : //创建 channel 并设置为非阻塞 ServerSocketChannel serverChannel = ServerSocketCha ...

随机推荐

  1. IntelliJ怎么读?

    原来IntelliJ 的正确发音是 Intel  li  J. 周知.

  2. span标签跳转新页面

      <span onclick="javascript:window.open('http://eccu.fr/guanli/login.aspx')" style=&quo ...

  3. 深入了解C#中的静态变量和静态构造函数

    深入的剖析C#中静态变量和静态构造函数: 在日常的程序开发过程经常会使用到静态变量,众所周知,静态变量时常驻内存的变量,它的生命周期是从初始化开始一直到Application结束.但是,我们经常会忽略 ...

  4. thinkphp 介绍

    一.ThinkPHP的介绍             MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板)        工作:负责 ...

  5. IC卡复位应答ATR的数据元和它们的意义

    ISO/IEC 7816-3标准中对ATR的数据串和数据元做了规定和描述.ATR的数据元和它们的意义: 数据元 说明 TS 起始字符 T0 格式字符 TA1,TB1,TC1,TD1,... 接口字符 ...

  6. 创建html模板

    打开写好的html 复制  在页面上右击------属性  --会出现下面情况

  7. ajax请求cookie有效性问题验证

    与人讨论时遇到一个问题,就是: 浏览器中后台发起的一个异步ajax请求,服务器做响应时,附带了cookie信息,那么后续对同域名下其他页面请求时,该cookie是否有效,会一并随请求提交到web服务器 ...

  8. UVA1103

    题意:输入以16进制的矩阵,先转换成2进制,之后输出形成的图案. 思路:先处理掉无关图案的0,之后一个图案一个图案的遍历,识别图案的方法就是有多少个圈圈.找到一个就全部标记为-1.并且记录圆圈的数目. ...

  9. 解决Type 'UnityEngine.Component' does not support slicing

    unity从4.x升级到5.x后部分脚本的编译错误 将animation改成GetComponent.<Animation>()

  10. C语言新文法

    程序->外部声明 | 程序 外部声明 程序->外部声明A' A'->外部声明A'|ε 外部声明->修饰符 变量名 形参 修饰符->void | int | char | ...