浅谈千万级PV/IP规划高性能高并发网站架构51CTO博客 - 乐橙lc8

浅谈千万级PV/IP规划高性能高并发网站架构51CTO博客

2019年04月04日15时52分01秒 | 作者: 旭炎 | 标签: 网站,架构,拜访 | 浏览: 2689

原创作者:老男孩linux实战运维训练组织 老男孩 QQ:31333741
   阐明:几个月前老男孩发过一次相似的文章,本次为了参与一个朋友约请的活动,略微完善了一下,欢迎各位同仁一同沟通网站架构技能。

 
文章架构简图:

  高并发拜访的中心准则其实就一句话“把一切的用户拜访恳求都尽量往前推”。

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

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

    说起来很轻松,实践做起来却不简略,但只需稍加尽力是能够做到的,Google的日独立IP过亿不也做到了么?咱们这几千万的PV站比起Google不是小屋见大屋了。咱们仍是先从咱们的小屋搭起吧!哈哈!下面内容的介绍起点是千万等级的PV站,也能够支撑亿级PV的网站架构。

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

有人会问,咱们老是说把用户对事务的拜访往前推,究竟怎样推啊?推到哪呢?下面,老男孩就为咱们逐个道来。

第一层:首先在用户阅读器端,运用Apache的mod_deflate紧缩传输,再比方:expires功用、deflate和expires功用运用的好,就会大大提高用户体会效果及削减网站带宽,削减后端效劳器的压力。当然,办法还有许多,这儿不逐个细谈了。

提示:有关紧缩传输及expires功用nginx/lighttpd等软件相同也有。

第二层:页面元素,如图片/js/css等或静态数据html,这个层面是网页缓存层,比方CDN(效果比公司自己布置squid/nginx要好,他们更专业,价格低廉,比方快网/CC等(价格80元/M/月乃至更低)并且掩盖的城市节点更多),自己架起squid/nginx cache来做小型CDN是次选(超大规划的公司或许会考虑危险问题实施自建加购买效劳结合),除非是为前端的CDN供给数据源效劳,以减轻后端咱们的效劳器数据及存储压力,而不是直接供给cache效劳给最终用户。taobao的CDN从前由于一部分图片的次寸大而导致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等等。

依据不同的事务需求,挑选合适详细事务的数据库。关于memcache、memcachedb ttserver及相关nosql数据库,能够在第四层经过程序来完成对本层完成分布式拜访,每个分布式拜访的节点都或许是一组负载均衡(数十台机器)。

第六层:数据库层,一般的不是超大站点都会用mysql主从结构,如:163,sina,kaixin都是如此,程序层做分布式数据库读写别离,一主(或双主)多从的办法,拜访大了,能够做级连的主从及环状的多主多从,然后,完成多组负载均衡,供前端的分布式程序调用,假如拜访量在大,就需求拆事务了,比方:我再给某企业做兼职时,发现相似的51cto的一个站点,把www效劳,blog效劳,bbs效劳都放一个效劳器上,然后做主从。这种状况,当事务拜访量大了,能够简略的把www,blog,bbs效劳别离各用一组效劳器拆分隔,这种办法运维都会的没啥难度。当然拜访量在大了,能够持续针对某一个效劳拆分如:www库拆分,每个库做一组负载均衡,还能够对库里的表拆分。需求高可用能够经过drbd等东西做成高可用办法。关于写大的,能够做主主或多主的MYSQL REP办法,关于ORACLE来说,来几组oracle DG(1master多salve办法)就够了,11G的DG能够象mysql rep相同,支撑读写别离了。当然可选的计划还有,mysql cluster 和oracle 的RAC,玩mysql cluster和oracle RAC要需求更好更多的硬件及布置后的很多保护本钱,因而,要归纳考虑,到这儿拜访量还很大,那就祝贺了,最少是几千万以上乃至上亿的PV了。

象百度等巨型公司除了会选用惯例的mysql及oracle数据库库外,会在功能要求更高的范畴,很多的运用nosql数据库,然后前端在加DNS,负载均衡,分布式的读写别离,最终依然是拆事务,拆库,。。。逐渐细化,然后每个点又能够是一组或多组机器。

特别提示:数据库层的硬件好坏也会决议拜访量的多少,尤其是要考虑磁盘IO的问题,大公司往往在性价比上做文章,比方中心事务选用硬件netapp/emc及san光纤架构,关于资源数据存储,如图片视频,会选用sas或固态ssd盘,假如数据超大,能够采纳热门分取分存的办法:如:最常拜访的10-20%运用ssd存储,中心的20-30%选用sas盘,最终的40-50%能够选用廉价的sata。

第七层:千万级PV的站假如规划的合理一些,1,2个NFS SERVER就足够了。我所保护(兼职)或阅历过的上千万PV的用NFS及一般效劳器做存储的还有大把,多一些磁盘,如SAS 15K*6的,或许用dell6850,搞几组 NFS存储,中小网站足够了。当然能够做成drbd+heartbeat+nfs+a/a的办法。

假如能到达本文规划要求的,中等规划网站,后端的数据库及存储压力会十分小了。 象门户网站等级,如XX等, 会选用硬件netapp/emc等等硬件存储设备或是san光纤同路,乃至在性价比上做文章,比方中心事务选用硬件netapp/emc及san光纤架构,关于资源数据存储,如图片视频,会选用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以上,其间部分学生上任于淘宝、阿里巴巴、百度、腾讯、和讯、高兴网、人人、激动网、小米科技、马铃薯、酷六、sohu、sina、金山、尚德,相聚网、蓝港,chinacache,快网、帝联,漫游、赶集、拉手网,窝窝团、作业工场、联通、电信、乐视、乐淘、启明星斗,寻医问药,高德,360等公司。

其他活动:

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

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

老男孩现在从事作业:

1) 老男孩linux运维实战训练组织精英办学(面试经过方可入学)。

2)供给企业技能训练及技能参谋效劳。

3)供给各种网站体系架构(数据库)解决计划。

4)供给linux技能方向企业雇员双向猎头、HR。

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

6)Linux网站运维从初级到高档架构的书本写作作业。

联系办法:

网名:老男孩

QQ号:31333741(参谋咨询) 

信箱:31333741@qq.com

训练咨询:

咨询:QQ: 70271111 31333741

电话:18911718229

个人博客:

年度十大出色IT博客)

个人微博:

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

http://weibo.com/oldboy8

QQ群:

老男孩训练沟通群  208160987 226199307  44246017

网站运维沟通群: 114580181 45039636 37081784 180056518 76612019  1619852

网站运维司理沟通群 226200791(非司理等级莫入)

代表著作:

老男孩浅谈怎么看待运维?

 

老男孩在创业及训练中28条感悟语录共享!

 

批量分发办理3种简略、易用的解决计划事例视频共享

 

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

 

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

 

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

 

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

 

一道有用linux运维问题的9种shell回答办法!

 

Linux体系根底网络装备老鸟精华篇

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章