淘宝网系统架构分析以及数据库架构简介

一个成熟的大型网站(如淘宝、京东等)的系统架构需要考虑诸多复杂的因素,因为像淘宝这种大型网站数据量比一般的网站要大的多,所以在设计架构方面也要复杂的多,既要考虑成本因素也要考虑访问速度安全性等。这里我简单的对淘宝的网站系统架构进行一个简单的分析。

淘宝作为一个大型购物网站,其数据量是很大的,所以不像一般网站,淘宝需要用各种方法来保证服务器的正常运行以及用户购买时的良好体验。主要由以下方式:1.应用、数据、文件分离 2.利用缓存改善网站性能 3.使用CDN和反向代理提高访问速度 4.使用分布式文件系统

5.将应用服务器进行业务拆分

首先随着作为大型购物网站,一台服务器已经肯定满足性能需求,所以将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

由于功能复杂,用户访问路径长,淘宝选择对这些数据进行缓存以提高用户的访问速度。缓存实现常见的方式是本地缓存、分布式缓存。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快。同时提供均衡负载服务器来分担主要服务器的压力。

使用CDN和反向代理提高网站性能。由于淘宝的服务器不能分布在国内的每个地方,所以不同地区的用户访问需要通过互联路由器经过不同长度的路径来访问服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。

随着业务进一步扩展,这时我们需要将应用程序进行业务拆分。每个业务应用负责相对独立的业务运作(所以需要开辟多个服务对不同业务进行划分)。业务之间通过消息进行通信或者同享数据库来实现。所以在负载服务器上链接一个B业务服务器在对其业务进行分布式划分(如用户,订单,支付等),然后B级业务服务器通过消息队列服务器来与A业务服务区进行实时通信已经共享数据。 诸如此类的A,B服务器有许多,相互之间都可以进行共享数据。

 


下面简单介绍一下淘宝的数据库架构。对于淘宝来说,最重要的就是数据库的架构。

按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如上图所示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的浏览、搜索等行为日志等。在数据源层实时产生的数据,通过淘宝自主研发的数据传输组件准实时地传输到一个Hadoop集群上,这个集群称之为“云梯”,是计算层的主要组成部分。不得不提的是,一些对实效性要求很高的数据,例如针对搜索词的统计数据,我们希望能尽快推送到数据产品前端。这种需求再采用“云梯”来计算效率将是比较低的。为此我们做了流式数据的实时计算平台,称之为“银河”。“银河”也是一个分布式系统,它接收来自前端的实时消息,在内存中做实时计算,并把计算结果在尽可能短的时间内刷新到NoSQL存储设备中,供前端产品调用。

  我们针对前端产品设计了专门的存储层。在这一层,我们有基于MySQL的分布式关系型数据库集群MyFOX和基于HBase的NoSQL存储集群Prom。存储层异构模块的增多,对前端产品的使用带来了挑战。为此,我们设计了通用的数据中间层glider来屏蔽这个影响。glider以HTTP协议对外提供restful方式的接口。数据产品可以通过一个唯一的URL获取到它想要的数据。

时间: 2024-10-09 18:09:07

淘宝网系统架构分析以及数据库架构简介的相关文章

新浪微博技术架构分析-微博首席架构师杨卫华

新浪科技讯 11月16日下午消息,由新浪微博主办的中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴.作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展.视频:中国首届微博开发者大会杨卫华演讲媒体来源:新浪科技 以下为演讲实录: 大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心.最晚的一次,是12点多收到一个邮件说想了解一下微博底层是 怎么构架的.很多技术人员对微博的构架非常感

Java中间件:淘宝网系统高性能利器

[TechTarget中国原创]淘宝网是亚太最大的网络零售商圈,其知名度毋庸置疑,吸引着越来越多的消费者从街头移步这里,成为其忠实粉丝.如此多的用户和交易量,也意味着海量的信息处理,其背后的IT架构的稳定性.可靠性也显得尤为重要.那么,他们是怎么办到的呢? 曾宪杰(花名花黎)是淘宝Java中间件团队成员,他认为大型网站就是要同时满足高访问量和高数据量的要求,核心是通过分布式系统解决数据的处理.存储及访问问题. 消息中间件Notify 早期,淘宝并没有Java中间件,其系统框架比较简单.下面我们就

