浅谈千万级PV/IP规模高性能高并发网站架构

news/2024/5/9 22:55:23/文章来源:https://blog.csdn.net/weixin_34032792/article/details/85024601

原创作者:老男孩linux实战运维培训机构 老男孩 QQ:31333741
   说明:几个月前老男孩发过一次类似的文章,本次为了参加一个朋友邀请的活动,稍微完善了一下,欢迎各位同仁一起交流网站架构技术。

 
文章架构简图:
网站访问门户案例7层架构逻辑图

  高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。

如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部(指挥部就是数据库及分布式存储)。

如:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

    说起来很轻松,实际做起来却不容易,但只要稍加努力是可以做到的,Google的日独立IP过亿不也做到了么?我们这几千万的PV站比起Google不是小屋见大屋了。我们还是先从我们的小屋搭起吧!哈哈!下面内容的介绍起点是千万级别的PV站,也可以支持亿级PV的网站架构。

高性能高并发高可扩展网站架构访问的几个层次:

有人会问,我们老是说把用户对业务的访问往前推,到底怎么推啊?推到哪呢?下面,老男孩就为大家一一道来。

第一层:首先在用户浏览器端,使用Apachemod_deflate压缩传输,再比如:expires功能、deflateexpires功能利用的好,就会大大提升用户体验效果及减少网站带宽,减少后端服务器的压力。当然,方法还有很多,这里不一一细谈了。

提示:有关压缩传输及expires功能nginx/lighttpd等软件同样也有。

第二层:页面元素,如图片/js/css等或静态数据html,这个层面是网页缓存层,比如CDN(效果比公司自己部署squid/nginx要好,他们更专业,价格低廉,比如快网/CC等(价格80/M/月甚至更低)而且覆盖的城市节点更多),自己架设squid/nginx cache来做小型CDN是次选(超大规模的公司可能会考虑风险问题实行自建加购买服务结合),除非是为前端的CDN提供数据源服务,以减轻后端我们的服务器数据及存储压力,而不是直接提供cache服务给最终用户。taobaoCDN曾经因为一部分图片的次寸大而导致CDN压力大的情况,甚至对图片尺寸大的来改小,以达到降低流量及带宽的作用。

提示:我们也可以自己架设一层cache层,对我们购买的CDN提供数据源服务,可用的软件有varnish/nginx/squid cache,以减轻第三层静态数据层的压力。在这层的前端我们也可以架设DNS服务器,来达到跨机房业务拓展及智能解析的目的。

    第三层:静态服务器层一般为图片服务器,视频服务器,静态HTML服务器。这一层是前面缓存层和后面动态服务器层的连接纽带,大公司发布新闻等内容直接由发布人员分发到各cache节点(sina,163等都是如此),这和一般公司的业务可能不一样。所以,没法直接的参考模仿,比如人人的SNS

我们可以使用Q队列方式实现异步的分发访问,同时把动态发布数据(数据库中的数据)静态化存储。即放到本层访问,或通过其他办法发布到各cache节点,而不是直接让所有用户去访问数据库,不知道大家发现了没有,qq.com门户的新闻评论多的有几十万条,如果所有用户一看新闻就加载所有评论,那数据库不挂才怪。他们的评论需要审核(美其名约,实际是异步的方式,而且,评论可能都是静态化的或类似的静态化或内存cache的方式),这点可能就是需要51cto.com这样站点学习的,你们打开51CTO的一篇博文,就会发现下面的评论一直都显示出来了,也可能是分页的。不过,应该都是直接读库的,一旦访问量大,数据库压力大是必然。这里不是说51cto网站不好,所有的网站都是从类似的程序架构开始发展的。CU也可能是如此。

提示:我们可以在静态数据层的前端自己架设一层cache层,对我们购买的CDN提供数据源服务,可用的软件有varnish/nginx/squid cache。在这层的前端我们也可以架设DNS服务器,来达到跨机房业务拓展及智能解析的目的。

第四层:动态服务器层:php,java等,只有透过了前面3层后的访问请求才会到这个层,才可能会访问数据库及存储设备。经过前三层的访问过滤能到这层访问请求一般来说已非常少了,一般都是新发布的内容和新发布内容第一次浏览如;博文(包括微博等),BBS帖子。

特别提示:此层可以在程序上多做文章,比如向下访问cache层,memcache,memcachedb,tc,mysql,oracle,在程序级别实现分布式访问,分布式读写分离,而程序级别分布式访问的每个db cache节点,又可以是一组业务或者一组业务拆分开来的多台服务器的负载均衡。这样的架构会为后面的数据库和存储层大大的减少压力,那么这里呢,相当于指挥部的外层了。

第五层:数据库cache层,比如:memcache,memcachedb,tc等等。

