`
WildFly
  • 浏览: 63043 次
社区版块
存档分类
最新评论

Undertow服务器基础分析 - 概述

阅读更多

Undertow是JBoss开源组织旗下一款Web服务器的名称,随着Wildfly(原JBossAS)版本8,一并发布出来,是内置缺省的Web容器。我们知道JBoss应用服务器之前一直使用Tomcat作为Web容器,而Web容器可以说是应用服务器中最重要的模块之一,所以这个改变引起开发者的广泛关注。

为什么要重新设计一款新的Web服务器呢?官网FAQ给出一个说明:
“Before we created Undertow we needed multiple web server technologies to meet our needs. Undertow was designed to be flexible and efficient enough to meet every use case we had and every use case we could think of. Undertow is embeddable and easy to use, but is also well suited for application servers. It has great performance, but also rich enterprise Java capabilities. It has efficient non-blocking reactive APIs, but also more familiar traditional blocking APIs. It has new innovative APIs, but also standard APIs. It can run large dynamic applications, but is also lightweight enough to replace a native web server.”

归纳来说就是三点:
1. 更好的满足JBoss应用服务器的集成需要。Tomcat最初设计于10年前,体系结构没有办法进行灵活的修改。在和JBoss应用服务器集成时,需要写大量的组合代码使得Tomcat和JBossAS协同工作。
2. 嵌入式需求。不论是JBoss应用服务器本身,还是目前微服务(MicroService)的设计倾向,都希望能够web容器足够小而精悍,可以嵌入使用,而Tomcat很难满足这个需要。
3. 支持Websocket协议需求和NIO,异步化思路等的促进。异步通信框架在并发连接数,性能的优异表现促使开发人员想重新按照新的思路来设计一款Web服务器。

Undertow的主力开发人员是Stuart Douglas,也是JBossAS的核心开发者,另外David M. Lloyd(JBossAS架构师)和Jason Greene(JBossAS技术领导人)也参与了设计和开发。

在Undertow刚发布beta版时,参加了由Techempower设计的著名框架集合性能测试竞赛,在纯文本EC2服务上一举拿下第一,而且比第二名netty多出近一倍!(http://www.techempower.com/benchmarks/#section=data-r6&hw=ec2&test=plaintext)这个不俗的成绩让人侧目。最新的测试结果显示,undertow依然名列前茅。

新出炉的Web服务器能获得这么好的成绩,和它采用的异步事件机制的内核架构是分不开的。我们知道目前有一款明星Java项目Netty,在互联网应用中广泛采用,比如Finagle, Akka, Vertx, Dubbo等。Undertow同样使用了异步IO,但不是Netty,而是一款同样源自JBoss的项目XNIO。Netty和XNIO有渊源,Netty的设计师Trustin Lee和XNIO的设计师David M. Lloyd原来都是JBossRemoting的项目成员。

我们简单说一下JBossRemoting,这个IO框架一直是JBoss应用服务器自带的通信框架,从3.X版本到今天的Wildfly8,它是JBoss服务器外部通信的基础组件,包括EJB,早先的JBossMessaging等。今天它依然是同步通信框架的设计典范和良好实现。

NIO是从Java1.4引入的,带来了新的异步设计方式,到Java7引入NIO2。Netty针对早期NIO的一些不足和缺陷,进行了极大的改进,包括性能和易用性,从而一举被广大互联网公司青睐。而XNIO一直不温不火,只在JBoss内部使用,直到undertow出现才被更多人知道。

要熟悉undertow,必须得了解其强依赖的XNIO和背后的NIO思想。所以这个文章分为三个部分,除了这一篇概述之外,还有专门介绍XNIO的一篇,以及Undertow自身一篇内容。

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics