【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

与时俱进的轻量级 Web 服务器

  • 2007-07-31
  • 本文字数:3221 字

    阅读完需:约 11 分钟

IBM developerWorks 网站上最近发布了一则 Cameron Laird 的关于轻量级 Web 服务器的文章,里面列举了很多的轻型的 Web 服务器实现和它们的特点,Cameron 还从自己的经验出发总结了评价 Web 服务器的一些指标。这篇文章目的在于扩展我们在 Web 应用部署时的思路,让我们重新思考 Web 应用的架构和部署方案。众多的轻量级 Web 服务器其实见证了动态脚本语言实现 Web 应用的火爆,给实现 Web 应用提供了更多解决方案。

轻量 Web 服务器这个概念关注“轻巧性”,这意味着简单、易于安装、流线化、要求低和健壮。这种“轻巧”主要是相对于目前市场占有率占优的 Apache 和 IIS 而言的,轻量 Web 服务器应该更小更简单,并且它们至少要有一些性能/特性超过这两个产品(这样它们才可能分得市场份额)。Cameron 这样对比了“轻量”相比“重量”的一些优势

轻量级 Web 服务器可以适用于市场领头产品和其他“重量级”服务器无法胜任的情况。例如,整个服务器可以打包在一个文件中。这意味着开发人员可以方便地携带生产环境所需的所有工具。即使在生产服务器上运行的是 Apache,也仍然可以在宾馆的房间里,借助只需数秒钟就可以安装完毕的轻量级 Web 服务器以尝试新想法。而且,由于轻量级 Web 服务器要求很低,因此可以在那些无法负担 IIS 的主机上顺畅地运行。

我们关注一下目前的 Web 服务器占有率情况,Netcraft 在它 2007 年 7 月的 Web 服务器调查中的服务器占有率数据如下:

开发者 2007 年 6 月 百分比 2007 年 7 月 百分比 变更率 Apache 65588298 53.76 66144734 52.65 -1.11 Microsoft 38836030 31.83 41257913 32.84 1.01 Google 4872765 3.99 5465538 4.35 0.36 Sun 2273173 1.86 2245493 1.79 -0.07 lighttpd 1470930 1.21 1471779 1.17 -0.04 Zeus 480698 0.39 463449 0.37 -0.02 其中 Apache 占有率最高,它是公认的稳定、性能优良、开发者活跃的开源软件产品。而 Microsoft 则受益于 Windows 平台内置的 PWS 和 IIS 的优势及.NET 平台的市场占优率,占有第二的位置。Sun 则是由于历史问题,它的 iPlanet、SunONE 和一并计算的 Netscape-Communications 产品还能跻身前 4。后面的 lighttpd 则是轻量型 Web 容器的代表,已经超过了老牌的商业 Web 服务器 Zeus(ServerWatch 给出了一个 lighttpd 市场占有率上升的分析),主要因为一些 AJAX 项目和 Ruby on Rails(以下简称 RoR)的流行对它的广泛部署起了推波助澜的作用。

轻量 Web 服务器除了 lighttpd 还有 mongrel 也经常被提及,主要因为它们是 RoR 项目的两种主要部署方案。JavaEye 的创始人 Robbin Fan 曾经在它的 blog 中对比过 RoR 的这两种部署方案

(RoR 项目)用 fcgi 方式还是 http 方式,我个人觉得区别不大,关键还是看应用的场合,一般而言,推荐的搭配是 lighttpd+fcgi 或者 nginx+mongrel,而 Apache 因为性能差距,而不被推荐。

lighttpd+fcgi 是大量使用脚本语言编写的网站的首选部署方案,Robbin Fan 在同一篇文章中阐述了他选择 lighttp 部署 JavaEye 的理由:

JavaEye 为什么用 lighttpd+fcgi 呢?原因如下: 1) lighttpd 发展了好几年了,市场占有率也相当高,是一个经过实践检验的 server,它的文档也很全;

2) JavaEye 的 Ruby 进程和 Web Server 在一台机器上面跑,通过 unix socket 使用 fcgi 协议通讯可以避免 tcp 的网络开销,其通讯速度比使用 tcp socket 使用 http 协议通讯要快一些。

Robbin 选择 lighttpd 的主要原因是性能好于 Apache。并且 Apache 目前的 fastcgi 模块有些 bug,而对于像 RoR 这样的项目 fastcgi 是一种很好的部署方式,所以 Apache 就因此失去了这块份额。最近 InfoQ 报道过的 RubyWorks 提供的 RoR 工作栈中选择了 Haproxy+mongrel 的方式,这也是前面引用的 Robbin 所说的另外一种部署方案。mongrel 本身可以跑 Ruby 进程,同时也是一个 http 服务器,它可以兼顾动态和静态 Web 服务,配合 Haproxy 做负载均衡就可以支持大并发量的 Web 应用,所以它越来越流行了。

