Twitter的数据存储一直采取MySQL,成长过程中呈现的小插曲是,当Facebook开源了Cassandra时,Twitter本打算使用,但最终仍是抛却,仍然保持了使用MySQL,Twitter的MySQL版本已开源(https://github/twitter/mysql)。Twitter也是采取分库分表的体例来支撑年夜数据量,使用Memcached来Cache tweet,timeline的信息则迁移为用Redis来Cache。
2010年,Twitter在盐湖城拥有了第一个自建的DataCenter,主要是为了增加可控性。从Twitter的成长过程看,6年来它的手艺改革主要围绕可伸缩以及可用性。
作为一家电子商务网站的员工,请允许我在此介绍这个Alexa排名21的著名电子商务网站的手艺演变。
1995年,eBay出世,那时采取CGI编写,数据库采取的是GDBM,最多只能支撑5万件在线商品。1997年,eBay将操作系统从FreeBSD迁移到Windows NT,别的将数据库从GDBM迁移为Oracle。1999年,eBay将前端系统改革为Cluster(之前只有一台主机),采取Resonate作为负载平衡,后真个Oracle机械升级为Sun E1000小型机,同年给数据库增加了一台机械作为备库,提升可用性。前端机械随着拜候量不竭增加还可以应付,但数据库机械在1999年11月时已经达到了瓶颈(已经不克不及再加CPU和内存了),于是在11月起头将数据库按业务拆分为多个库。2001-2002年,eBay将数据表进行了水平拆分,例如按类目存储商品,同时摆设Oracle的小型机换为Sun A3500。2002年,将整个网站迁移为用Java构建,在这个阶段,做了DAL框架来屏蔽数据库分库分表带来的影响,同时还设计了一个开辟框架以供开辟人员更好地上手进行功能开辟。从eBay的整个成长过程来看,手艺改革主要围绕在可伸缩性和可用性两点。
腾讯目前Alexa排名第 9。最初QQ IM采取的是单台接入办事器来措置用户的登录和状态保持,但在成长到一百万用户同时在线时,这台办事器已经无法支撑。于是QQ IM将所有单台办事器改革为了集群,并增加了状态同步办事器,由其完成集群内状态的同步,用户的信息存储在MySQL中,做了分库分表,老友关系存储在自行实现的文件存储中。为了提升过程间通信的效率,腾讯自行实现了用户态IPC。之后腾讯将状态同步办事器也改革为同步集群,以支撑越来越多的在线用户。在经历了前面几次改革后,已根基能支撑千万级别的用户同时在线,但可用性比较差,于是腾讯对QQ IM再次进行改革,实现了同城跨IDC的容灾,增强了监控和运维系统的扶植。而后腾讯决定对QQ IM架构完全重写(年夜概是2009年延续到现在),主要是为了增强矫捷性、支持跨城市的IDC、支撑千万级的老友。在这次年夜的手艺改革过程中,腾讯的数据都不再存储于MySQL中,而是全部存储在了自己设计的系统里。
从QQ IM的手艺演变来看,其手艺改革主要是围绕在可伸缩性和可用性上。
2003年,淘宝出世,直接采办了一个商业的phpAuction的软件,在此根本上改革产生了淘宝。2004年,将系统由PHP迁移到Java,MySQL迁移为Oracle(小型机、高端存储设备),应用办事器采取了WebLogic。2005-2007年的成长过程中,用JBoss替代了WebLogic,对数据库进行了分库,基于BDB做了散布式缓存,自行开辟了散布式文件系统TFS以支持小文件的存储,并扶植了自己的CDN。2007-2009年对应用系统进行垂直拆分,拆分后的系统都以Service的体例对外提供功能,对数据采取了垂直和水平拆分。
在进行了数据的垂直和水平拆分后,Oracle产生的本钱越来越高,于是在之后的几年,淘宝又起头将数据逐渐从Oracle迁移到MySQL,同时起头测验测验新型的数据存储方案,例如采取HBase来支撑汗青买卖订单的存储和检索等。近几年淘宝起头进行Linux内核、JVM、Nginx等软件的修改定制工作,同时也自行设计了低能耗办事器,同时在软硬件上进行优化,以更好地下降本钱。
从淘宝的整个成长过程来看,手艺改革主要围绕在可伸缩性和可用性两点,现在也起头逐渐将精力投入在了性能和本钱上。目前淘宝的Alexa排名为第14。