[架构师训练营第 1 期] 第四周学习总结
互联网应用系统的特点之一就是渐进式发展。
互联网应用在发展过程中面临的问题就是高并发大流量以及其伴随的种种问题。包括:
高并发:系统如何接收并处理大量的用户请求?
高可用:系统如何 7 × 24 小时不间断服务(即使系统正在升级和维护)?
大数据:系统如何存放和读取海量的数据?
广差异:系统如何应对各个地区的网络差异?
等等
应对高并发,系统需要扩容。扩容手段分为两大类:
垂直伸缩:通过升级硬件和网络吞吐能力以实现系统扩容。
特点:无需代码改动或架构调整,被认为是最简单的短期扩容方案,后期成本曲线陡峭。
水平伸缩:通过部署分布式服务器集群以实现系统的扩容。
特点:系统需要采用分布式架构,已有代码需要进行必要改动,后期成本曲线上升较慢。
技术方案和手段的使用,就是为了支持应用系统在这个发展过程中扩大和新增的业务,以及解决其中伴随出现的问题。
技术方案和手段是为应用系统的业务服务的。
分析一个应用系统在各个阶段中所使用的技术方案和手段时,应该从这个应用系统在不同阶段面临的业务和问题入手。
以淘宝为例。
2003 年的淘宝是马云团队花 2000 美金从从国外买进并汉化的基于 PHP 开发的系统。
在创业的初级阶段,团队面临的主要问题是如何低成本且快速地验证淘宝的商业模式是否成立。
验证商业模式的关键在于低成本、快速、可验证,所以淘宝采用的手段是:花少量资金(2000 美金,低成本)并进行少量开发(汉化,快速)买进并部署一个现成的可运作(可验证)淘宝商业模式的系统。此时系统所使用的技术方案也是较为初级的系统架构,即小型的应用服务器(Apache)集群加数据库(MySQL)读写分离,相对于一台应用服务器部署一个应用程序加文件系统和数据库的最简系统架构,足以应对商业模式验证期间的业务并发量,从而在验证商业模式的同时为第一批用户留下较好的用户体验。
通过对商业模式的低成本快速验证,淘宝很快发现其中的“拍卖模式”在中国并不适用,而其中的“售卖模式”则很符合当时中国的电子商务环境,淘宝也因此确认了中国电子商务正确打开方式,并据此发展,逐渐具备了与其它电子商务网站(eBay)竞争的基础实力,并最终在中国电子商务的大地上站稳了脚跟。
受非典影响,电子商务领域得到意外助推,淘宝的用户量和业务量快速增加。为了提高系统的并发处理能力、解决系统高并发业务响应速度慢的问题,淘宝虽然进一步提高了应用服务器的集群规模,系统能够流入更大的并发流量,但是这些流量流转到 MySQL 数据库还是会遇到瓶颈。
为了能够在短时间内快速实现数据库扩容,淘宝没有使用 MySQL 数据库分布式集群的水平伸缩方案,而是采用升级服务器硬件并更换数据库软件(Oracle 和 SQL Relay 中间件)的垂直伸缩方案(形成所谓的 IOE 架构)。由于升级的是服务器硬件和数据库软件,应用程序代码无需做任何改动,应用系统的架构也无需做任何调整,虽然付出了较高的金钱成本,但也因此迅速支撑住了激增的并发流量,留住了网站用户,抓住了电子商务快速发展的窗口期。从中也可见:技术选型不仅是在不同技术方案之间做技术比较,更是对采用不同技术方案所带来的利弊的权衡。
(注:IOE 架构即 IBM 的小型机 + Oracle 的数据库 + EMC 的存储设备,采用 IOE 架构的系统不利于进行水平伸缩扩容,成本相对较高,一套 IOE 可能花费成百上千万)
2004 年,在商业模式得到了充分验证后,淘宝进行了一个重大的业务创新,就是构建了淘宝自己的商品类目体系,规范化了各类商品的规格描述,方便卖家进行商品匹配、录入和管理,也方便买家进行商品搜索、查看和对比,极大提升了淘宝的专业性和用户体验。另一个业务创新就是引入了“快淘”搜索,搜索对于淘宝商业模式的成功也至关重要,它同样关系到淘宝作为一个电子商务网站的专业性以及伴随的用户体验。
淘宝为了支持上述这两项关键业务,分别采用了两个手段:一个是使用 Java 重建了网站(包括相应的 MVC 框架 WebX 和 项目管理工具 AntX),另一个是从雅虎购买了现成的搜索引擎(ISearch)。
之后,随着用户和业务的持续增加,淘宝不断地采取相应的技术方案和手段,不仅包括采用分布式架构,还包括优化代码发布流程、部署系统运维监控等,从而使业务获得持续支撑,逐渐形成了我们现在看到的淘宝。
版权声明: 本文为 InfoQ 作者【猫切切切切切】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf83c18ea8914558f567d4fc8】。文章转载请联系作者。
评论