网站架构转帖

news/2024/5/21 0:35:20/文章来源:https://blog.csdn.net/weixin_33979203/article/details/94272682

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

http://blog.51cto.com/oldboy/775056  必回软件

 

 

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

如果把来访用户比作来犯的"敌人",我们一定要把他们挡在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网站运维从初级到高级架构的书籍写作工作。

 

转载于:https://www.cnblogs.com/tao-yuan/p/7565219.html

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

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

相关文章

兼容性问题_网站开发的自适应和兼容性问题

随着科技和网络越来越发达,人们可以使用的智能产品也越来越多,以往只是电脑,现在有手机、平板、电子书、手环等等,非常多的电子智能产品,而作为在网络市场中,占有龙头地位的网站来说,就一定要考…

配置网站负载平衡NLB(Web)

随着计算机技术的不断发展,单台计算机的性能和可靠性越来越高。但现实中还是有许多应用是单台计算机难以达到,例如: 银行存储用户数据的数据库服务器必须保证24小时不间断的运转,并在发生严重硬件故障时仍能继续提供服务。 大型We…

使用Apache服务部署静态网站

安装Apache服务程序,使用yum命令进行安装时,跟在命令后面的Apache服务的软件包名称为httpd。如果直接执行yum install apache命令,则系统会报错。启用httpd服务程序并将其加入到开机启动项中,使其能够随系统开机而运行&#xff0c…

如何使子网站拥有独立的权限设置

那么如果我们在创建子网站的时候并没有做出选择,选择的是默认的“使用与父网站相同的权限”,是否可以在子网站创建后进行修改呢?答案当然是可以的。我们先进入到子网站中,点击“网站操作”,选择“网站设置”。点击“用…

视频播放网站CDN内容分发网络简单代码实现

视频播放如果只有一台视频服务器,当访问用户过多时,服务器将承受不了负载。 所以我们需要在视频服务器下面增加边缘服务器,下面以视频服务器加三台边缘服务器为例。 网络环境图: 1. 用户可通过PC机或手机访问网站。 2. 网站将用户…

招聘SEO外链专员

为什么80%的码农都做不了架构师?>>> 招聘SEO外链实习生,在广州,有兴趣的朋友想尝试也欢迎,我们不是要你能力多强,只要肯学不怕苦!可以看下“外链专员所需要的基本要求”。 要求: 1…

Nginx的使用(一)Nginx+IIS实现一个网站绑定多个https域名

使用nginx最初的目的是为了解决iis7下无法配置多个443端口的问题,iis7下不同的域名无法同时绑定443端口,据说iis8是可以的,但是iis8的话需要安装windows server2012,成本太高,不考虑。 Nginx是一款轻量级的Web 服务器/…

【经验分享】响应式网站项目实操过程中的那些事儿

本次网站改版升级是我来到新公司的第一个项目,需求之初并没有提及要做响应式,在首次评审时领导和研发均认为响应式处理与我们网站相对契合,就这样我开始了我职场生涯中第一个响应式网站设计。下面就跟大家分享响应式网站设计中的那些事儿。因…

当网站遭遇DDOS***的解决方案及展望

当网站遭遇DDOS***的解决方案及展望一、事件发生春节长假刚过完,WEB就出现故障,下午1点吃完回来,立即将桌面解锁并习惯性的检查了Web服务器。通过Web服务器性能监视软件图像显示的向下滑行的红色曲线看到WEB出现问题了。根据上述的问题&#…

一些颜色工具网站

原文地址:http://www.ruanyifeng.com/blog/2008/07/color_tools.html作者: 阮一峰 日期: 2008年7月23日 下面是一组颜色工具网站,非常有用。 理论部分,可以参考我前几天做的颜色理论笔记。 1. ColorSchemer Gallery 网…

为 Asp.net 网站新增发送手机短信功能

为 Asp.net 网站新增发送手机短信功能本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考。 适合人群 须满足一下条件之一,如果以下3个条件您都不满足,为节约您宝贵的时间,请终止阅读本篇文章。 条件如下…

电脑技术吧_永磁技术装备事业部电脑端网站正式上线啦!!!

为适应沈阳研究院永磁技术装备事业部发展的需要,树立沈阳研究院永磁技术装备事业部的形象,满足客户通过网络了解沈阳研究院永磁技术装备事业部产品,给客户提供一个更好的在线服务,沈阳研究院永磁技术装备事业部全新电脑端网站于2020年3月20日…

apache的网站配置目录_网站后台getshell的方法总结

方法一:直接上传getshell以dedecms为例,后台可以直接上传脚本文件,从而getshell,具体方法如下:即可成功上传大马,并成功执行,从而拿下webshell。坑:通常由于权限限制,导致…

百度地图ip地址_柯桥区百度SEO优化是什么,关键词霸屏_万推霸屏

首页 > 新闻中心发布时间:2020-11-12 16:12:09 导读:万推霸屏为您提供柯桥区百度SEO优化是什么,关键词霸屏的相关知识与详情: 无论是企业网站的优化取决于网页或列页面,什么是列页面上的竞争力的关键字这两个词是指竞争力的关键…

Slog27_支配vue框架初阶项目之博客网站-样式居中

ArthurSlogSLog-27Year1GuangzhouChinaJuly 30th 2018GitHub掘金主页简书主页segmentfault没有写够足够的代码量,想成为高手是不可能的,只能纸上谈兵,但写够了代码量,纸上谈兵的也是大有人在 开发环境MacOS(High Sierra 10.13.5) …

刷新你三观!这些堪比软件的神网站你知多少

【PConline 应用】在很多人的固有印象当中,网站的作用无非就是让你看看文字看看图片看看视频,真正要干活,还是得依赖电脑上安装的软件。不过,很多朋友都不知道,实际上很多网站的功能之强大,完全不输本地安装…

seo优化源码_网站关键词SEO优化要点 - 蜘蛛池

最蜘蛛池,快速提高网站收录,百度蜘蛛池、搜狗蜘蛛池、360蜘蛛池、神马蜘蛛池、繁殖池、权重池,欢迎使用。许多企业认为,只要网站建设公司为我们完成网站, 就可以在互联网上建立品牌,最蜘蛛池小编整理发布。…

java 企业 网站源码 模版 屏幕自适应 有前后台 springmvc SSM 生成静态化

博文来源:http://www.fhadmin.org/webnewsdetail3.html前台: 支持五套模版, 可以在后台切换系统介绍:1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&#x…

google搜索引擎优化指南_什么是SEO?如何优化Google等搜索引擎?

SEO(搜索引擎优化)是通过搜索引擎的自然搜索结果优化要发现的内容的实践。好处是显而易见的:即网站能获得源源不断的免费自然流量。但是,如何优化SEO的内容,以及“排名因素”实际上重要的是什么?要回答这个…

实时视频网站架构

原文地址:http://www.csdn.net/article/2012-12-10/2812183-JustinTV_real-time_architecture摘要:实时的定义应该是延迟小于250ms,按照这个标准,实时的成功应用立马成了凤毛麟角。本文详细阐述Justin.TV实时系统的技术细节&#…