大型网站系统架构分析大型网站系统架构分析

news/2024/5/21 22:21:57/文章来源:https://blog.csdn.net/weixin_30512785/article/details/98250864

 

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性?

首先讨论一下大型网站需要注意和考虑的问题。

  • 数据库海量数据处理:负载量不大的情况下select、delete和update是响应很迅速 的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索 引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。
  • 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。
  • 文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高 并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京, 可能在云南或者海南的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。

接下来讨论大型网站的底层系统架构,来有效的解决上述问题。

毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。

大型网站系统架构

下面,就从服务器操作系统与Web服务器、数据库、服务器集群与负载均衡、缓存、独立的图片服务器、其它等几个方面来分析大型网站的系统架构。

服务器操作系统与Web服务器

最底层首先是操作系统。好的操作系统能提高好的性能、稳定性和安全性,而这些对大型网站的性能、安全性和稳定性都是至关重要的。

  • 淘宝网(阿里巴巴): Linux操作系统 + Web 服务器: Apache
  • 新浪:FreeBSD + Web 服务器:Apache
  • Yahoo:FreeBSD + Web 服务器:自己的
  • Google: 部分Linux + Web 服务器:自己的
  • 百度:Linux + Web 服务器: Apache
  • 网易:Linux + Web 服务器: Apache
  • eBay: Windows Server 2003/8 (大量) + Web 服务器:Microsoft IIS
  • MySpace: Windows Server 2003/8 + Web 服务器:Microsoft IIS

由此可见,开源操作系统做Web应用是首选已经是一个既定事实。在开源操作系统中Linux和FreeBSD差不太多,很难说哪个一定比另外一个要 优秀很多、能够全面的超越对手,应该是各有所长。但熟悉Linux的技术人员更多些,利于系统管理、优化等,所以Linux使用更广泛。而Windows Server和IIS虽然有的网站使用,但不开源,而且需要购买微软的一系列应用产品,限制了其使用。总之,开源操作系统,尤其是Linux做Web应用 是首选已经是一个既定事实。

常用的系统架构是:

  • Linux + Apache + PHP + MySQL
  • Linux + Apache + Java (WebSphere) + Oracle
  • Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库

数据库

因为是千万人同时访问的网站,所以一般是有很多个数据库同时工作的,说明白一点就是数据库集群和并发控制,数据分布到地理位置不同的数据中心,以免发生断电事故。

主流的数据库有Sun的是MySQL和Oracle。

Oracle是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能和安全性,可以处理相对海量的数据。而MySQL是一款非常优秀的开源数 据库管理软件,非常适合用多台PC Server组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能),每单位的数据存储成本也非常的低廉。用多台PC Server安装MySQL组成一个存储节点阵列,通过MySQL自身的Replication或者应用自身的处理,可以很好的保证容错(允许部分节点失 效),保证应用的健壮性和可靠性。可以这么说,在关系数据库管理系统的选择上,可以考虑应用本身的情况来决定。

MySQL数据库服务器的master-slave模式,利用数据库服务器在主从服务器间进行同步,应用只把数据写到主服务器,而读数据时则根据负载选择一台从服务器或者主服务器来读取,将数据按不同策略划分到不同的服务器(组)上,分散数据库压力。

服务器集群与负载均衡

服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,而网络负载均衡则将工作负载在这些主机间进行分配。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性 ;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。

常用的服务器集群和数据库集群负载均衡实现方法:

  • Citrix NetScaler的硬件负载均衡交换机做服务器集群的负载均衡。
  • MySQL Proxy做MySQL服务器集群的负载均衡并实现读写分离。其实现读写分离的基本原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。
  • CDN (Content Delivery Network): 几乎在各大网站都有使用该技术。例如,使得你的网站在各省市访问更快,其原理是采取了分布式网络缓存结构(即国际上流行的web cache技术),通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过DNS负载均衡的技 术,判断用户来源就近访问cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的 加速器,以达到快速、可冗余的为多个网站加速的目的。

缓存

众所周知,使用缓存能有效应对大负载,减少数据库的压力,并显著提高多层应用程序的性能,如果某个用户多次请求同一资源,则可以从缓存返回该资源, 从而避免了重新从服务器或数据库请求该资源而产生的系统开销。缓存可以通过减少获取请求的资源所需的时间,提高应用程序性能。缓存还可以通过减少到服务器 的往返次数,降低网络通信量。尽管缓存可以提高性能,但它也增加了返回到应用程序的资源可能变得陈旧的风险。这意味着,返回的资源可能与假设没有使用缓存 的情况下,服务器有可能发送的资源并不完全相同(即取得“脏数据”)。