根据不同的业务需求,选择适合具体业务的数据库。对于memcachememcachedb ttserver及相关nosql数据库,可以在第四层通过程序来实现对本层实现分布式访问,每个分布式访问的节点都可能是一组负载均衡(数十台机器)。

第六层:数据库层,一般的不是超大站点都会用mysql主从结构,如:163,sina,kaixin都是如此,程序层做分布式数据库读写分离,一主(或双主)多从的方式,访问大了,可以做级连的主从及环状的多主多从,然后,实现多组负载均衡,供前端的分布式程序调用,如果访问量在大,就需要拆业务了,比如:我再给某企业做兼职时,发现类似的51cto的一个站点,把www服务,blog服务,bbs服务都放一个服务器上,然后做主从。这种情况,当业务访问量大了,可以简单的把www,blog,bbs服务分别各用一组服务器拆分开,这种方式运维都会的没啥难度。当然访问量在大了,可以继续针对某一个服务拆分如:www库拆分,每个库做一组负载均衡,还可以对库里的表拆分。需要高可用可以通过drbd等工具做成高可用方式。对于写大的,可以做主主或多主的MYSQL REP方式,对于ORACLE来说,来几组oracle DG1mastersalve方式)就够了,11GDG可以象mysql rep一样,支持读写分离了。当然可选的方案还有,mysql cluster oracle RAC,玩mysql clusteroracle RAC要需要更好更多的硬件及部署后的大量维护成本,因此,要综合考虑,到这里访问量还很大,那就恭喜了,起码是几千万以上甚至上亿的PV了。

象百度等巨型公司除了会采用常规的mysqloracle数据库库外,会在性能要求更高的领域,大量的使用nosql数据库,然后前端在加DNS,负载均衡,分布式的读写分离,最后依然是拆业务,拆库,。。。逐步细化,然后每个点又可以是一组或多组机器。

特别提示:数据库层的硬件好坏也会决定访问量的多少,尤其是要考虑磁盘IO的问题,大公司往往在性价比上做文章,比如核心业务采用硬件netapp/emcsan光纤架构,对于资源数据存储,如图片视频,会采用sas或固态ssd盘,如果数据超大,可以采取热点分取分存的方法:如:最常访问的10-20%使用ssd存储,中间的20-30%采用sas盘,最后的40-50%可以采用廉价的sata

第七层:千万级PV的站如果设计的合理一些,12NFS SERVER就足够了。我所维护(兼职)或经历过的上千万PV的用NFS及普通服务器做存储的还有大把,多一些磁盘,如SAS 15K*6的,或者用dell6850,搞几组 NFS存储,中小网站足够了。当然可以做成drbd+heartbeat+nfs+a/a的方式。

如果能达到本文设计要求的,中等规模网站,后端的数据库及存储压力会非常小了。 象门户网站级别,如XX等, 会采用硬件netapp/emc等等硬件存储设备或是san光纤同道,甚至在性价比上做文章,比如核心业务采用硬件netapp/emcsan光纤架构,对于资源数据存储,如图片视频,会采用sas或固态ssd盘,如果数据超到,可以采取热点分取分存的方法:如:最常访问的10-20%使用ssd存储,中间的20-30%采用sas盘,最后的40-50%可以采用廉价的sata

象XX等巨型公司会采用hadoop等分布式的存储架构,前端在加上多层CACHE及多及的负载均衡,同样会根据业务进行拆分,比如爬虫层存储,索引层存储,服务层存储。。。可以更细更细。。。为了应付压力,什么手段都用上了。

    特殊业务,如某些SNS门户站,包括门户网站的评论,微博,大多都是异步的写入方式,即无论读写,并发访问数据库都是非常少量的。

    以上1-7层,如果都搭好了,这样漏网到第四层动态服务器层的访问,就不多了。一般的中等站点,绝对不会对数据库造成太大的压力。程序层的分布式访问是从千万及PV向亿级PV的发展,当然特殊的业务 还需要特殊架构,来合理利用数据库和存储。

老男孩讲师介绍

老男孩,资深unix/Linux系统运维网站架构专家、高级运维总监。从事一线网站运维及系统架构管理10年以上,13年的教育教学培训经历(擅长教育心理,职业规划,性格分析、谈判,职场,就业)。并将自身的网站运维架构及教育领域的经验成功结合应用到IT教育领域教学工作中。曾前后就职于若干个大规模高并发访问量的行业门户网站,并为多家互联网公司做过技术顾问,企业技术培训。提供各类网站系统架构解决方案。

老男孩linux实战培训中心是老男孩于2007年开办的国内首个linux运维实战培训私塾式精英教育培训机构。截止到2012年,累计受益学生达到千余人(其中培训VIP面授学生数百人,网络班学生数百人)。全科毕业学生平均就业工资7000以上,其中部分学生就职于淘宝、阿里巴巴、百度、腾讯、和讯、开心网、人人、激动网、小米科技、土豆、酷六、sohusina、金山、尚德,欢聚网、蓝港,chinacache,快网、帝联,遨游、赶集、拉手网,窝窝团、就业工场、联通、电信、乐视、乐淘、启明星辰,寻医问药,高德,360等公司。

