「优知学院」淘宝技术架构的前世今生(上)

「优知学院」淘宝技术架构的前世今生(上)

淘宝技术架构经历从最初的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产品技术总监经验分享平台,免费提供系统的互联网产品技术最牛进阶干货。


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十大双跨平台整体发展情况盘点

在2019年国家级双跨平台发布一年之际和新一轮遴选开场之前,相关媒体“从战略演进、平台发展、资源汇聚及行业应用四个维度九个细分指标”,对十大双跨平台整体发展情况通过“一张图”的形式做了一次盘点(图略)。 我们通过对图中指…

论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别

Citation:Qiu, Y., Li, M., Wang, Y., Jia, Y., & Jin, X.(2018). Hierarchical Type Constrained Topic Entity Detection for Knowledge Base Question Answering. Companion of the Web Conference (pp.35-36).动机对于 KBQA 任务,有两个最为重要的部分&…

机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(一)L0、L1与L2范数 zouxy09qq.com http://blog.csdn.net/zouxy09今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化。我们先简单的来理解下常用的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问…

模型训练慢和显存不够怎么办?GPU加速混合精度训练

目录 混合精度训练 理论原理 三大深度学习框架的打开方式 Pytorch Tensorflow PaddlePaddle 混合精度训练 一切还要从2018年ICLR的一篇论文说起。。。 《MIXED PRECISION TRAINING》 这篇论文是百度&Nvidia研究院一起发表的,结合N卡底层计算优化&#x…

陈睿:架构设计之数据库拆分六大原则

架构设计之数据库拆分原则 数据拆分前其实是要首先做准备工作的,然后才是开始数据拆分,我先讲拆分前需要做的事情: 第一步:采用分布式缓存redis、memcached等降低对数据库的读操作。 第二步:如果缓存使用过后&#xf…

(摘要)新基建风口下,今年工业互联网平台将呈现十大新特征

目录一是提升核心能力成为平台发展的主攻方向二是垂直行业和产业集聚区应用爆发式增长四是数据驱动的制造范式正在形成五是平台加速推动大中小企业融通发展六是平台 “双创”生态体系初步形成七是平台采用知识图谱提升核心能力八是CPS和数字孪生崭露头角九是区块链支撑平台构建…

论文浅尝 | 基于知识图谱的子图匹配回答自然语言问题

本文转载自公众号:珞珈大数据。本次论文讲解的是胡森 邹磊 于旭 王海勋 赵东岩等作者写的论文-Answering Natural Language Questions by Subgraph Matching over Knowledge Graphs,主要是分享一些阅读论文的收获,希望能对正在学习自然语…

模式识别之特征提取算法

说明:此处暂时简单介绍下各种特征提取算法,后续完善。 前言:模式识别中进行匹配识别或者分类器分类识别时,判断的依据就是图像特征。用提取的特征表示整幅图像内容,根据特征匹配或者分类图像目标。常见的特征提取算法…

ACL2020 | 对话数据集Mutual:论对话逻辑,BERT还差的很远

一只小狐狸带你解锁 炼丹术&NLP 秘籍本文为MuTual论文作者的特别约稿编辑:rumor酱、夕小瑶前言自然语言处理是人工智能领域的掌上明珠,而人机对话则是自然语言处理领域的最终极一环。以BERT为代表的预训练模型为自然语言处理领域带来了新的春天&…

大型网站系统的特点和架构设计

分布式架构 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁 优知学院」淘宝技术架构的前世今生(上) 优知学院」淘宝架构的前世今生(下) 揭秘:一位亲历者眼中的淘宝技术架构发展之路 淘宝发展历程最具…

IDC 和浪潮联合发布了《2020-2021 中国人工智能计算力发展评估报告 》

近日,IDC 和浪潮联合发布了《2020-2021 中国人工智能计算力发展评估报告 》(以下简称《报告》)。《报告》指出,中国 AI 基础设施市场规模在 2020 年达到了 39.3 亿美元,到 2024 年预计达到 172. 2 亿美元。 《报告中》…

Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用

Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用 1,首先切换到Oracle用户,并进入数据库#sql / as sysdba2,启动数据库,并连接样例及表格,启动命令#startup,连接样例#conn scott/tiger3&#xff…

论文浅尝 | 基于动态知识图谱向量表示的对称合作对话代理的学习

链接:https://arxiv.org/abs/1704.07130文本研究了对称合作对话(symmetric collaborative dialogue)任务,任务中,两个代理有着各自的先验知识,并通过有策略的交流来达到最终的目标。本文还产生了一个11k大小的对话数据集。为了对结…

知乎搜索框背后的Query理解和语义召回技术

一只小狐狸带你解锁 炼丹术&NLP 秘籍前言随着用户规模和产品的发展, 知乎搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次分享将介绍知乎搜索在 query term weighting,同义词扩展,query 改写…

JSON-LD 和知识图谱

JSON-LD 正式推荐标准2020年7月发布 2020年7月16日,W3C JSON-LD 工作组发布三份正式推荐标准(W3C Recommendation): JSON-LD 1.1 语法(JSON-LD 1.1)定义了一种基于 JSON 的格式来序列化关联数据。该语法的…

阿里P8架构师谈:分布式架构设计12精讲

分布式架构设计包含: 分布式缓存 分布式消息中间件 分库分表、读写分离 单点登录等 想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系! 阿里P8架构师谈:分布式架构系统拆分原则、需求、微服务拆分步骤 阿里P8架构师谈…

论文浅尝 | 弱监督关系抽取的深度残差学习方法

Citation: Pawar, S., Palshikar, G. K., & Bhattacharyya, P. (2017).Relation Extraction : A Survey, 1–51. Retrieved from http://arxiv.org/abs/1712.05191动机近年来基于深度学习方法的远程监督模型取得了不错的效果,但是现有研究大多使用较浅的 CNN 模…

【干货】推荐系统中的机器学习算法与评估实战

【导读】推荐系统是机器学习技术在企业中最成功和最广泛的应用之一。本文作者结合MLMU演讲【1】的Slides,对推荐系统的算法、评估和冷启动解决方案做了详细的介绍。 作者 | Pavel Kordk 编译 | 专知 翻译 | XiaowenMachine Learning for Recommender systems — P…

Google | 突破瓶颈,打造更强大的Transformer

一只小狐狸带你解锁炼丹术&NLP秘籍作者:苏剑林 (来自追一科技,人称“苏神”)前言《Attention is All You Need》一文发布后,基于Multi-Head Attention的Transformer模型开始流行起来,而去年发布的BERT模型更是将Transformer模…

新媒体中的MCN机构是什么意思

主要转自知乎:https://www.zhihu.com/question/318661288 有删改。 什么是MCN?MCN(Multi-Channel Network)是舶来品,是一种多频道网络的产品形态,将PGC内容联合起来,在资本的有力支持下&#x…