即便如此,简单的缓存策略也能大大提升网站性能。例如,Youtube把首页最新的视频列表缓存60秒,也就是说60秒内并发的request都是从缓存读取的,大大减少了数据库压力。再加上CDN,使得Youtube首页的并发访问速度很快。

单机内存缓存、文件缓存、数据库缓存等的策略都是可以很简单的实现的,例如可以使用微软的Caching Application Block,但如何在集群环境中使多个缓存、多层缓存并保存同步是个重大问题。大型网站一般都使用缓存服务器群,并使用多层缓存。业内最常用的有:

  • Squid cache,Squid服务器群,把它作为web服务器端前置cache服务器缓存相关请求来提高web服务器速度。Squid将大部分静态资源(图片,js,css等)缓存起来,直接返回给访问者,减少应用服务器的负载
  • memcache,memcache服务器群,一款分布式缓存产品,很多大型网站在应用; 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable。因为通常网站应用程序中最耗费时间的任务是数据在数据库的检索,而多个用户查询相同的SQL时,数据库压力会增大,而通过 memcache的查询缓存命中,数据直接从memcache内存中取,每次缓存命中将替换到数据库服务器的一次往返,到达数据库服务器的请求更少,间接 地提高了数据库服务器的性能,从而使应用程序运行得更快。它通过基于内存缓存对象来减少数据库查询的方式改善网站系统的反应,其最吸引人的一个特性就是支 持分布式部署。有关memcache,以下文章可以参考:参考1,参考2,参考3官方站点。
  • e-Accelerator,比较特殊,PHP的缓存和加速器。是一个免费开源的PHP加速、优 化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的 PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高 达10倍。

独立的图片服务器

无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了。具备独立的图片服务器或者服务器集群后,在 Web 服务器上就可以有针对性的进行配置优化。

其他

一个互联网应用,除了服务器的操作系统,Web Server软件,应用服务器软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系统、文件存储系统(图片服务器,视频服务器,管理服务 器,RSS和广告服务器等等)、全文检索、搜索、等等。会在以后介绍。

转载于:https://www.cnblogs.com/rongkang/p/4531494.html

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

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

相关文章

换服务器影响网站排名,换服务器对网站排名有影响吗?

很多站长朋友也许都会碰到这个问题,由于网站要备案从而要把数据搬移到其他服务器上去,都会先在网上搜索一下相关的信息,怕更换过后的服务器IP发生了更改,会影响百度蜘蛛的对网站的爬行,继而影响网站的收录和排名&#…

让你的网站免费支持 HTTPS 及 Nginx 平滑升级

为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密。简单点说在 HTTP 协议下你的网站是光着身子在奔跑,但到了 HTTPS 下你穿了一件衣…

PHP网站漏洞poc,ThinkPHP-5.0.23新的RCE漏洞测试和POC

TP5新RCE漏洞昨天又是周五,讨厌周五曝漏洞,还得又得加班,算了,还是先验证一波。新的TP5RCE,据说发现者因为上次的RCE,于是又审计了代码,结果发现的。TP5也成了万人轮啊。测试环境搭建windows下p…

商城网站优化

在一次正常的活动促销之后,客服开始陆续反馈有用户反应在抢标的时候打不开网页或者APP,在打开的时候标的就已经被抢光了,刚开始没有特别的上心,觉得抢标不就是这样吗,抢小米手机的时候也不就这样吗?随着活动…

php 架构的网站 如何上传.sql文件到远程主机并用它部署数据库,技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库...

上个月 (英文),我讨论了新的(免费的)数据库发布向导,它是设计来充分简化在web主机环境中上传和部署 SQL Express 和 SQL Server数据库的。在 第一个关于数据库发布的贴子 (英文)里 ,我示范了你如何可以使用数据库发布向导自动生成 .SQL 安装文…

网站服务器间歇性打不开,网站打不开的常见原因之域名解析问题

建站是为了更好地进行宣传,引导访客订阅或成交消费,如果网站经常打不开,用户体验就会很差,对企业的影响也很大。相信大多数人都有类似的经历,兴致勃勃打开一个网站,结果半天没有响应,好不容易打…

iframe 无权限 不通网站_神马蜘蛛池 - 网站内页不收录的原因分析

原出处:最蜘蛛池原文链接:http://www.zuizhizhu.com神马蜘蛛池 www.zuizhizhu.com 快速提高网站收录、外推收录,百度蜘蛛池、搜狗蜘蛛池、360蜘蛛池、神马蜘蛛池、繁殖池、权重池;最蜘蛛池35台智能服务器,每天超千万蜘…