其他活动:

1)  曾为《构建高可用Linux服务器》一书做首序!

2)  曾多次受邀参加51cto,CU,it168技术活动(因兼职及培训、写书,部分未参加)。

老男孩目前从事工作:

1) 老男孩linux运维实战培训机构精英办学(面试通过方可入学)。

2)提供企业技术培训及技术顾问服务。

3)提供各种网站系统架构(数据库)解决方案。

4)提供linux技术方向企业雇员双向猎头、HR

5)提供优质linux运维原创系列视频(初级,中级,高级)。

6Linux网站运维从初级到高级架构的书籍写作工作。

联系方式:

网名:老男孩

QQ:31333741(顾问咨询) 

信箱:31333741@qq.com

培训咨询:

咨询:QQ: 70271111 31333741

电话:18911718229

个人博客:

http://oldboy.blog.51cto.com2011年度十大杰出IT博客)

个人微博:

http://t.qq.com/tt31333741(运维思想分享地)

http://weibo.com/oldboy8

QQ群:

老男孩培训交流群  208160987 226199307  44246017

网站运维交流群: 114580181 45039636 37081784 180056518 76612019  1619852

网站运维经理交流群 226200791(非经理级别莫入)

代表作品:

老男孩浅谈如何看待运维?

http://oldboy.blog.51cto.com/2561410/830451

 

老男孩在创业及培训中28条感悟语录分享! http://oldboy.blog.51cto.com/2561410/827913

 

批量分发管理3种简单、易用的解决方案案例视频分享

http://oldboy.blog.51cto.com/2561410/824931

 

浅谈千万级PV/IP规模高性能高并发网站架构

http://oldboy.blog.51cto.com/2561410/736710

 

老男孩linux培训某节课前考试试题及答案分享

http://oldboy.blog.51cto.com/2561410/791245

 

老男孩之学好运维四要素“坚持”的启示分享

http://oldboy.blog.51cto.com/2561410/768712

 

学会感恩会使你回报的更多--老男孩

http://oldboy.blog.51cto.com/2561410/766212

 

一道实用linux运维问题的9shell解答方法!

http://oldboy.blog.51cto.com/2561410/760192

 

Linux系统基础网络配置老鸟精华篇

http://oldboy.blog.51cto.com/2561410/784625

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

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

相关文章

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

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

欺诈网站都注重用户体验!你,还在等什么?!

一.背景介绍 小编是北京 OneAPM 公司 Browser Insight(后文称 Bi)的运营人员,这款产品主要用处是针对网站前端页面进行性能优化,以提升用户体验,所以每天小编都要做很多运营工作,例如:写文章&am…

2012年5月法国旅游网站排名

2019独角兽企业重金招聘Python工程师标准>>> 2012年5月排名:Voyages-sncf.com居于旅游中介网站首位,ViaMichelin France居于目的地及住宿网站首位,Air France - France居于航空公司网站首位。 旅游中介 排名 网站名称 域名 访问…

html禁止f12键代码,网站禁用f12 禁止调试代码方法

正常情况下 自己的一些网站的一些代码不想被别人扒来扒去的,可以看看本方法。可以设置复制提示,禁f12,禁止调试是很有必要的当然这个防不了大佬,只能防防小学生具体方法:1、首先我们需要下载web弹层组件layer2、解压上传到服务器,…

高并发高流量的大型网站架构设计(一)

2019独角兽企业重金招聘Python工程师标准>>> Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但…

为什么用IP无法访问网站,域名可以访问?

我们访问网站都是通过域名进行访问的,偶尔会使用网站IP进行访问,如学校通常使用IP登录教务处,但很多的时候我们无法通过ip进行访问其他网站,这就涉及到服务器的问题了。 网站都是依托在服务器上面的,而服务器有很多种&…

爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

先看&#xff0c;前一期博客&#xff0c;理清好思路。 爬虫概念与编程学习之如何爬取网页源代码&#xff08;一&#xff09; 不多说&#xff0c;直接上代码。 编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv"X-UA-Compatible" con…

个人网站搭建---godaddy域名+freewebhostingarea免费空间

自己准备做一个个人网站&#xff0c;由于第一次做所以遇到了各种困难&#xff0c;现在把自己的一些经历经验贴出来供大家参考。此贴针对一个完全没有经验的菜鸟&#xff0c;大牛勿喷。 个人搭建一个网站首先要考虑的是网址&#xff08;域名&#xff09;&#xff0c;然后是你的文…

onmouseover和onmouseout在Repeater控件中应用

