1、介绍Grizzly
Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各种问题。
2、什么是Grizzly?
使用JAVA NIO作为基础,并隐藏其编程的复杂性。容易使用的高性能的API。带来非阻塞socketd到协议处理层。利用高性能的缓冲和缓冲管理使用高性能的线程池
3、Grizzly与Mina的性能比较
比较结果Grizzly比Mina更好。
4、Grizzly的HTTP性能
支持的并发客户端:平均响应时间:8S 90%时间在3S内出错率在0.1%以下。
5、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)
Grizzly1.5于2006年开始开发。
Grizzly1.5的目标:
删除所有的HTTP或者GlassFish的依赖
所有1.0的应用仍能在1.5上工作
支持Grizzly1.0时候的性能优化。
不依赖于任何的第三方软件。
2007年2月6日Grizzly开源了。
6、控制器
Controller是主要的进入点,Controller由下面部分构成:
SelectorHandler
SelectionKeyHandler
ProtocolChainInstanceHandler
ProtocolChain
Pipeline 这些组件在Grizzly框架中都是可以配置的。
7、SelectorHandler
SelectorHandler处理所有的nio。channel。Selector操作。可以处理1个或多个的Selector。
8、SelectionKeyHandler
用来处理SelectionKey的生命周期。例如取消,注册,或者关闭SelectionKeys由SelectionKeyHandler来处理。
9、InstanceHandler
InstanceHandler 用来创建或者缓冲几个ProtocolChain。 InstanceHandler决定有状态或者无状态的协议链是否需要被创建。注意:InstanceHandler重命名为 ProtocolChainInstanceHandler。
10、Pipeline
一个接口用来封装各种线程池。 Grizzly1.5包含了几个的管道的实现。最佳性能实现的管道是默认配置的管道。
11、ProtocolChain
协议链实现责任链模式。协议链由若干的协议过滤器组合成。注意:协议连的所有者必须调用postExecute()方法。
12、ProtocolFilter
协议过滤器由两个方法构成:execute和postExecute。
Context包含了动态的计算状态。
协议过滤器封装了一个将要工作的单元。
目的是检查或修改状态的改变。 独立的协议链可以被集成到协议链。 当使用默认的协议链的时候,协议过滤器应该设计成线程安全的。
通常,这表示协议过滤器应该不包含维护状态信息。 维护状态信息应该由ProtocolContext来维护,并通过method和postExecute来传递。
14、谁在使用Grizzly?
Jetty
Alaska
Tango
Jruby on Grizzly
php on Grizzly
Ning
Comet、Cometd
15、谁在寻找或投资Grizzly?
Sun Java System Message Queue
Sun JDK ORB
GlassFish ORB
Derby、JavaDB 等。
16、类的关系图
Tags: Java 框架
分享到:
相关推荐
这些源代码文件可供开发者深入学习Grizzly的内部实现,包括如何处理HTTP请求,如何利用NIO进行高效的网络通信,以及如何支持WebSocket协议。通过阅读和分析源代码,开发者可以更好地理解和定制Grizzly的功能,以适应...
- 这些API极大地降低了开发人员的学习成本,并提高了程序的整体性能。 3. **HTTP扩展:** - Grizzly支持异步请求处理机制,即可以处理非阻塞式的HTTP请求。 - 实现了Comet技术,这是一种实现实时数据推送的技术...
2014年10月24日最新Grizzly 2.3.17 API文档CHM版
通过阅读和学习这些源代码,我们可以掌握如何将Riak PB集成到Grizzly WebSockets或其他Java应用中,实现自定义的通信协议,从而提升系统的整体性能。 总的来说,Grizzly WebSockets 2.3.4和Riak PB都是开源项目,...
在本文中,我们将详细介绍如何在Ubuntu 13.04上安装Grizzly版本的OpenStack。OpenStack是一个开源云计算平台,用于构建公共云和私有云。Grizzly是OpenStack的一个重要版本,提供了多种服务,如计算、存储和网络管理...
综上所述,"grizzly-websockets-chat-2.3.zip" 和 "osgi-kernel.zip" 提供了关于使用Grizzly实现WebSocket聊天应用以及基于OSGi的开源运行时环境的学习材料。开发者可以通过研究这些代码,深入了解网络编程、模块化...
开源项目意味着Grizzly HTTP Server Monitoring 2.3.9 和 Play2框架的Play Velocity插件的源代码都是公开的,可供任何人查看、学习、修改和分发。这种开放源码的方式促进了社区协作,鼓励开发者贡献代码,修复错误,...
对于Grizzly HTTP Samples,这可能意味着开发者可以学习和参考其内部实现,以理解如何有效利用Grizzly进行网络编程。对于Lift-jQuery-Module,这意味着开发者可以定制模块以满足特定的项目需求,或者贡献代码回社区...
通过对 jmxutils.zip 中的源代码进行学习,我们可以更深入地理解 JMX 的工作原理,同时也能更好地利用 JmxUtils 在实际项目中实现高效、精细的监控。在开源项目的实践中,JmxUtils 成为了提升系统管理能力不可或缺的...
Dubbo的核心jar包,grizzly-core-2.1.4.jar 下载,源码版本为2.5.4开发版
通过分析这些代码,开发者可以学习如何将Atmosphere集成到Grizzly中,创建实时Web应用。同时,这个版本可能修复了一些已知问题,提升了整体的稳定性和兼容性。 总的来说,`grizzly-http-webserver-1.9.59.zip`和...
此外,由于其轻量级特性,Grizzly在性能方面表现出色,适合高并发的Web应用。 接下来,我们转向“portlettester”项目。PortletTester是一个专为portlet开发人员设计的单元测试框架,它遵循JSR168(portlet 1.0)和...
Grizzly 是一个开源的网络应用框架,由 Oracle 公司开发,主要用于构建高性能、轻量级的网络服务器和客户端。AJP(Apache JServ Protocol)是 Apache 服务器与应用服务器之间通信的一种协议,常用于负载均衡和反向...
【标题】"Grizzly HTTP Server 2.2.21" Grizzly HTTP Server 是一个开源的、高性能的网络应用框架,由Java开发,主要用于构建基于...通过Groovy的简洁语法和Grizzly的高性能特性,可以高效地开发和维护这类系统。
学习和掌握 Grizzly,不仅能提升我们的网络编程能力,还能帮助我们构建出高效、可扩展的服务。在实际项目中,可以结合 Grizzly 的特性,例如与 Jersey(JAX-RS 实现)结合,构建 RESTful API 服务,或者利用 ...
Dubbo的核心jar包, grizzly-framework-2.1.4.jar下载,源码版本为2.5.4开发版
java运行依赖jar包
通过研究和使用Grizzly,Go开发者可以学习到如何在没有泛型的情况下设计和实现高效、灵活的集合操作,这将对他们的Go编程技能有显著提升。同时,参与开源项目也能让他们了解和实践软件开发的最佳实践,提升协作和...
"Grizzly: 机器人与台式机通用的轻量级软件包" Grizzly是一款专为机器人和台式机设计的轻量级软件包,旨在提供高效、灵活且跨平台的解决方案。它允许开发者在各种环境下进行机器人应用的开发,无论是在机器人硬件上...