可见轻量级 Web 服务器由于性能/特性上的一些优势,开始逐渐瓜分 Apache、IIS 所没有照顾到的一些新兴的市场分额。那么如何去评价一个 Web 服务器呢?Cameron 给出了如下的一些重要指标: > 1. 性能:对请求作出响应的速度有多快?

  1. 可伸缩性:当很多用户同时访问它时,服务器还能继续可靠地运行吗?
  2. 安全性:服务器是否只执行它应该执行的操作。它在认证用户和加密传输方面提供了怎样的支持?它的使用是否使附近的应用程序或主机变得更易受攻击?
  3. 可靠性:服务器的失效模式和故障发生率如何?
  4. 标准遵从性:服务器遵从相关的 RFC 吗?
  5. 灵活性:是否可以对服务器进行调优,以支持较重的请求负载、需要计算的动态页面或者代价不菲的认证等等?
  6. 平台需求:该服务器可用于哪些平台?它是否有特定的硬件需求?
  7. 易管理性:服务器是否易于设置和维护?它是否与日志记录、审计、成本计算等组织标准兼容?

目前越来越多的轻型 Web 服务器开始在上面的一个或着多个方面向 Apache 和 IIS 提出了挑战,因为很难有一个 Web 服务器可以做到面面俱到。我们可以从 Cameron 提供的一份列表里面看到一些选用轻量级 Web 服务器的成功案例: > 1. YouTube 依靠 lighttpd 快速交付归档的内容,例如视频;

  1. cdServe 运行 “German Woodworking Machinery and Tools” CD;
  2. LiteSpeed 宣扬它在 twitter、www.funnyoride.com、www.airliners.com、WordPress.com、 fanfiction.com、SlashGear、www.forumactif.com 和其他著名 Web 站点上担任的角色;
  3. OpenSUSE、RubyOnRails、MarkaBoo 和其他一些著名站点依赖于 Mongrel;
  4. demon.net、bluelight.com、mtv.com、The Drudge Report、garfield.com 等站点则使用 thttpd;

上面的例子中有一些使用 RoR 的网站的例子,Cameron 指出不仅是网站可以使用常规以外的其他编程语言。“不常见”语言还可以被用来实现轻量 Web 服务器,例如 Erlang、Java、Lisp、Lua、Perl、Python 和 Tcl。用这些语言实现的轻量级 Web 服务器不一定只是在性能/特性上超过 Apache 和 IIS,它们可以提供例如容易嵌入、体积轻小这样的特性来吸引开发者的使用。Cameron 给出了使用“不常见”语言编写轻量级 Web 服务器的原因:

  1. 教学:使用轻量级 Web 服务器来制定一个重要、但是并不太大的目标。这是获得使用某种语言的经验的好方法。
  2. 虽然用 C 编写的轻量级 Web 服务器大小为 10-50KB,更高级的语言有 100KB 到数 MB 的运行时,但整个 Web 服务器的源文件可能只占几千个字节。这种 Web 服务器占用的空间很小,因此比 Apache 更易于与技术伙伴共享。
  3. 更高级的语言可以使实验更吸引人 —— 例如,添加一个新的 HTTP/1.1 特性可能只需几行源代码。这些轻量级服务器是非常方便的实验材料。
  4. 将 HTTP 服务器添加到已有的、用高级语言编写的应用程序中只需增加几行源代码。
    如前所述,不同的轻量级 Web 服务器有着不同的优点,它们或多或少独立于编程语言。所有轻量级 Web 服务器都比 Apache 更小、更易于配置。与 Apache 相比,有些轻量级 Web 服务器更快,有些则快得多。有些则强调安全性、重负载下的从容性、可扩展性或者内存占有量。在任何情况下,都可以以一种不适用于 Apache 的方式彻底地理解这些服务器。

这些理由从另外一个方面说明了轻量级 Web 服务器的优势,Cameron 还提供了一长串的轻量级 Web 服务器的列表和简介,感兴趣的读者可以认真阅读,从中寻找到您感兴趣的实现。轻量级Web 服务器不只是Apache、IIS 的竞争者,也是很好的合作者(例如我们经常可以见到关于mongrel 与Apache配合使用的文章),现在我们还可以看到很多服务器协作部署的例子,各取所长应该是最佳的选择,所以我们更应该从现在就开始拓宽眼界,寻找我们所需要的。

