淘宝、天猫、腾讯网站系统架构

news/2024/5/8 19:55:16/文章来源:https://blog.csdn.net/p312011150/article/details/78050261

淘宝、天猫、腾讯网站系统架构

  (2016-06-02 17:19:12)
   

前言

一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的扩展而逐步完善的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿用户的实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段广泛运用在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构

最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:


淘宝、天猫、腾讯网站系统架构


二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。


淘宝、天猫、腾讯网站系统架构


三、利用缓存改善网站性能

在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。


淘宝、天猫、腾讯网站系统架构


缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。


四、使用集群改善应用服务器性能

应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。


淘宝、天猫、腾讯网站系统架构


常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。


五、数据库读写分离和分库分表2号标题

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分库分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切分则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务的不同来切分,如用户业务、商品业务相关的表放在不同的数据库中。


淘宝、天猫、腾讯网站系统架构


六、使用CDN和反向代理提高网站性能

假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。


淘宝、天猫、腾讯网站系统架构


而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有缓存数据才会继续访问应用服务器获取,这样做减少了获取数据的成本。反向代理有Squid,Nginx。

七、使用分布式文件系统

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求,这时就需要分布式文件系统的支撑。常用的分布式文件系统有GFS、HDFS、TFS。


淘宝、天猫、腾讯网站系统架构


八、使用NoSql和搜索引擎

对于海量数据的查询和分析,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb、hbase、redis,搜索引擎有lucene、solr、elasticsearch。


淘宝、天猫、腾讯网站系统架构


九、将应用服务器进行业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者共享数据库来实现。


淘宝、天猫、腾讯网站系统架构


十、搭建分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。阿里的Dubbo是一个不错的选择。


淘宝、天猫、腾讯网站系统架构

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

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

相关文章

robots.txt SEO 与搜索引擎

懂一点SEO的人都知道,在SEO网站优化中robots.txt文件的编写直接影响网站优化的成果。正所谓,细节决定成败,robots.txt文件要怎么写?今天小刚seo就花一点时间,专门为大家献上史上最详细的robots文件的写法解析。 一、为…

视频网站中video标签中的视频资源以blob:http呈现的探索

一、问题场景 想下载知乎视频资源,却发现视频链接是这个样子的 blob:https://v.vzuu.com/b6146956-6e52-406d-8909-f3f1b81ae461 当时一脸懵比啊 ~难道blob:https是什么牛逼的新协议?于是进行了一番探索 二、探寻结论 结论就是blob:https并不是一种协议…

Java集群--大型网站是怎样解决多用户高并发访问的

Java集群--大型网站是怎样解决多用户高并发访问的时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈&#…

LAMP架构部署和动态网站环境的配置

实验环境:操作系统:centos 7.5服务器IP:192.168.10.5运行用户:root连接工具:xshell工具web环境:Linuxapachephpmariadb(LAMP架构) 大型动态应用系统平台主要是针对于大流量、高并发网…

web前端开发项目资源网站,私家珍藏!

1.CodePen: http://codepen.io/ 网站里有很多很酷的特效,而且可以看到效果的源代码,也可以看到实现效果,是一个非常不错的前端开发学习资源网站。 这个是CodePen网站里的一个效果的源码截图,是不是很酷呀! …

前端学习网站

gotoandlearn.com 一个很棒的视频教程网站 CodePlayer: http://thecodeplayer.com/ 它的优点是 你可以看到作者是怎样一个个字母把代码打出来的… Codepen: http://codepen.io/ 这里面有很多很酷的特效,而且你还能看到它们的源代码. CSSdeck: http://cssdeck.com…

认识动态网站

之前做项目,做的前端。第一个项目的时候蠢的来(థ౪థ)σ根本不明白前后端有什么联系,所以正好跟着这波纳新的同学学一下后端!ヾ(◍∇◍)ノ゙ 主要区分动态网站和静态网站: 动态网站用PHP开发&#xff…

网站SEO优化

1、SEO(Search Enginner Optinazition)与 SEM(Search Enginner Market) SEM比如:百度浏览器搜东西出来的前几个广告,是花钱的 而SEO是为了提高网站排名但是不花钱 2、权重: 权重越大&#x…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

