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

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

   

 

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

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

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

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

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

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

源站

 

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

 

 

缓存服务器

 

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

 

 

智能DNS

 

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

 

 

 

 

 

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

 


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

 

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

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

 

 

      整体来讲淘宝网站的架构十分复杂,由于淘宝这种大型购物网站的数据量比通常网站要大的多,并且涉及到巨额的财产交易,因此网络的安全性,稳定性天然是必需要保证的。并且尽可能要下降运行成本,提升用户体验。如此多的要求对于一个团队来讲确实十分困难,可是淘宝的技术团队经过各类技术手段很好的解决了这些问题。整体来讲不管是淘宝的网站架构仍是它的数据库架构都是同行业的标杆。

相关文章
相关标签/搜索