开源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
分享到:
相关推荐
Grizzly HTTP Server Monitoring 2.3.9 是一个开源项目,它提供了对Grizzly HTTP服务器的监控功能。Grizzly 是一个高性能、轻量级的Java网络应用框架,主要用于构建HTTP服务器、Servlet容器和其他网络服务。监控组件...
标题中的“grizzly”指的是Grizzly,一个由Sun Microsystems(现为Oracle)开发的开源网络应用框架,主要用于构建高性能、可扩展的网络服务器。Grizzly是Java平台上的一个组件,它提供了一组灵活且强大的API,可以...
Grizzly项目就是为了解决这个问题而诞生的,它通过一套精心设计的接口和类型定义,提供了泛型般的集合操作体验,使得开发者可以在没有内置泛型支持的Go中实现类似Java或C#中的泛型功能。 在Grizzly项目中,你可以...
《Grizzly HTTP Web服务器在Atmosphere开源项目中的应用与实践》 Atmosphere是一个流行的开源项目,专注于实现实时Web应用程序,它充分利用了HTTP、WebSocket等协议的优势,为开发者提供了一个灵活且高效的异步通信...
【标题】"Grizzly HTTP Samples 2.3.13" 是一个开源项目,它包含了一系列使用Grizzly HTTP服务器框架的示例应用。Grizzly是Java的一个高性能、轻量级的网络应用框架,由Oracle公司开发,常用于构建HTTP服务器、...
- Grizzly支持Comet技术,能够实现实时数据推送。 - 这对于需要频繁更新客户端数据的应用来说非常有用,如股票交易系统、在线游戏等。 3. **高性能服务端开发:** - 除了Web服务器之外,Grizzly还适用于其他高...
《Grizzly HTTP Servlet Extras与PortletTester:开源项目的单元测试框架》 在IT行业中,单元测试作为软件开发的重要环节,...在实际开发中,我们可以根据项目需求选择合适的技术栈,充分利用这些开源项目带来的优势。
通过对 jmxutils.zip 中的源代码进行学习,我们可以更深入地理解 JMX 的工作原理,同时也能更好地利用 JmxUtils 在实际项目中实现高效、精细的监控。在开源项目的实践中,JmxUtils 成为了提升系统管理能力不可或缺的...
开源项目意味着Grizzly HTTP Server和MessageServiceClient的源代码都是公开的,可以在社区中自由分发、修改和使用。这种开放性鼓励了开发者之间的协作,促进了项目的持续改进和创新。用户可以查看源代码,了解其...
综上所述,"grizzly-websockets-chat-2.3.zip" 和 "osgi-kernel.zip" 提供了关于使用Grizzly实现WebSocket聊天应用以及基于OSGi的开源运行时环境的学习材料。开发者可以通过研究这些代码,深入了解网络编程、模块化...
Grizzly WebSockets 模块使得开发者能够方便地在Web应用中实现WebSocket协议,这是一种双向通信协议,允许客户端和服务器进行全双工通信,极大地提升了实时数据传输的效率。版本2.3.4在稳定性和性能上进行了优化,为...
5. **开源文化与许可证**:开源项目促进了技术的共享和创新,允许开发者基于现有项目进行扩展和改进。Grizzly 和 apt-repo 插件遵循的开源许可证可能包括 GPL、Apache License、MIT 等,具体需查看项目文档以了解...
【标题】"在Glassfish v2ur1 中测试grizzly comet chat demo"涉及的主要知识点是Grizzly框架、Comet技术以及Glassfish应用服务器的使用。Grizzly是一个开源的网络应用框架,由Java开发,用于构建高性能、可扩展的...
在这个版本中,2.2.10,Grizzly HTTP JAX-WS Samples提供了多个示例,帮助开发者理解如何将JAX-WS与Grizzly服务器集成,包括服务的发布、调用,以及处理各种Web服务交互的细节。这些示例对于初学者来说非常有用,...
【标题】"grizzly-http-ajp-1.9.42.zip" 是一个与开源项目相关的压缩包,其中包含了Grizzly HTTP服务器的AJP(Apache JServ Protocol)模块的一个版本,具体为1.9.42。Grizzly是Oracle公司开发的一个轻量级、高性能...
在本文中,我们将详细介绍如何在Ubuntu 13.04上安装Grizzly版本的OpenStack。OpenStack是一个开源云计算平台,用于构建公共云和私有云。Grizzly是OpenStack的一个重要版本,提供了多种服务,如计算、存储和网络管理...
标题和描述均提到了“开源技术讲座”,以及Sun公司济南地区的开源大使田贯升,这表明讲座的主题聚焦于开源技术和Sun公司的相关产品,尤其是JavaEE5及其应用服务器GlassFish的介绍。以下是对讲座中提到的关键知识点的...