在Wintel的黄金时代,微软和Intel彼此成为了对方产品的最强有力的推销者。每当安迪格鲁夫把CPU主频提高一个MHz,比尔盖茨就会想办法发明出新的应用特性去吃掉这一个MHz。这样的绝佳组合持续了很多年,然而最终还是硬件占了上峰,当CPU主频上升到1.5GHz以后,软件似乎想不出什么新的招数来唤起人们对更高计算能力的渴望了。然而Intel和AMD并没有就此住手,64位体系结构、双核、四核乃至更多核CPU被不断发明出来,硬件速度飞奔向前,软件显得手足无措。怎么办?难道让用户的计算资源和投资闲置?Web 2.0给出了一个回答。Web 2.0互联网应用在技术上有两个重大特点,一是超大规模用户量带来的超大规模数据,二是基于超大规模数据和新的应用模型的超大规模计算。两者都需要强大的计算资源支撑。
与Web 1.0不同的是,Web 2.0不再认为键盘后面的可以是狗,不再把互联网当成是一张张冷冰冰的网页构成的死气沉沉的文档系统各,而把数据后面的人发掘出来,把所有的用户都视为大写的、有感情、有个性、受尊重的人。Web 2.0通过多种手段收集用户的信息、偏好和使用习惯,并且在这些数据之上实施大规模的协同计算,以获得宝贵的统计性知识。这些知识是企业得以傲然独立的根本,是企业能够进一步发展的基础和动力,是竞争对手夺不走、打不掉的核心知识财富。因此,Web 2.0的领袖们说,“数据是新的Intel Inside”,数据就是企业力量。当你在任何地方看到Google AdSense提供的赞助商链接时,你就能体会到数据的力量。
然而提供这样规模和质量的数据,需要巨大的计算能力。任何一个大型规模的网站的用户量都远远超过世界上最大企业的员工数量,而Web 2.0要求我们从每一个用户那里充分获得各种必要的信息,这就带来了海量的数据,而从这些海量的数据中快速获得有用的统计性信息和知识,对于计算来说更是规模惊人的任务。
Google的成功实践表明,采用大量普通PC组合而成的超级计算机集群,是应对Web 2.0海量计算挑战的最具成本优势的解决方案。而每一个计算单元都对于充分发挥计算能力提出更高的要求,多核的每一点计算能量都必须被榨出来加以充分利用。于是,我们看到,在Web 2.0核心服务的开发这者群里,对于如何充分利用多核计算威力的话题最为关注,从Win32线程到IO Completion Port机制,从POSIX线程到epoll/kqueue等并发编程接口,从Java 5的concurrency库到Intel的VTune工具,甚至于Google的MapReduce算法和Erlang的革命性的并发编程模型,都是热议的话题。毫无疑问,Web 2.0应用已经成为推动计算能力进一步发展的最重要的源动力之一。
2007软件开发2.0大会 http://www.sd2china.cn/default.html