「优知学院」淘宝技术架构的前世今生(上)
“
淘宝技术架构经历从最初的LAMP架构,到IOE架构,再到分布式架构,再到去IOE,最后到现在的云计算平台架构这一变化过程在不断解决上面的技术问题,可以说淘宝技术架构的演变就是活生生的一本架构教科书。
这次为大家带来淘宝架构从1.0到3.0的整个演变过程,淘宝架构前世今生下部将为大家带来4.0-5.0架构的演变过程以及重点解读到淘宝架构走过哪些弯路,哪些是现在公司的技术架构可以避免和参考的。
淘宝1.0架构
第一个阶段:LAMP+数据库读写分离
技术架构比较简单, 采用经典的LAMP结构,mySQL采用M-S模式,实现了读写分离。
这种架构的优点是:无需编译,发布快速,PHP功能强大,能做从页面渲染到数据访问所有的事情,而且用到的技术都是开源的,免费。
直到如今,大部分公司仍然沿用经典的LAMP,特别是适合早期创业公司在产品和商业模式的验证阶段,可以快速实现产品原型,快速部署,比较高效。
数据库端采用读写分离,缓解了数据库在大量读访问的压力。其实,在这个阶段,大部分创业公司还不用采用读写分离,大量的访问压力,应用端的压力比如:大量的图片、数据访问的可以先转移到多态服务器,或者转移到CDN以及缓存上面,这样来降低数据库端的压力,过了这个阶段,后面才来考虑读写分离会好很多。
最后部署也比较简单,这一步架构演变对技术上的知识体系基本没有要求。
这个阶段,基本都是硬件水平扩展阶段。
淘宝2.0架构
随着访问量和数据量的飞速上涨,问题很快就出来了,主要还是数据库阶段,当时对于 PHP 语言来说它是放在 Apache 上的,每一个请求都会对数据库产生一个连接,它没有连接池这种功能(Java 语言有 Servlet 容器,可以存放连接池),造成的数据库端的瓶颈就特别明显。
Oracle容量大、稳定、安全、性能高,Oracle的性能和并发访问能力之所以如此强大,有一个关键性设计——连接池,连接池中放的是长连接,任何一个请求只需要从连接池中取得一个链接即可,用完后释放,不需要频繁的创建和断开连接。
于是2003年底,把MySQL换成Oracle的同时 ,语言还是php,但是数据库连接端使用一个开源的连接池代理服务SQL Relay。
调整后的2.0架构如下:
调整后的问题也比较多,特别是sqlreplay,这个个代理服务经常会死锁。
这个阶段比较明显的压力还是来自于数据库端,除了加入了代理连接池使用oracle的数据库连接池外,应用端的压力还是非常大,急需要缓存以及对大量商品库的搜索的压力解决方案。
淘宝3.0架构
2004年在淘宝业务发展的推动下,参考电信运营商、银行等的一些企业解决方案,将LAMP架构改造为Oracle+IBM小型机的数据库架构和EMC存储方式。虽然方案成本昂贵,但性能非常好。同时,随着网站流量的增加,系统显得有些不堪重负。当时最担心的问题是网站流量如果持续增加,交易量持续增加,网站的系统架构怎么设计?如何选择数据库?如何选择缓存?如何构建业务系统?……后来参考eBay的互联网设计架构,设计了一个Java的技术方案,并使用了非常多的Java开源产品。
为了解决上文提到的大量商品库的查询,采用自己开发的ISearch搜索引擎来取代在Oracle数据库中进行搜索,降低数据库服务器的压力。做法比较简单,每天晚上全量将Oracle小型机的数据dump出来,Build成ISearch的索引,当时商品量也不大,一台普通配置的服务器,基本上可以将所有的索引都放进去,没做切分,直接做了一个对等集群。
调整后的3.1最后调整架构如下为 :
这个阶段语言完全换成了java时代,以及对应的多层架构体系。
2004-2005(大概是这个时间段),引入IBM小型机、使用EMC存储。
1、Oracle数据库分库,商品信息和用户信息分库存放,由数据库路由的框架DBRoute统一处理数据的合并、排序、分页等操作;
2、控制层用Spring框架替换EJB;
3、研发基于Berkeley DB的缓存系统,把很多不太变动的只读信息放了进去;
4、加入CDN内容分发网络。
最后在3.1这个基础上在2007年左右改进为3.2这个版本:
2008年初,为了解决Oracle数据库集中式架构的瓶颈问题(连接数限制、I/O性能),将系统进行了拆分,按照用户域、商品域、交易域、店铺域等业务领域进行拆分,建立了20多个业务中心,如商品中心、用户中心、交易中心等。
所有有用户访问需求的系统,必须使用业务中心提供的远程接口来访问,不能够直接访问底层的MySQL数据库,通过HSF这种远程通信方式来调用业务中心的服务接口,业务系统之间则通过Notify消息中间件异步方式完成调用。
从2008年开始后的的服务化淘宝4.0技术架构以及后续的后续的智能化架构5.0的将是淘宝最重要的一次技术升级,4.0和5.0的演变将在淘宝技术架构的前世今生(下)详细讲解。
优知学院(youzhixueyuan.com)是IT人的升职加薪进阶站,BAT产品技术总监经验分享平台,免费提供系统的互联网产品技术最牛进阶干货。
你可能也喜欢:
- 「优知学院」淘宝架构的前世今生(下)
- 阿里P8架构师谈:架构设计经验汇总
- 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁
- 【优知学院】手把手教你成为年薪100万的架构师 or CTO?
- 阿里P8架构师谈:分布式架构系统拆分原则、需求、微服务拆分步骤
- 阿里P8架构师谈:分布式架构设计12精讲
「优知学院」淘宝技术架构的前世今生(上)相关推荐
- 「优知学院」淘宝架构的前世今生(下)
" 淘宝技术架构前世今生就是一部架构活教材,今天仍然由陈睿mikechen为大家解读淘宝架构. 我稍微把前面淘宝架构的三个阶段简短总结: 淘宝1.0 采用LAMP mysql读写操作 淘宝2 ...
- 第二十二期:淘宝技术架构分享
一,淘宝技术架构 1.UIC: 用户中心(User Interface Center),提供所有用户信息相关的读写服务,如基本信息,扩展信息,社区信息,买卖家信用等级等等. 淘宝现在有两类卖家B 和C ...
- 淘宝技术架构从1.0到4.0的架构变迁
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长.创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux ...
- 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长.创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux ...
- 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)
从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起 ...
- 淘宝技术架构从1.0到4.0的演变
点击上方"朱小厮的博客",选择"设为星标"后台回复"书",获取后台回复"k8s",可领取k8s资料 自创立以来的,淘宝业 ...
- 淘宝技术架构演进之路
1.概述 本文以淘宝为例,介绍从一百到千万级并发情况下服务端架构的演进过程,同时列举出每个演进阶段遇到的相关技术,让大家对架构的演进有一个整体的认知,最后汇总一些架构的设计原则. 2.基本概念 在介绍 ...
- 淘宝技术架构演进之路--精华版
基本概念 IOE ioe指以ibm小型机.oracle数据库和emc存储设备为代表的it基础体系,这三个海外巨头从软硬件上垄断了商业数据库领域,中国企业尤其是大型企业如金融等命脉企业,大都采用ioe架 ...
- 通过京东技术演进和淘宝技术演进,探察未来技术和架构
通过京东技术演进和淘宝技术演进,探察未来技术和架构 我们从京东和淘宝技术架构演进,可以看出电商在发展过程中的必经之路:Mysql->Oracle->分布式计算和分布式存储->???未 ...
最新文章
- python 虚拟现实_虚拟现实 | MOOC中国 - 慕课改变你,你改变世界
- 进程状态控制-进程的挂起和激活
- C#如何得到运行中和杀死运行中的进程?
- 中国SaaS死或生之七:死生非大事,利益最相关
- 【转】strcpy溢出的攻击示例
- 15.枚举enum.rs
- String类能被继承吗,为什么?
- Java中equals()方法和==的区别分析
- Ant Design Pro在使用TreeSelect树选择组件时,报错未注册
- HTML标签悬浮到最下方,HTML – 如何在兄弟姐妹的悬停上显示元素?
- 图片怎样压缩到100KB以下?怎样压缩图片小于100KB?
- WMS系统中仓库条形码管理的优势
- 基于STM32开发板和Web网页的蔬菜大棚温湿度、光照等变化的动态柱形图表
- 图片自适应手机横屏竖屏的宽高
- 485集线器 4口485集线器 4口485 HUB
- 关于APP接收开机广播延迟问题,解决开机启动慢问题
- Adding Animations之Zooming a View
- 国外免费(开放获取)学术资源大全
- 君子周而不比,小人比而不周
- Vue 项目飞鸟头条后台管理系统
热门文章
- 什么是SOA,谈谈你的SOA的理解
- ubuntu 15.10运行Xware-desktop失败问题
- 解决linux虚拟机网络图标丢失,无法连接网络问题
- 论文翻译 || openpose -- Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
- 数算实习+数算 机考总结……
- 小学奥数思维训练题(十一)
- 计算机水平考试模块数量,全国职称计算机考试合格通过模块数量表.doc
- GRR(测量系统的重复性和复现性)
- JAVA HttpClient 图片下载不全(坑点笔记)
- matlab怎么输入积分公式,在matlab下用梯形法求函数的积分