看了Programmer的知名网站的技术发展流程,感慨万千,互联网的发展虽然经历了起起伏伏,也才不过十几年的时间,而互联网生可多少又死了多少,我们无法得知了,经过这十几年的发展,存活下来的网站自然有他们

的方式,有新兴的,有老牌的,我们在这个发展的洪流中,真的太过于稚嫩和单薄了。

Google

诞生于1997年,1999年增加了一个Cache Cluster,2000年Google开始自行设计DataCenter,2001年Google对Index进行的修改,所有的Index放到了内存中.

2003年发表了 Google Cluster Architecture 其Cluster结构组成为硬件LB+Index Cluster+Doc Cluster+大量的廉价服务器。

2004年,Google对Index的格式进行了修改,通过MapReduce+大量廉价的服务器既可以实现小型机,中型机或者大型机才能完成的任务。

2006年,Google发表了关于BigTable的论文,对于海量数据的分析起到很大的帮助。在一些场景中,Google同样使用Mysql作为数据存储。,同样Google对Mysql进行了很多修改。

2007年,Google将build索引的时间缩短到几分钟。Google的一次搜索大概需要调用内部50个以上的Service,Service主要用C++或者java来编写。

2009年,Google发表《How Google uses Linux》,之后研发了Colossus,Spanner,除了海量数据相关技术上的革新外,Google也不断对业界的传统进行创新。

在Google的发展过程中,技术主要围绕在 可伸缩性,性能,成本,和可用性四个方面。

Facebook

采用LAMP构建,我想很多人都知道,LAMP非常流行,我们不做过多的阐述了,我们知道facebook的发展非常迅速,LAMP根本不能胜任了,于是脸谱增加了Memcached,只有又增加了Service层,将News Feed、Search等功能作为Service

提供给前端PHP,针对不同的Service采用不同的语言,例如,C++,Java,Erlang。

而后Facebook发现PHP的消耗问题,研发了HipHop,可以自动的将PHP转换成C++代码,相同的配置支撑的请求是之前的6倍。

2009年研发了BigPipe。对于存储MySQL中的数据,蚕蛹垂直拆分库和水平拆分表的方式来支撑不断增长的数据量。

2011年,尝试从MySQL迁移到HBase。

在Facebook的发展中,主要围绕在可伸缩性、性能、成本和可用性四个方面。

Twitter

2006年诞生,采用Ruby On Rails + MySQL构建的,

2007年增加了Memcached作为Cache层。

2008年Twitter决定逐步往Java迁移,选择了Scala作为主力开发语言,理由是:难以向一层子的Ruby程序员推销Java :)

eBay

1995年诞生,采用CGI,数据库是GDBM,只能支撑5万件商品。

1997年,eBay将OS从FreeBSD迁移到Win NT,将数据库改为Oracle。

1999年,eBay将前段系统改造为Cluster。

2001-2002年,eBay将数据库进行了水平拆分。

2002年,将整个网站迁移为Java构建。

从eBay的发展来看,主要围绕可伸缩性和可用性两点。

Tencent

QQ虽然一路走来都是模仿路线,但是我想如果没有技术创新,一味的模仿也是无法发展的。

2009年到现在,腾讯决定对QQ IM重构,数据存储也不再存储与MySQL中,而是全部存储在自己设计的系统里。

从QQ IM的技术演变来看,其技术改造是围绕在可伸缩性和可用性上。

淘宝网

2003年诞生,直接购买了phpAction的软件。

2004年将系统由PHP迁徙到Java,MySQL迁徙为Oracle,应用服务器采用WebLogic。

2005年-2007年发展中,JBoss替代了WebLogic,对数据库进行了分库,基于BDB做了分布式缓存,自行开发了分布式文件系统TFS,并自建CDN。

2007-2009年,对应用系统进行垂直拆分,拆分的系统都已Service的方式对外提供,对数据进行了垂直和水平拆分。

进行数据拆分后,Oracle的成本越来越高,于是数据逐渐从Oracle迁移到MySQL,同时开始采用HBase来支撑历史交易订单的存储和检索。

近几年,淘宝开始对Linux内核,JVM,Nginx等软件进行修改定制。

从淘宝的发展过程来看,围绕可伸缩性和可用性,现在也将精力投入在性能和成本上。

 

从上面互联网精英的历史演变过程中,我们不难看出,可伸缩性,可用性,性能以及成本一直是互联网发展的技术核心。

我见过很多人在争论Java和PHP,亦或者使用Tomcat,WebLogic ,MySQL和Oracle,我想说这些都没有什么好争论的,适合自己的才是最好的,同时技术和模式都是不可能照搬照套的,需要自己来进行创新。

我总觉得自己该做些什么了,我想现在应该不算晚了。让我们努力吧:)

 

这里留下一些资料,有情趣的可以自己去研究了。点击下载