如果你曾看过这篇&#xff0c;http://www.cnblogs.com/insus/articles/1411057.html &#xff0c;它是在GridView控件中演示&#xff0c;但是它的方法在Repeater控件是无法复制的。由于看到论坛上有网友问及&#xff0c;花上一点点时间做了Repeater控件的演示。首先看看效果(动…

移动网站开发中常用的10段JavaScript代码

在开发移动网站过程中&#xff0c;有一些Javascript代码会经常用到。以下是10段常用的JavaScript代码。需要注意的是某几段代码需要jQuery mobile framework支持。 1.如果网页是在iPhone或Android浏览器中查看&#xff0c;则在主体元素中添加“iPhone”或“Android” 类名 Java…

构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]...

构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构] 版本&#xff1a;V1 出处&#xff1a;http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者&#xff1a;Jimmy Li 关键词&#xff1a;电子商务&#xff0c;系统架构&#xff0c…

html研究中心,seo研究中心 教程:认识HTML、css的重要性-专业SEO技

掌握HTML、css的重要性-专业SEO初级教程(27)依据之前的学习&#xff0c;确信大家早就对SEO有着一定的掌握。今天起大伙儿将正式开始SEO的学习。看到这里一些朋友或许有那般的疑虑&#xff0c;大伙儿并并不是要学习SEO吗&#xff1f;为什么讲解HTML的一些专业技能呢&#xff1f;…

SEO

SEO Search Engine Optimization :搜索引擎优化 增加被收录可能性争取在搜索结果中排名前列增加搜索引擎关键词中的排名免费方式,SEM为付费方式SEO基本知识 IP PVUV独立IP访问量 页面点击量或浏览量独立访客数&#xff08;针对客户端&#xff09;IP与UV的区别&#xff1a;同一个…

word在线解密_实用技能 | 5款免费在线转换PDF的网站

5款免费在线转换PDF的网站PDF在我们日常学习工作中用途都非常广泛&#xff0c;我们经常会有将下载的PDF文档转换为WORD或EXCEL等其他格式的文档&#xff0c;在我们经常接触到的文件都是付费的&#xff0c;使用起来需要会员&#xff0c;今天小编就为大家整理了几个免费在线转换P…

页面怎么创建一个数组_怎么创建一个企业网站?

怎么创建一个企业网站?互联网时代下&#xff0c;很多企业都纷纷搭建网站&#xff0c;网站不仅可以提高企业形象&#xff0c;还可以为企业带来盈利&#xff0c;那么怎么创建一个企业网站呢?下面小编来告诉你怎么搭建企业网站。1、网站定位做好企业网站建设的第一步是网站定位&…

bluePen – 使用在线 CSS 编辑器美化你的网站

BluePen 是一款非常强大的样式编辑工具&#xff0c;甚至可以轻松地安装在一个动态的网站中。一旦你已经安装了它&#xff0c;你就可以在任何时间&#xff0c;任何地方修改样式表&#xff0c;一切修改将实时更新到您的浏览器&#xff08;但不是线上网站&#xff09;&#xff0c;…

IIS 之 添加绑定域名 或 设置输入IP直接访问网站

1、打开IIS&#xff0c;右键站点 → 编辑绑定&#xff0c;弹出“网站绑定”窗口&#xff0c;如下图&#xff1a;2、点击“添加”&#xff0c;弹出“添加网站绑定”窗口&#xff0c;如下图&#xff1a;注意&#xff1a;若想输入 IP 地址直接访问&#xff0c;则可以有以下两种设置…

mysql和redis统计网站活跃度,最代码网站用户私信列表采用mysql union查询优化为Redis查询的经验和相关代码片段分享...

由于用户和私信的数据量逐渐增加&#xff0c;查询用户和其他用户的私信合并排重排序的sql语法给mysql带来了很大的压力&#xff0c;springdata jpa的hql查询语法如下&#xff1a;select id from (select id,target_id,case when user_id?1 and type?2 then sender else recei…

地址做域名时不能加端口_当你访问XXX网站时,从访问到内容返回呈现,中间发生了什么?...

想必不少小伙伴面试过程中&#xff0c;会遇到「当键入网址后&#xff0c;到网页显示&#xff0c;其间发生了什么」的面试题。这次&#xff0c;小林我带大家一起探究下&#xff0c;一个数据包在网络中的心路历程。每个阶段都有数据包的「心路历程」&#xff0c;我们一起看看它说…

创立一个网站的前前后后(起因,域名,云平台,备案,CDN等等)(1)

起因 写完《完美软件开发&#xff1a;方法与逻辑》这书后&#xff0c;原本想继续写书的&#xff0c;可出来参加了些社区活动后&#xff0c;我发现我写的书大家评价还行&#xff0c;但其实不太理解。而接下来想写的书更加抽象点&#xff0c;准备叫《管理的解析》&#xff0c;我一…