高性能服务器架构(必会)
引言 本文档的目的是为了同大家分享多年来我在开发一种特定类型的应用时形成的一些观点,而“服务器”只是对这类应用程序的一个不是那么恰如其分的称谓。更准确的说,我将描述的是一大类的程序,这类程序的设计使得它们能够在每秒钟内处理数量十分巨大的离散消息或请求。网络服务器是最为常见的同此定义吻合的软件,但是,并非所有同此定义吻合的程序绝对可以称作是服务器。然而,“高性能请求处理程序”这种称谓又很难让人接受,所以,为了行文简单起见,我就用“服务器”这个词了事了。 尽管在单个程序中进行多任务处理现在早已司空见惯了,但我将不会对“适度并行”的应用程序进行讨论。就在现在,你阅读本文档所用的浏览器可能正在以并行的方式做着一些事情,但是如此低水平的并行真是不会带来任何值得关注的挑战。真正值得关注的挑战出现在处理请求的架构本身是总体性能的限制性因素的时候,此时对架构进行改善就能够真正地提高性能。运行在主频为几G赫兹的CPU和上G内存的环境中,通过DSL线路同时进行着6个下载任务的浏览器,往往就不属于这种情况。这里的重点并不在于象是用吸管喝着饮料似的应用程序,而是在于象是通过消防拴来喝水的应用程序,这类程序处于马上就要突破硬件能力的边缘地带,你对这类程序的设计起着至关重要的作用。 毫无疑问有些人会反对我的意见和建议,或者认为他们有更好的办法。这非常好。这里我可不是想要发出什么上帝之声