淘宝网质量分析

淘宝网质量分析,质量属性的六个场景(quality attribute scenario): 可用性(availability):淘宝网在我使用的时候没有出现崩溃现象,但是有时会在访问量过多时不能正确显示界面,会提示页面出现错误,需要刷新一下. 刺激源:用户 刺激:网站登录用户过多,不能显示出相应页面 制品:商品页面 环境:超载环境 响应:请用户刷新页面,来显示正确的网页 响应度量:刷新一下,在2s以内即可恢复网页 可修改性(modifiability):淘宝网店家经常换一些商品 刺激源:淘宝店

淘宝店铺装修教程之下载淘宝视频及分析视频地址中的高逼格信息

摘要: 关于淘宝视频方面的教程,艺灵已写过好几篇了,唯独没有下载的教程,然后群内小伙伴也一直问这个问题,所以特写此教程,内含信息量巨大,看官慎入...... 一.起因 还是因为刚有群友在群里问这个问题,已会的神人请无视这篇基础教程. 在讲如何下载淘宝视频之前,不得不把之前写的几篇教程拿出来,要不然那谁又该问:怎么上传淘宝视频.怎么获取淘宝视频链接.店铺中怎么安装淘宝视频.详情页中怎么放淘宝视频等等问题.如果看官对刚提的几点有疑惑,请先看完下面几篇教程文章后再回来继续看这篇文章. 二.淘宝视频相关

淘宝服务端高并发分布式架构演进之路

1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 2. 基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍: 分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上 高可用 系统中部分节点

利用淘宝IP库分析web日志来源分布

web访问日志中含有来访IP,通过IP查看归属地,最后统计访问的区域分布,可细化到省.市 淘宝接口地址:http://ip.taobao.com/service/getIpInfo.php?ip=14.215.177.38,后面的IP按需修改 例如要查看14.215.177.38这个地址的相关信息,返回的信息如下: {"code":0,"data": {"country":"\u4e2d\u56fd", "count

淘宝用户行为分析

目录 环境 正文 1. 项目背景 2. 明确分析思路和目的 2.1 what 什么是用户行为分析? 2.2 why 为什么进行用户行为分析? 2.3 how 如何进行用户行为分析? 3. 数据概览 3.1 读取数据 3.2 查看数据信息 3.3 描述性统计 4. 数据预处理 4.1 重复值处理 4.2 缺失值处理 4.3 异常值处理 4.4 数据清洗 5. AARR模型分析 5.1 获取用户 5.2 提高活跃度 5.3 提高留存率 5.4 获取营收 6. 转化漏斗模型分析 7. RF模型分析 总

NopCommerce架构分析之三---数据库初试化及数据操作

系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvider,SqlCeDataProvider:获取数据连接工厂,不同类型数据库,连接工厂不同. 接口IStartupTask的实体类EfStartUpTask的实现如下: [csharp] view plain copy public class EfStartUpTask : IStartupTask

淘宝网的架构分析(小组)

一个成熟的大型网站(如淘宝.京东等)的系统架构需要考虑诸多复杂的因素,因为像淘宝这种大型网站数据量比一般的网站要大的多,所以在设计架构方面也要复杂的多,既要考虑成本因素也要考虑访问速度安全性等.这里我简单的对淘宝的网站系统架构进行一个简单的分析. 淘宝作为一个大型购物网站,其数据量是很大的,所以不像一般网站,淘宝需要用各种方法来保证服务器的正常运行以及用户购买时的良好体验.主要由以下方式:1.应用.数据.文件分离 2.利用缓存改善网站性能 3.使用CDN和反向代理提高访问速度 4.使用分布式文件