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

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

[什么是Grizzly]

Grizzly

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

Grizzly


GlassFish目中于2004生。后来Grizzly 1.0Grizzly1.0Sun Java System Application Server8.18.2和所有的GlassFish版本。用来代替本地的Sun WebServer运行
始目的是建构一个HTTP Web器,用来代替TomcatCoyote接器和Sun WebServ er6.1 Grizzly1.02006年的得相当流行。多数协议实现都基于它。但是Grizzly1.0HTTP协议的特定实现逻辑包含在中,主 要SelectorThread包含若干的HTTP理,如文件cache控等。
了使用框架,需要SelectorThread,例如JettySelectorThreadSSLSelectorThread 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例如、「PipelineKeepAlivePipelineThreadPoolExecutorPipelineLinkedListPipeline之类

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启动的时候GrizzlySelectorThread同时被启动开始接受Request

Class名:SelectorThread

函数名:initEndpoint

説明: SelectorThread启动函数

Class名:SelectorThread

函数名:initPipeline

説明: 初期化Pipeline

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值