开源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

 

 

你可能感兴趣的:(开源HTTP引擎Grizzly 中的 线程池 实现技术细节)