大型网站系统架构演化之路

news/2024/5/15 4:30:50/文章来源:https://blog.csdn.net/bestxiaok/article/details/75038288

前言

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

一、最开始的网站架构

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

大型网站系统架构演化之路

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

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

大型网站系统架构演化之路

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

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

大型网站系统架构演化之路

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

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

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

大型网站系统架构演化之路

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

五、数据库读写分离和分库分表

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

大型网站系统架构演化之路

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

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

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

大型网站系统架构演化之路

七、使用分布式文件系统

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

大型网站系统架构演化之路

八、使用NoSql和搜索引擎

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

大型网站系统架构演化之路

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

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

大型网站系统架构演化之路

十、搭建分布式服务

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

大型网站系统架构演化之路

小结

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

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

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

相关文章

瞬时响应:网站的高性能架构

什么叫高性能的网站? 两个网站性能架构设计方案:A方案和B方案,A方案在小于100个并发用户访问时,每个请求的响应时间是1秒,当并发请求达到200的时候,请求的响应时间将骤增到10秒。B方案不管是100个并发用户访…

OmniGraffle导入stencils的两个方法以及优质的stencils下载网站推荐

今天写论文,需要画几个电路结构图,可是现在是WannaCry勒索病毒正肆虐的时候,不想用教研室的win7啊!(其实只是想搞清楚mac下到底有没有visio那样好用的可以导入很多模版的画流程图结构图等的利器。。。) 之前…

36氪上的这七家程序员网站你都了解吗?

2019独角兽企业重金招聘Python工程师标准>>> 我始终相信程序员交付的不是代码,是价值,所以在万众创新下程序员成了最受伤的群体,36氪上的好的项目举不胜举,但是真正为程序员服务的都有哪些呢?让我们一起来看…

如何发布一个网站

如何发布一个网站所需材料:网站空间(服务器)、域名、FTP软件、网站源程序步骤:1、首先购买空间、域名根据自己使用的编程语言来选择合适的操作系统。如网站使用ASP.net编写的,请选用Windows系列虚拟主机。使用PHP的&am…

谈谈个人网站的建立(二)—— lucene的使用

首先,帮忙点击一下我的网站http://www.wenzhihuai.com/ 。谢谢啊,如果可以,GitHub上麻烦给个star,以后面试能讲讲这个项目,GitHub地址https://github.com/Zephery/newblog 。 Lucene的整体架构 搜索引擎的几个重要概念…

网址导航类的网站为什么会没落

今天要谈论的话题是关于网址导航的,在我看来,其实这是一种已经没落的网站行业。目前还能生存下来的网址导航有hao123网址导航、2345网址导航,除此之外,还有很多互联网公司推出了适配自己产品的网址导航,例如搜狗网址导…

网站优化怎么做?怎么才会有排名,流量收录

什么是推送? 对于SEO人员应该都不陌生吧,推送就是把网站的链接主动提交给搜索引擎, 确保新的链接可以尽快被收录,同时保护原创(防止别人抄袭,以及转载后导致自己的网站没收录) 为什么我们要去…

免费采集工具之打造网站高质量内容

搜索引擎为什么一直不收录我的网站?为什么我的网站一直没有排名是不是我网站被K了?怎么让搜索引擎快速收录我的网站呢?这是最近很多站长问我的问题,今天笔者就针对这些问题发表一些我的见解。 首先我们要知道SEO做到最后做的是什…

如何使用免费采集器实现高质量网站内容布局

Hello的大家好!昨天我分享了搜狗泛收录怎么做。今天我要分享的是关于网站免费采集器的使用以及如何利用好免费的文章采集器打造网站高质量内容,让你的网站快速收录大量收录,快速上网站SEO排名的方法攻略。 笔者作为一个SEO老油子&#xff0c…

1分钟学会网站采集方法详解

最近很多站长朋友跟我诉苦说网站采集应该怎么做,手动更新难以坚持。网站定时发布文章内容是一件必须要解决的问题,因此今天我将分享一些网站采集的技巧。非常适合想做大量收录以及高权重网站的站长。 首先很多朋友会说,纯采集可能被搜索引擎算…

搜狗批量提交软件-批量提交网站链接

最近很多做搜狗的站长朋友问我搜狗推送工具有用吗?可以批量推送吗?关于搜狗的提交方式有哪些?搜狗推送应该怎么做?搜狗收录怎么大量泛收录?有没有好的搜狗口子可以让搜狗快速收录我的网站呢? 首先搜狗推送肯…

360推送工具-批量推送360网站工具

最近很多站长问我,我的网站360一直不收录是什么原因?360收录到底应该怎么做?别人的360收录几万,几十万是怎么做的?还有实用的做360收录的工具或者说方法技巧。今天笔者统一发表一下我个人的见解。 首先我们网站发布后的…

百度SEO教程-利于百度推送工具实现百度快速收录

最近很多做百度的站长问我,百度收录怎么做?有没有什么方法让百度大量收录我的网站?百度推送到底有没有用?如何利用百度推送工具,实现百度的快速收录,这期我说下我的个人见解。 一、百度链接提交的作用 链接…

知名网站的 404 页面长啥样?你的404长啥样?

2019独角兽企业重金招聘Python工程师标准>>> 每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 我有几张阿里云幸运券…

数据收集,网站数据采集伪原创发布(图文)

数据收集,最近很多站长问我有没有好用的文章数据收集系统,因为不同CMS的文章采集伪原创发布是一件让人头痛的事。我们都知道网站的收录离不了日常的文章更新。网站有了收录之后网站的一个SEO排名才能够起来,数据收集对网站的收录起着重要的作…

网站管理之如何批量网站管理(python爬虫全网文章采集发布)

网站管理,最近很多站长问我不同CMS见得网站我们应该怎么管理,因为不同CMS的web发布接口是不一样的。我们如何实现不同网站的批量采集伪原创发布的网站管理,更重要是怎么做相应的SEO优化设置如网站文章发布之后进行一键自动批量推送给各大搜索…

网站托管,免费网站托管,全自动网站托管方法详解

网站托管,为什么我们做网站托管,做网站托管有哪些作用?第一我们网站托管之后我们不需要亲自做网站的SEO优化包括站内优化和站外优化。网站托管可以通过全网文章关键词泛采集、文章聚合、Tag标签聚合等做为文章内容来源,然后通过批…

网站维护-批量网站维护-不同CMS批量采集发布管理

网站维护,最近很多站长问我大量网站维护怎么样才能做到批量管理和维护。因为每个站对应的建站系统是不一样的,每个网站的文章自动更新是一件让人头疼的事情。市面上很少同时支持织梦、帝国、zblog、WordPress、pbootCMS等各种cms的批量采集伪原创发布已经…

网站漏洞检测工具对discuzX3.2 X3.4网站漏洞修复

2019独角兽企业重金招聘Python工程师标准>>> 2018年12月9日,国内某安全组织,对discuz X3.2 X3.4版本的漏洞进行了公开,这次漏洞影响范围较大,具体漏洞是discuz 的用户前段SQL注入与请求伪造漏洞,也俗称SSRF…

网页采集器,全自动网站采集发布(图文)

网页采集器,最近很多站长朋友问我指定网站怎么做,市场上的网页采集工具都是基本都是需要写采集规则,这需求站长朋友们会正则表达式,还有html代码基础。这对小白站长来是很难的一件事情。网页采集器可视化批量采集指定网站以及自动…