利用dns解析来实现网站的负载均衡

当网站的访问量大了就会考虑负载均衡,这也是每一个架构师的基本功了,其基本地位就相当于相声里的说学逗唱,活好不好就看这个了 :) 传统的负载均衡思路是单点的,不管你是硬件的还是软件的基本都是这样的原理 对于一般的需求来说&a…

谷歌搜关键字找网站漏洞合集

天前谷歌地址 https://g.alexyang.me/到GoogLe,搜索一些关键字,edit.asp?韩国肉鸡为多,多数为MSSQL数据库!2,到Google,site:cq.cninurl:asp3,利用挖掘鸡和一个ASP木马.文件名是login.asp路径组是/manage/关键词是went.asp用oror来登陆4,这个应该N多人都搞过吧。。关键字&#…

网站信息量大,该采用分页式设计还是瀑布流滚动设计?

当页面内容信息很多时,设计上应该使用分页,还是 瀑布流 无限滚动的方式呢?今天这篇好文详细分析了各大信息流网站(谷歌、Pinterest、淘宝)的做法,列举了这两种方式的优缺点和适用场景。一篇精悍简练的干货文…

前端开发需要掌握的SEO的知识点

SEO 工作的目的   seo 的工作目的是为了让网站更利于让各大搜索引擎抓取和收录,增加产品的曝光率。 1. title description keywords 标签设置 2. h1-h6 img的alt a 标签的 rel"nofollow" 3. 建立 robots.txt 文件 4. 建立网站的 sitemap 地图…

4月4日网站变灰色的效果是怎么实现的?

4月4日时,很多网站包括主页和内容(包括图片、按钮等)也都已经变成了灰色。当天我打开的csdn、人人视频都全部变为了灰色。 我当时第一想法是难道把这些图片都换了一遍吗???但是成本未免太高,且可…

iframe嵌入其他网站,如何自适应高度

终于有一周时间,工作不那么忙了,腾出手来总结下工作过程中学到的知识。 每天遇到新问题,解决新问题,但是却很少有时间去仔细研究下,或者总结下。攒的多了,就得从头捋一遍。 说下iframe自适应高度&#xf…

如何将 arXiv 网站中的文献导入成 endnote 格式或者其它你想要的格式

arXiv 是发布论文预印本的平台,现在很多自然科学的论文,特别是计算机科学的论文,都是先发表到arXiv 网站,当我们想引用的时候,发现用Endnote 等软件检索不到。那么如何将arXiv 导出为endnote 格式 或者其他你想要的格式…

发布网站报错

发布网站时提示以下错误 解决方法: 1.重新安装IIS,将里面的所有子节点都打勾。 2.在C:\Windows\Microsoft.NET\Framework64\v4.0.30319路径下添加文件夹Temporary ASP.NET Files。 3.修改IIS管理器的应用程序池的托管通道为“经典”。 转载于:https://ww…

22个免费的UI界面设计工具、资源及网站

1.原型界面制作工具Lumzy 官方地址:http://www.lumzy.com/ Lumzy是一个网站应用和原型界面制作工具。使用Lumzy,您可以轻松创建UI模型并即时发送到客户电脑中。 Lumzy还具有团队协作编辑工具。 2.在线工具Mockingbird 官方地址:https://gomo…

(PHP开发)thinkphp5 换网站图标icon无法显示问题

选择自己喜欢的图片(jpg、png都行) 前往在线生成icon生成网站: https://www.bejson.com/ui/icomaker/ 将选择的图片生成图标,然后将图标放到public目录下 修改视图文件,将图标路径换成相对路径即可

[转] Optimizely:在线网站A/B测试平台

Optimizely:在线网站A/B测试平台是一家提供 A/B 测试服务的公司。A/B 测试能够对比不同版本的设计,选取更吸引用户眼球的那一款,从而带来更为优化的个人体验。让网站所有者易于对不同版本的设计和内容进行测试。 该公司的客户现已突破7000家,这些客户完成了超过50万…