开源HTTP引擎Grizzly 中的 线程池 实现技术细节

系统 1643 0

开源 HTTP 引擎 Grizzly 中的 线程池 实现技术细节

[ 什么是 Grizzly]

Grizzly

Grizzly
是一 种应 用程序框架, 专门 解决 写成千上万 访问 生的各 种问题 。使用 JAVA NIO ,并 藏其 程的 复杂 性。容易使用的高性能的 API 来非阻塞 socketd 协议处 。利用高性能的 冲和 冲管理使用高性能的 线 程池。

Grizzly


GlassFish 目中于 2004 生。后来 Grizzly 1.0 Grizzly1.0 Sun Java System Application Server8.1 8.2 和所有的 GlassFish 版本。用来代替本地的 Sun WebServer 运行
始目的是建构一个 HTTP Web 器,用来代替 Tomcat Coyote 接器和 Sun WebServ er6.1 Grizzly1.0 2006 年的 得相当流行。多数 协议实现 都基于它。但是 Grizzly1.0 HTTP 协议 的特定 实现逻辑 包含在 中,主 要 SelectorThread 包含若干的 HTTP 理,如文件 cache 控等。
了使用框架,需要 SelectorThread ,例如 JettySelectorThread SSLSelectorThread Grizzly1.0 混合了 展和 实现 然如此,但 Grizzly1.0 仍然是很好的 实现 ,有下面几个 协议 利用了 Grizzly1.0
JRuby On Grizzly
Alaska
HTTP BC
GlassFishV3
的微内核
Phobos GlassFish
SOAP
Comet
Cometd
AsyncWeb
GlassFishV2
Sun Web2.0 Developer pack(REST Http Server)


Grizzly
相关资源

https://grizzly.dev.java.net/

[ Grizzly 的运行机制 ]

以上图片的简要说明

① Pipeline相关

com.sun.enterprise.web.connector.grizzly 里面 大量「 Pipeline 之类的 class 例如 、「 Pipeline KeepAlivePipeline ThreadPoolExecutorPipeline LinkedListPipeline 之类

Pipeline 的含义是 ThreadPoolWrapper 」、 也就是说 ThreadPool 中配置和指示的控制类

Pipeline 里面 有着预先被分配好的 thread pool task list

Web 上过来的 request 请求到达服务器的时候, 特定 Pipeline 上预先分配好的 thread pool 中提取 thread 以供使用

thread pool 中提供 thread 的算法,下次描述

  ②  SelectorThread 相关

com.sun.enterprise.web.connector.grizzly 里面 有个 SelectorThread 的类

这个类是 Grizzly 入口 所有的 HTTP 申请都会被发送到这个类里面

③  Task 相关

   「 AcceptTask 」、「 ProcessTask 」、「 ReadTask 之类的类型是与此相关的

主要的功能是从 Requset 中分析得到有用的数据

主要的算法如下

◎  ContentLengthAlgorithm

◎  SeekHeaderAlgorithm

◎  StateMachineAlgorithm

◎  NoParsingAlgorithm

[ 那么 让我们一起来研究研究 Thread Pool 的实现细节吧 ]

GlassFish 启动的时候 Grizzly SelectorThread 同时被启动 开始接受 Request

Class 名: SelectorThread

函数名: initEndpoint

説明:  SelectorThread 启动函数

Class 名: SelectorThread

函数名: initPipeline

説明: 初期化 Pipeline

因为不能填图 所以就不发代码了 ~~~~

現在的 Grizzly 版本里面、 Thread Pool 的算法只有 LinkedListPipeline ThreadPoolExecutorPipeline

开源HTTP引擎Grizzly 中的 线程池 实现技术细节


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论