`
晃点大尾巴狼
  • 浏览: 74902 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

千万级pv架构设计(转)

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

如果把来访用户比作来犯的"敌人",我们一定要把他们挡在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的方式。

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

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

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

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

相关推荐

    千万PV高性能高并发网站架构图

    一例千万级pv高性能高并发网站架构图,包括CDN、全局负载均衡、本地负载均衡、内网DNS、集群、Hadoop集群、数据库集群、缓存集群、NOSQL集群等

    千万级高并发架构

    在设计千万级PV的Web架构时,需要对CDN(内容分发网络)进行深入理解。CDN的作用是将源站的内容分发到最接近用户的节点,通过减小内容传输距离和延迟,来提高用户体验和访问速度。CDN在网络中的具体实现和操作,例如...

    WEB网站千万级访问架构演变之路

    ### WEB网站千万级访问架构演变之路 #### 一、引言 随着互联网技术的发展与普及,网站访问量呈现爆发式增长。为了应对这种变化,网站架构必须经历一系列的演变过程来适应不同规模的访问需求。从最初简单的单机模式...

    教你搭建日PV千万级的网站集群架构教程合集-绝对的极品教程.zip_spark集群搭建步骤

    教你搭建日PV千万级的网站集群架构-绝对的极品教程.zip 阿里P8架构师谈 苏宁六年企业IT架构的演进之路 大并发大型网站架构设计 大型网站架构演化 大型分布式网站架构技术总结 Nginx负载均衡4种策略

    web架构设计

    内容包括 1. 千万 pv 级架构设计 2. HTTP 协议分析 3. apache 优化 4. lamp 优化 5. nginx 发现代理,缓存,负载均衡 6. nginx 优化 7. varnish 8. memcache 9. redis

    PV千万级大型系统的建设方案.docx

    在IT领域,构建PV千万级的大型系统是一项复杂的工程,需要考虑系统架构的扩展性、稳定性和性能优化。本文将深入探讨如何使用开源技术来构建这样的系统,并重点关注以下几个核心知识点: 1. **多层级集群**: - ...

    阿里云构建千万级别架构演变之路.doc

    文章的作者,乔锐杰,拥有丰富的运维和架构经验,包括在阿里云担任架构师的角色,主导过多个千万级用户的上云项目。 在架构的原始阶段,系统通常依赖于单一的ECS(Elastic Compute Service,阿里云的弹性计算服务)...

    新浪博客架构分享.ppt

    1. **新浪博客简介**:新浪博客作为一个Web2.0动态应用类网站,具有超过五年的运营历史,拥有千万级别的用户和几十亿的数据记录,每日处理十亿级的页面浏览量(PV)和亿级的动态请求。 2. **挑战**: - **亿级访问...

    PublicCMS是一个现代化java cms,轻松支撑千万数据、千万PV;支持静态化,服务器.rar

    由天津黑核科技有限公司开发,支持多站点,支持多语言,支持国产数据库,架构科学,轻松支持上千万数据、千万PV;支持全站静态化,SSI,动态页面局部静态化等为您快速建站,建设大规模站点提供强大驱动,也是企业级...

    垂直行业网站服务器架构方案概要.doc

    SOLR服务能支持千万级以上的数据量,并具备弹性扩展能力。 4. CPS:1台,满足初期流量需求,可随时扩容。 5. Web/MySQL:2台主从,配置要求较高,能够随时扩展。保障前端服务的稳定运行。 这种最佳架构的最大优势...

    芯片规划与设计(3学时).ppt

    - **先进制程技术**:具备65nm级别的设计能力,能够实现千万门级的复杂度。 - **具体案例**: - **Samsung 6410**:一款基于ARM架构的高性能SoC,适用于移动设备。 - **Samsung S5PV210**:专为Android平板电脑...

    2009系统架构师大会PPT:邱跃鹏:海量SNS网站的柔性运营

    针对千万级用户的在线需求、数十亿次的日访问量以及复杂的服务体系,演讲者提出了柔性运营的概念,并从质量、速度和成本三个方面进行了详细阐述。 #### 二、海量SNS网站的特点 海量SNS网站具有以下几个显著特点: ...

    PublicCMS:现代化的Java cms,由天津黑核科技有限公司开发,轻松托管千万数据,千万PV;支持静态化,服务器端包含;目前已经拥有全球0.0002%的用户,语言支持中,繁,日,英;是一个已走向海外的成熟CMS产品

    由天津黑核科技有限公司开发,架构科学,轻松支持上千万数据,千万PV;支持全站静态化,SSI,动态页面局部静态化等为您快速建站,建设规模站点提供强大驱动,也是企业级项目产品原型的良好选择。获取原始码 参与开发...

    PHP秒杀系统 高并发高性能的极致挑战.txt

    假设我们需要构建一个支持千万级PV的秒杀系统,以下是一些具体的实现思路和技术方案: - **前端页面**:使用静态资源和CDN加速技术,提高页面加载速度;同时可以通过JavaScript实现前端的秒杀倒计时功能,提高用户...

    大数据平台解决方案(参考模板).docx

    1. **高负载和海量数据处理**:大数据平台基于云存储和云计算,能够承受千万级 PV 访问压力,支持亿级用户和 E8 级数据存储,处理TB级数据增量,满足实时业务需求。 2. **实时处理能力**:平台实现了秒级实时性,...

    Public CMS 2017.0527.zip

    架构科学,轻松支持上千万数据、千万PV;支持全站静态化,SSI,动态页面局部静态化等为您快速建站,建设大规模站点提供强大驱动,也是企业级项目产品原型的良好选择。Public CMS 2017.0527 更新日志:1.指令获取数组...

    大数据平台解决方案(参考模板).pdf

    该解决方案以云存储为基础,利用云计算的处理能力,构建了一个能够处理千万级PV访问、支持亿级用户以及E8级别数据存储(如日志、图片、文档、影音等)的平台。它具备以下关键特点: 1. **高负载和海量数据处理**:...

    大数据平台解决方案.pdf

    1. **高负载和海量数据处理能力**:大数据平台基于云存储和云计算,能处理千万级PV的访问压力,支撑亿级用户和E8级别的数据存储,包括日志、图片、文档等各种类型的数据。它能有效地处理TB级增量数据,满足实时业务...

Global site tag (gtag.js) - Google Analytics