最后,推荐对Web 服务器感兴趣的读者可以使用Netcraft 提供的 Webserver Search 的服务器查询功能来探索你感兴趣的网站的服务器,Webserver Search 可以报告搜索的 url 对应的服务器的操作系统和 Web 服务器类型,是设计部署方案的一个很好参考。

2007-07-31 22:212990

评论

发布
暂无评论
发现更多内容

Ceph社区上游正式合入openEuler原生支持,并通过CI持续验证

openEuler

Linux 分布式 操作系统 Ceph openEuler

3步带你搞定华为云编译构建CodeArts Build “新手村任务”

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

使用 FOMEPay 充值 ChatGPT Plus 详细教程

江湖十年

ChatGPT

防范直播网站源码搭建多重问题的背后重要功能_山东布谷科技创作

山东布谷科技

软件开发 直播 源码搭建 直播源码 直播网站源码

Nautilus Chain 主网上线,Zepoch 持有者将获第三轮 POSE 空投

西柚子

Nautilus Chain 主网上线,Zepoch 持有者将获第三轮 POSE 空投

西柚子

在 Go 语言单元测试中如何解决 HTTP 网络依赖问题

江湖十年

单元测试 HTTP Go 语言

IoT 场景下 InfluxDB 与 TDengine 的性能对比测试报告出炉!点击查看

爱倒腾的程序员

数据库

不止工具:音视频开发「利器」的新机遇

阿里云视频云

云计算 音视频 视频云

用NineData三分钟搭建企业数据库平台,告别数据泄露与删库跑路

NineData

安全 敏感数据 AIGC 玖章算术 NineData

智能运维进入6.0时代,CloudwiseGPT运维大语言模型强势来袭!

云智慧AIOps社区

智能运维 大模型训练 大模型 大模型时代

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

京东科技开发者

CRM CRM系统 企业号 7 月 PK 榜 系统化整合

统一观测丨使用 Prometheus 监控 Cassandra 数据库最佳实践

阿里巴巴云原生

阿里云 云原生 Prometheus

功能更新|Leangoo领歌敏捷工具支持SAFe大规模敏捷框架

顿顿顿

敏捷开发 敏捷项目管理 scrum敏捷工具 SAFe框架 SAFe大规模敏捷

AIGC技术展望和机会 | 社区征文

AIWeker

AIGC Stable Diffusion MidJourney 年中技术盘点

上海科技大学智能生活组齐聚合合信息,“沉浸式”体验人工智能产品

合合技术团队

人工智能 人才发展 合合信息 校企合作 上海科技大学

如何评价一种框架技术的好坏?

canonical

低代码 架构设计 软件设计原则 ORM框架 开源框架

全国独家线下面授 | 上海大规模敏捷LeSS认证9月7-9日

ShineScrum捷行

less 大规模敏捷 大规模敏捷LeSS CLP

《Spring6核心源码解析》已完结,涵盖IOC容器、AOP切面、AOT预编译、SpringMVC,面试杠杠的!

冰河

Java spring 程序员 架构师 源码解析

三大升级!龙蜥正式推出首款全面拥抱智算的国产操作系统 Anolis OS 23

OpenAnolis小助手

开源 操作系统 龙蜥社区 版本发布 Anolis23

搜狗输入法双击输入框崩溃问题 | 京东云技术团队

京东科技开发者

搜索引擎 搜索 输入法 企业号 7 月 PK 榜

Excel 高阶使用(含 ChatGPT)与数据可视化

Data 探险实验室

数据分析 Excel 数据可视化 可视化工具 ChatGPT

技术速览|Meta Llama 2 下一代开源大型语言模型

SEAL安全

meta openai backstage mata llama

Dxitco德西科跟单社区首创CHATGPT人工+AI双重大数据分析机制

科技热闻

火山引擎DataLeap如何解决SLA治理难题(三): 平台架构与未来展望

字节跳动数据平台

大数据 数据中台 数据治理 数据安全 企业号 7 月 PK 榜

新一轮智能制造相关产业政策猜想

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

《让花掉的钱自己流回来》

石云升

读书笔记 财富管理

关于云平台虚拟机核心组件 libvirt 热迁移流程及关键参数介绍 | 龙蜥技术

OpenAnolis小助手

开源 虚拟机 龙蜥大讲堂 浪潮数据 热迁移

Spring 中一个少见的引介增强 IntroductionAdvisor

江南一点雨

Java spring

SAM&Stable-Diffusion集成进化!分割、生成一切!AI绘画新玩法

飞桨PaddlePaddle

人工智能 百度 paddle AI 飞桨

详解TCP网络协议栈的工作原理

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 7 月 PK 榜

与时俱进的轻量级Web服务器_Java_田乐_InfoQ精选文章