服务器上网站管理系统登录,云服务器管理平台 使用标准登录方式登录

WebShell 为腾讯云推荐的登录方式。无论您的本地系统为 Windows,Linux 或者 Mac OS,只要实例购买了公网 IP,都可以通过 WebShell 登录。本文介绍如何使用标准登录方式(WebShell)登录 Linux 实例。WebShell 优点如下:支持快捷键复制…

httppost传递内容过大_网站内容页的SEO排名技巧

SEO优化的意图是获取查找引擎流量,但在SEO履行中却需求分阶段周期进行,以此确保SEO方案的可行性以及SEO进程的可控性。按照引流的意图进行SEO进程倒推,想要获取查找引擎流量,需求的是关键词排名,获取关键词排名首先要确…

python网站登录爆破登录_用python爆破某会员网站

暑假在家上网,qq群里一位好友给我说他想要某个网站的会员,ps(是个小网站),本着助人为乐的精神我去踩了点。。。是吗然后就有了思路(骚操作)先讲一下思路1 .先注册用户登录2.flidder抓包3.python 模拟登录4.在评论区抓取评论的用户名5.弱密码爆…

用户体验分析:以 “师路南通网站” 为例

1、目标 针对师路南通,开展UX分析。PS:对比公众号;UMU学习平台(umu-umu)、学生安全教育平台(xueanquan123) *基于实例分析,体会用户体验设计的7条准则。 *功能测试脚本及Bug报告。 2…

wps怎么投递简历发到boss直聘_BOSS直聘、前程无忧、智联招聘……实测这个网站投简历效果好!...

又到了一年一度的“金三银四”招聘季作为职场人大家是不是开始蠢蠢欲动计划跳槽了?可那么多打着不同招牌的招聘网站伴随着海量的工作信息到底哪个网站最适合自己找工作投简历呢?今天,小编就带大家进入“非诚勿扰”之招聘网站专场看看哪个网站…

cms的html调用,浅谈CMSEasy企业网站内容调用经验

首先,打开CMSEasy免费企业网站的后台管理界面,选择“模板”,点击左侧“当前模板编辑”,在出现的内容也中,找到index.html找到index.html后,点击编辑,出现下图所示在出现上图内容后,烦…

门户网站建设方案ppt_智慧园区应用系统建设方案(ppt)

智慧园区总体规划设计方案(ppt)智慧园区整体规划设计方案(ppt)智慧园区总体架构解决方案(ppt)智慧园区整体规划设计方案(ppt)智慧园区大数据平台市县解决方案(图文)智慧工业园区安防集成系统总体方案(ppt)智慧园区公共服务云平台建设方案(ppt)智慧创业园区整体规划建设方案(ppt…

php 心愿墙系统源码,php开发表白墙 |源码|微信表白|微信表白墙|吐槽墙|心愿墙|网站留言板源码...

php开发表白墙 |源码|微信表白|微信表白墙|吐槽墙|心愿墙|网站留言板源码告白墙程序使用说明下载之后,文件目录如下:Forlove :程序核心文件夹;Public :样式图片 JS 文件夹,logo图片文件在这里面&#xff1b…

php系统网站安全吗,网站安全性设置

为了提高网站安全性,通常有服务器环境的安全策略和软件的安全策略,我们cms属于软件安全策略,并且支持多种方案:1、重命名后台入口文件在根目录找到默认的admin.php,任意命名一个名称即可,以后你就访问新名字…

艾宾浩斯计划表自动生成网站_施工进度计划表不会做?18个横道图自动生成模板,直接在线编辑...

施工进度计划表不会做?18个横道图自动生成模板,直接在线编辑对于工程建设来说,施工进度横道图在工程进度计划制定、项目管理等方面被广泛的应用,也是管理人员必须要掌握的技能,在编制的时候还是很繁琐的,需…

网站能拿到其他网站的cookie_网站标题这样写就能让你网站快排

网站SEO标题在搜索引擎优化中,是极其重要的存在。它甚至决定了网站排名的速度,决定了网站排名的位置,决定了我们抓取的用户类型。下面就给大家培训一下标题,教你们如何写出,快速排名的网站SEO标题。标题这样写让你的排…

php自动截屏,利用PhantomJS 自动截图Kibana ,phpmailer发送网站运营日报

如题,先来张最终效果运营日报下面介绍下实现过程【前期准备】kibana配置视图,并做好条件过滤视图,这里就是做介绍,可以参考博文,视图做好后生成一个短链接,这里我们生成的是http://10.0.0.110:5601/goto/4d…