就笔者看来,对于需要支持百万级用户并发访问的WEB 服务而言,确实没有必要采用多台服务器,单单一台普通的PC服务器就可以胜任! 个人认为当前许多WEB业务应用都是对硬件投资的极大浪费!为什么这样说呢?第一,当前PC服务器多数带多个独立的CPU,而且每个CPU还带多个硬核,而许多WEB应用服务器、数据库服务器软件根本就没有对多核处理器进行支持和优化,基本上是一个CPU在工作,其它都在休息,没能充分发挥多CPU的能力;第二,虽然服务器安装有高性能网卡,但是所采用的操作系统没有对网络吞吐进行优化,无法支持巨大的网络IO请求,没能发挥出高性能网卡的优势;第三、服务器一般都支持4G或以上更大的内存,而且在x86平台下内存条的价格就像大白菜,非常低廉。即使如此廉价丰富的内存资源也没有得到好好利用,多数应用根本没有考虑基于内存的高速缓存方案,比如业务应用中最常见的数据库访问操作,通常都是直接连接到数据库进行SQL操作,其处理性能上不去是显而易见的了;第四,应用程序本身不够优化。不管存在何种原因,公认的一点是一个不优化的业务应用对系统整体性能表现有很大影响。高深的优化技术我们不谈,就举两个常见的优化处理来说明,例子一,对于系统中保证唯一而且又不经常变化的用户ID,是否可以考虑不采用链表而采用MAP表存储呢?后者比前者查询快多了!;例子二,对于判断一个表中是否存在某条记录,通常使用这样的SQL语句:“select * from xx_table where xx_id=xx”, 试问是否可以改成“select 1 from xx_table where xx_id=xx”?一字之差,在高频度数据查询过程中,后面的语句比前面的快很多呀。第五,一般服务器群前面都有一个或多个防火墙设备,用来进行包过滤和端口映射。如果服务器的自身安全性很强的话,这些防火墙设备也是可以被省略的。