淘宝架构技术的演变
我们都知道,淘宝网的横空出世是在2003年,也就是但年SARS流行的时候,当初淘宝用的是现在看来也是十分流行的LAMP架构,即Linux+Apache+MySql+Php,的一个非常常用的架构模型,当时淘宝已经使数据库实现了读写分离,从数据库都只能是支持只读操作,在主数据库上才能进行写操作,同时,有了备份,也使得安全性也增加了。
随着淘宝网的发展规模迅速,当初的那个小网站已经不足以支撑当时的情况了,第一步要改的就是换数据库了,所以自然阿里巴巴的DBA团队把MySQl换了Oracle了,Oracle数据库的并发和和性能自然是比MySql好很多,还为此做了专门的数据库连接池,同时淘宝的DBA们也对SQL进行了优化。但是当时还是出现了问题,有的时候会出现死锁。
过了一年,也就是04年,淘宝网面临着一个巨大的变革,之前存在的问题迟迟未能解决,所以淘宝的技术人员准备更换开发语言了,Java是当时比较流行的开发语言,当然在现在也是非常流行,而且是当时世界上大规模网站普遍采用的语言。但是要把好端端的语言完全的更换成另一种语言,难度可想而知,但是阿里巴巴比较牛逼,请了sun公司的人来改造,显然他们更懂Java,他们先保留原来的功能模块,然后逐步迁移,最后完成所有的改造。当时的阿里巴巴打造了一个自己用的mvc的WebX,页面支持JSP ,持久层支持ibatis和hibernate,控制层可以用EJB和Spring,,Sun的这帮工程师我们改造完了淘宝网之后,用同样的架构做了同样在后来很出名的网站,叫做“支付宝”。
一台数据库的处理能力是有限的,淘宝的做法,把用户的信息按照ID存放到了2个数据库中,DB1,DB2,除了分库,分表,还是什么办法能提升系统的性能呢,1个是缓存,1个是CDN加速。CDN这个工作比较独立,当时淘宝的人专门搭建了自己的CDN网络,他们一开用的是商用CDN,ChinaCache。在这个稳定的版本下,淘宝网的业务有了突飞猛进的发展。
随着淘宝的数据量越来越大,成本也随之越来越来高,而且未来淘宝的数据一定还会呈现爆炸信的增长的,自此,开始了淘宝网自己研发的技术之路,当时的目标就是为了存储一些相关的图片,当时的Google,公布了GFS的设计论文,这给阿里巴巴的技术人员带来了很多思路,后来,淘宝的文件存储系统上线运营,取名TFS,这和后来的腾讯的文件系统一样的名字,都叫做TFS,TFS系统参照了GFS做了大量的修改,集群由一对NameSever结点和多台DataServer构成,每个DataServer运行在一个普通的Linux机上。与TFS文件系统一起出来的还有一个淘宝KV-缓存系统,Tair.Tair 作为一个分布式系统,由一个中心控制结点,和一系列的服务结点,Data Server对外提供各种数据服务,并以心跳的形式,将自身的状况报告给Config Server
到了06年,淘宝又经历了服务模块化的过程,对系统进行拆分的好处显而易见,拆分之后的系统需要2种中间件系统,1种是实时的调用的中间件,高性能,HSF,高性能服务框架,另一种是异步消息的中间件,Notify,一笔交易的发生会导致10几次的通知。
阿里巴巴的技术团队在后来还增加了专门管理Session的集群服务,用以保留用户状态,后来也用了大数据比较流行的Hadoop平台。最近几年淘宝已经在使用自己研发的Oceanbase数据库,这个数据库结合了传统RDBMS和Nosql的一些优点,由于,单独的适用于淘宝网当前的一个状况。不过现在都已经开源了,大家可以学习学习其中的设计思想。
好了,淘宝的技术演变就说到这里了,都是网上的和书上看到的拼凑在一起的,不得不佩服阿里的技术的大牛们,做出了这么庞大的系统。