Writing scalable server applications in the Java™ programming language has always been difficult. Before the advent of the Java New I/O API (NIO), thread management issues made it impossible for a server to scale to thousands of users. The Grizzly NIO framework has been designed to help developers to take advantage of the Java™ NIO API. Grizzly’s goal is to help developers to build scalable and robust servers using NIO as well as offering extended framework components: Web Framework (HTTP/S), WebSocket, Comet, and more!
Core Framework
Memory Management
I/O Strategies
Transports and Connections
FilterChain and Filters
Core Configuration
Port Unification
Monitoring
Best Practices
Quick Start
Samples
HTTP Components
Core HTTP Framework
HTTP Server Framework
HTTP Server Framework Extras
Comet
JAXWS
WebSockets
AJP
MAIN
核心框架
内存管理:Grizzly2.0引入了以可以在运行时(runtime)提高内存管理的子系统。该子系统包括三个主要构件:
缓冲区(Buffers)
ThreadLocal的内存池(ThreadLocal memory pools)
MemoryManager作为一个实用缓冲区和内存池工厂
I/O策略:通常我们使用一下两种方处理特定的NIO事件:在接收到的线程直接处理(Same-thread)或者交给工作线程处理(Worker-thread)。
Worker-thread IOStrategy
Same-thread IOStrategy
动态IOStrategy
Leader-follower IOStrategy
传输和连接:Transport和Connection是Grizzly2.3的核心网络API。
Transport定义了网络传输方式如TCP、UDP,包括相关资源(线程池、内存管理器等)和嵌套连接的缺省配置。
Connection在Grizzly2.3代表一个TCP或UDP的单一网络连接(很像socket)。
Transport和Connection是一对多的关系。
过滤器链和过滤器:过滤器链顾名思义就是多个过滤器组成链。每个过滤器表示一个要执行的处理单元,用于检查并(或)修改由FilterChainContext表示的一个事务的状态。
核心配置:核心框架配置的要点是Transport实例及其相关线程池。
端口统一:有时由于某些管理限制我们只能使用一个端口来发布多个服务,根据请求重定向到相应服务。Grizzly中的“端口统一”就是这个问题的解决方案。
监控:Grizzly提供了监控框架内部关键组件的功能,且允许通过自定义扩展监控组件。
HTTP组件
核心HTTP框架:Grizzly2.3 HTTP框架提供了服务器和客户端的编解码HTTP请求响应数据的功能。除了编解码器本身,框架还包括基本HTTP原语和简化协议相关工作的工具类。
HTTP服务器框架
简单的服务器API使Grizzly可以轻松嵌入应用程序。
类似Servlet规范的抽象:HttpHandler (Servlet), Request (HttpServletRequest), Response (HttpServletResponse)。
通过响应挂起/恢复机制提供处理长时间运行的HTTP事务的能力。
支持非阻塞IO流。
静态内容的使用文件缓存。
HTTP服务器框架扩展
Comet
JAXWS:从2.1.2版本开始Grizzly通过HTTP服务器框架支持JAX-WS web服务。
WebSockets:Grizzly实现了RFC 6455的要求,同时也支持此协议的旧版本。这对于没有实现最终草案规范的客户端很有用。
AJP:从2.1版本开始Grizzly开始支持AJP1.3。
SPDY:从2.3版本开始Grizzly支持SPDY/3。SPDY的目标是降低网页加载时间。