演进过程
看了《淘宝技术这十年》,总结于此。
LAMP架构
从无到有
2003年,eBay 和易趣在资本方面正打得不可开交,那怎么在最短的时间内把一个网站从零开始 建立起来呢?
淘宝为了尽快上线,仅花了一个月把买来的LAMP(Linux+ Apache+MySQL+PHP)改造上线。主要的改造是:从一个数据库进行所有的读写操作,拆分成一个主库、两个从库的结构,读写分离。
这么做的好处有几点:有了备份,使得安全性增加了,读写效率得以提升。随着用户需求和流量的不 断增长,系统做了很多日常改进,服务器由最初的一台变成了三 台,一台负责发送Email、一台负责运行数据库、一台负责运行 WebApp。一段时间之后,商品搜索的功能占用数据库资源太大了 (用like搜索的,很慢),2003年7月,多隆又把阿里巴巴中文站 的搜索引擎iSearch搬了过来。
数据库切换
在2003年年底,MySQL已经撑不住了,技术的替代方案非常简单,就是换成Oracle。换为Oracle的原因除了它容量大、稳定、 安全、性能高之外,还有人才方面的原因。在2003年的时候,Oracle给全球的技术专家颁发一些头衔,其中最高级别的叫ACE,被授予这个头衔当年全球只有十几名,而阿里巴巴就有4名。
Oracle的性能和并发访问能力之所以强大,有一个关键性的设计——连接池,连接池中放的是进程级别的长连接,要独占一部分内存空间。也就是说,这些连接数在固定内存的Oracle Server 上是有限的,任何一个请求只需要从连接池中取得一个连接即可,用完后释放,这不需要频繁地创建和断开连接,
但对于PHP语言来说,它对数据库的访问都是很直接的。每一个请求都要一个连接。如果是长连 接,应用服务器增多时连接数就多了,就会把数据库拖挂;如果是短连接,频繁地连接后再断开,性能会非常差(而Java语言有很多现成的连接池)。为了解决这个问题,引入了一个开源的连接池代理服务SQL Relay,提供连接池的功能,多隆对它进行了一些功能改进之后,系统的架构就变成了如下形式。
后来数据量变大后,本地存储无法 满足了,买了NAS(Network Attached Storage,网络附属存储), NetApp(Network Appliance,美国网域存储技术有限公司)的 NAS作为数据库的存储设备,加上Oracle RAC来实现负载均衡。后来采购了Dell和EMC合作的SAN低端存储,性能一下提升了十几倍,这才比较稳定了。再后来,数据 量更大了,存储的节点一拆二、二拆四,RAC又出问题了,这才 踏上了购买小型机的道路。在那段不稳定的时间里,替换完数据库后,时间到了2004年春天,他们在把数据的连接放 在SQL Relay之后就噩梦不断,这个代理服务经常会死锁,如同之 前的MySQL死锁一样。虽然多隆做了很多修改,问题很多,最快的解决办法就是“重启” 它的服务。这在白天还好,只要连接上机房的服务器,把进程杀 掉,然后开启就可以了。但是最痛苦的是它在晚上也要死掉,于 是工程师们不得不24小时开着手机,一旦收到“SQL Relay进程挂 起”的短信,打开电脑连上机房的网络重 启服务。
从Php到Java
2004年初, SQL Relay的问题解决不了,数据库必须要用Oracle,只有换开发语言了。
Java是当时 最成熟的网站开发语言,它有比较良好的企业开发框架,被世界 上主流的大规模网站普遍采用。现在摆在他 们面前的问题是用什么办法把一个庞大的网站从PHP语言迁移到 Java?文章来源:https://www.toymoban.com/news/detail-735549.html
他们的大致方案是 给业务分模块,一个模块一个模块地渐进式替换。如用户模块, 老的member.taobao.com继续维护,不添加新功能,新功能在新 的模块上开发,跟老的模块共用一个数据库,开发完毕之后放到 不同的应用集群上,另开一个域名member1.taobao.com,同时再 替换老的功能,替换一个,就把老的模块上的功能关闭一个,逐 渐把用户引导到member1.taobao.com,等所有的功能都替换完之 后,关闭mem文章来源地址https://www.toymoban.com/news/detail-735549.html
到了这里,关于淘宝技术架构演进的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!