ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Resin服务器:高性能Java应用环境解析

Resin服务器:高性能Java应用环境解析 Resin服务器, 是一款由公司创作出的具备高性能特性质, 且有着轻量级特点的Java应用环境服务器, 它同时还拥有着Web服务器、容器以及JSP引擎, 还有与之呈早期版本兼容的运行环境等多重角色, 并且在中小型Java Web相关项目的部署, 以及生产环境领域中有着广泛的应用情况。论技术定位而言, Resin跟那些同属开源Java Web容器范围内的事物一样, 全都依照Sun所发布的规范以及JSP规范, 对标准的WAR包部署、会话管理、过滤器链、监听器机制以及上下文初始化等核心Web容器功能予以支持。不过, Resin于架构设计当中, 更着重突出性能导向以及低开销运行,它的内核采用了以高度优化方式编写的C语言的HTTP服务器模块, 此模块是Resin自身内置的, 并且还结合了由Java实现的/JSP运行时, 进而形成了“混合式”执行模型, 这样的情况使得它在静态资源处理方面、连接复用方面、线程调度方面以及请求响应吞吐方面, 明显要比纯Java实现的更加具有优势, 特别是在Resin 3.x的那个时代。用户反馈里提及“编译比快”, 实际上需理解成, JSP页面的首次编译也就是JSP到什么的编译, 以及热加载速度更快, Resin运用增量式JSP编译策略, 仅仅重新编译被改动的JSP文件及其依赖片段, 并且其JSP编译器是建立在基于Antlr语法分析与自研字节码生成器之上的, 不需要依赖外部JDK javac, 而是凭借内置编译器直接生成高效字节码, 规避了像中那样常常出现的javac进程启动开销与扫描延迟另外, Resin 3.0.24版本针对类加载器体系实施了深度定制, 采用分层委派加并行加载机制, 支持细粒度的级类隔离与快速重载, 致使在开发阶段频繁修改Java类或JSP后, 服务重启耗时能够控制在毫秒级, 极大地提升了迭代效率。Resin 3.0.24是该系列里重要的稳定版本, 它发布在Java EE 5规范刚开始普及的时候, 它能完整支持2.4 , 支持JSP 2.0 , 支持JSTL 1.1 , 还支持部分Java EE 5特性比如注解驱动的配置, 虽然它没有完全实现像EJB容器这样的重量级组件, 不过它通过和等主流框架无缝集成, 就成为了当时企业级轻量架构的首选之一。它的配置体系是以 XML 作为主要方式, 主要的配置文件是 resin.conf 以及 web.xml, 还有扩展的 resin - web.xml, 它支持虚拟主机, 支持负载均衡前端代理, 支持集群复制, 这种集群复制是基于内存映射或者数据库持久化的, 支持 SSL/TLS 加密通信, 支持 URL 重写, 支持缓存策略, 缓存策略包含页面级以及对象级的, 还支持细粒度的安全约束, 这种安全约束是基于角色的访问控制 RBAC 的。特别需要着重指出的是, Resin 3.x引进了“”项目的初步形态, 也就是PHP脚本引擎嵌入的能力, 尽管在3.0.24这个版本里还没有发展到成熟的状态, 不过已经展现出了它在跨语言服务融合方面设计的前瞻性。在运维方面, Resin备有命令行数具管理工具resin.sh/start/resin.sh/stop, 还有JMX监控接口, 以及实时工况页/resin-admin, 再有丰富的日志区分等级.log、.log、.log、jvm.log与诊断本领, 利于确定GC瓶颈、线程死锁、类载体冲突等典型Java Web问题。相比于那种需要依靠第三方组件, 像是APR、NIO2来提高性能的情况而言, Resin把高性能网络I/O, 就是基于epoll的异步事件驱动, 还有零拷贝文件传输、内存池化对象复用等这些底层优化, 深度融合到内核之中, 进而使得它在相同硬件条件的时候, 常常展现出更低的CPU占用率以及更高的并发连接承载力, 实际测试能够达到8000 HTTP Keep-Alive并发连接这样的情况。虽然因Jetty 9以及Boot内嵌容器的兴起, Resin在新项目里的采用比例有所降低, 然而它的设计理念, 像编译的即时性、配置的简洁性、启动时的秒级响应、资源占用的极简性, 依旧对现代Java Web容器的发展轨迹有着深刻影响, 是了解Java Web容器演进历程不能绕开的经典范例。
返回列表