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

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

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

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

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

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

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

在这里简单介绍一下CDN的原理。CDN的全称Content Delivery Network,即内容分发网络。CDN是一个经策略性部署的整体系统,从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的根本原因。CDN目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,解决 Internet 网络拥塞状况,提高用户访问网站的响应速度。CDN是一种组合技术,其中包括源站、缓存服务器智能DNS几个重要部分。

源站

源站指发布内容的原始站点。添加、删除和更改网站的文件,都是在源站上进行的;另外缓存服务器所抓取的对象也全部来自于源站。

缓存服务器

缓存服务器是直接提供给用户访问的站点资源,有一台或数台服务器组成;当用户发起访问时,他的访问请求被智能DNS定位到离他较近的缓存服务器。如果用户所请求的内容刚好在缓存里面,则直接把内容返还给用户;如果访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,然后再返还给用户。

智能DNS

智能DNS是整个CDN技术的核心,它主要根据用户的来源,将其访问请求指向离用户比较近的缓存服务器,如把广州电信的用户请求指向到广州电信IDC机房中的缓存服务器。通过智能DNS解析,让用户访问同服务商下的服务器,消除国内南北网络互相访问慢的问题,达到加速作用。智能DNS的出现,颠复了传统的一个域名对应一个镜像的做法,让用户更加便捷的去访问网站。

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

 

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

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

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

总体来说淘宝网站的架构十分复杂,因为淘宝这种大型购物网站的数据量比一般网站要大的多,而且涉及到巨额的财产交易,所以网络的安全性,稳定性自然是必须要保证的。而且尽量要降低运行成本,提高用户体验。如此多的要求对于一个团队来说确实十分困难,但是淘宝的技术团队通过各种技术手段很好的解决了这些问题。总体来说无论是淘宝的网站架构还是它的数据库架构都是同行业的标杆。

时间: 2024-08-27 12:09:28

淘宝网的架构分析(小组)的相关文章

淘宝网质量属性分析

一:可用性分析 可用性:用户数量巨大,系统长时间高强度的为用户提供服务,随时会出现崩溃现象 刺激源:大量的用户 刺激:海量的用户访问 响应:采用分布式服务器进行处理 响应度量:网站系统没有崩溃 二:可修改性分析 用户可以修改界面: 修改某个子系统或服务时,不影响其他子系统或服务: 刺激源:开发者 刺激:改变系统的某个模块 响应:不产生连锁反应 响应度量:确定时间内完成更改 三:性能分析 高峰时系统的平均响应时间控制在20秒以内: 系统能够满足百万个并发的用户查询请求: 系统至少能够支持千万个用户

解密淘宝网的开源架构

解密淘宝网的开源架构 作者:曾宪杰.2002年毕业于浙江大学计算机系.先后在中科院下属企业.先锋电子(中国)就职.积累了丰富的Windows平台.企业级系统设计经验.现任淘宝网平台架构部架构师,主要研究方向为大规模集群环境下的消息中间件设计.分布式数据层和分布式系统. 淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站.那么对于淘宝 网这样大规模的一个网站,我猜想大家一定会非常关心整个网站都采用了什么样的技术.产品和架构,也

淘宝网的质量属性分析总结

   一:淘宝网的可用性分析 可用性就是存在大量的访问用户,也就是系统应能长期稳定地提供服务,近似7 X 24小时工作强度:在负载过重或是系统崩溃的情况下,能保证用户请求不丢失:当系统出现故障或崩溃时,恢复时间不超过两小时: 刺激源:海量的用户 刺激:海量的用户访问 响应:采用分布式服务器进行处理 响应度量:网站系统没有崩溃 二:淘宝网的可修改性分析 用户可以修改界面: 修改某个子系统或服务时,不影响其他子系统或服务: 刺激源:开发者 刺激:改变系统的某个模块 响应:不产生连锁反应 响应度量:确

淘宝网质量分析

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

淘宝网采用什么技术架构来实现网站高负载的

2012-11-15 12:30 佚名 转载 字号:T | T 下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用. AD: WOT2014:用户标签系统与用户数据化运营培训专场 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用. 相关专题:淘宝双11背后高并发技术讨论 一 应用无状态(淘宝se

淘宝网的质量属性分析

淘宝网的质量属性分析 1.可用性:用户访问量较大 2.可修改性:修改用户界面 3.性能:秒杀活动 4.安全性:黑客试图盗取用户信息  5.可测试性:测试人员对模块进行测试 6.易用性:取消交易

淘宝双11促销背后高并发处理之淘宝网采用什么技术架构来实现网站高负载

转自:http://china-chill.blog.163.com/blog/static/2049210522012101782432304/ 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用. 一 应用无状态(淘宝session框架) 俗 话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理.为什么这么说呢?咱们试想一下,假如我们在session中保存

基于淘宝网的软件质量属性分析

此次写的是极具淘宝网的软件质量属性分析 1.可用性分析 可用性为系统能正常为用户提供服务的时间比例.可用性与系统故障及其相关后果有关,当系统不再提供其规范中所说明的服务时,也就出现了系统故障. 公式为 场景:淘宝网举行的各种购物活动,大量用户同时登录系统. 2.可修改性分析 可修改性指的是用户.开发人员.管理员等对系统进行变更的能力.对开发人员而言,主要表现在系统更新.优化并且不影响用户使用:对用户而言,改变系统的屏保.颜色等:对管理员来说修改用户的权限等. 场景:用户修改系统界面. 3.性能分

《淘宝网》质量属性分析

以<淘宝网>为例,描绘质量属性的六个常见属性场景. 1.可用性分析 可用性分析所关注的方面包括:如何检测系统故障,系统故障发生的频度,出现故障时会发生什么情况,允许系统有多长时间非正常运行,什么时候可以安全地出现故障,如何防止故障的发生以及发生故障时要求进行哪种通知. 场景:双十一时期导致淘宝用户猛增 刺激源:淘宝用户 刺激:登录人数过多,导致淘宝无法响应,网页瘫痪,无法继续进行 制品:淘宝的处理器.通信通道.存储器.进程 环境:用户的正常浏览操作,淘宝的服务器运行: 响应:淘宝服务器检测到故