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

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

淘宝技术架构经历从最初的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年国家级双跨平台发布一年之际和新一轮遴选开场之前,相关媒体“从战略演进、平台发展、资源汇聚及行业应用四个维度九个细分指标”,对十大双跨平台整体发展情况通过“一张图”的形式做了一次盘点(图略)。 我们通过对图中指…

机器学习中的范数规则化之(一)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…

模式识别之特征提取算法

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

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…

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

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

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

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

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

【导读】推荐系统是机器学习技术在企业中最成功和最广泛的应用之一。本文作者结合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模…

阿里P8架构师谈:高并发网站的监控系统选型、比较、核心监控指标

在高并发分布式环境下,对于访问量大的业务、接口等,需要及时的监控网站的健康程度,防止网站出现访问缓慢,甚至在特殊情况出现应用服务器雪崩等场景,在高并发场景下网站无法正常访问的情况,这些就会涉及到分…

斯坦福CS224n追剧计划【大结局】:NLP和深度学习的未来

一只小狐狸带你解锁炼丹术&NLP秘籍简介Stanford CS224n追剧计划是由夕小瑶的卖萌屋发起的开源开放NLP入门项目,借助github和微信群为大家提供同期小伙伴打卡讨论、内容沉淀、作业笔记和FAQ共享、连线斯坦福等服务。关于该计划的详请见这里 。1. Github项目地址h…

KubeVela 高可扩展的云原生应用平台与核心引擎

https://www.oschina.net/news/121015/kubevela-open-source 目录什么是 KubeVela ?KubeVela 解决了什么问题?1. 应用开发者眼中的 KubeVela一个 Appfile 示例2. 平台工程师眼中的 KubeVela3. KubeVela vs 经典 PaaS快速入门安装KubeVela1. 安装Kubernet…

打造工业级推荐系统(三):推荐系统的工程实现与架构优化

打造工业级推荐系统(三):推荐系统的工程实现与架构优化 gongyouliu 阅读数:4148 2019 年 4 月 26 日导读:个性化推荐系统,简单来说就是根据每个人的偏好推荐他喜欢的物品。互联网发展到现在,推荐…

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

什么是应用服务雪崩 雪崩问题 分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞&#xff0c…

论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答

链接:https://arxiv.org/pdf/1804.03317.pdf概述当前大部分的 kbqa 方法为将 kb facts 与 question 映射到同一个向量空间上,然后计算相似性. 但是这样的做法会忽视掉两者间原本存在的单词级别的联系与交互. 所以本文提出一种网络结构 ARSMCNN,既利用到语义的信息, 又利用到单词…

斯坦福大学最甜网剧:知识图谱CS520面向大众开放啦!

一只小狐狸带你解锁炼丹术&NLP秘籍受本次疫情的影响,斯坦福大学的2020春季知识图谱课程——CS520面向公众线上开放啦!连课名都是爱你的形状!简单翻译一下重点:今年的CS520面向公众开放,大家可以通过远程视频软件Zo…