大型网站问题的解决方案

大型网站问题的解决方案

  1. 大并发

    答:可以使用服务分层架构实现,主要使用的技术是负载均衡器。

    分层:

  2. 单服务器

    b. 简单分层

    c. 集群(负载均衡集群)

    场景模拟:

    实现图:

    ?

    负载均衡器常见实现:

  3. 硬件:f5 ,立竿见影,效果明显,价格昂贵,主要游戏公司,银行使用,20w左右单台

  4. 软件:nginx(七层)和lvs(四层,性能更好)

    1. nginx也是一个高性能
    2. lvs 章文嵩

    ?

    负载均衡算法

  5. 轮询:一个一个轮着来,像一个圆环
  6. 加权:能者多劳,配置强的完成多的请求
  7. ip_hash:拿用户的IP多服务器的台数取模,余数是几,就交个几号服务器处理

    ?

    常见集群:

    集群:为了完成某一个特定功能的(web服务)而使用多台服务器搭建一个架构

    ?

    LB:负载均衡集群(使用负载均衡)

    HA:高可用集群(备份服务器,keepalive、heartbeat)

    HP:高性能集群(软件:Hadoop)做大数据计算处理

    ?

  8. 大流量

    1. 在浏览器端对数据实现缓存(304 not modified)

    当用户第一次访问之后,然后将数据缓存到本地的浏览器里面,下次访问的时候直接从浏览器获取(速度快,节省流量)

    简单的配置使用:利用Apache的expires 模块实现对静态数据的浏览器缓存

    1. 配置Apache的httpd.conf文件

      1. 在虚拟主机里面增加如下配置信息,要重启Apache

        可以参照Apache手册

      2. 浏览器访问

        注意:常见的如京东也使用了该技术

        注意:如果有些图片不希望缓存(验证码,gif图片,png图片)

        这个时候可以使用Apache的header模块,可以设置某些资源不缓存

        配置:

        1. 打开Apache的httpd.conf文件

        1. 在虚拟主机里面增加一段,重启Apache

        #配置gif图片不缓存

        # 设置响应头,告诉浏览器不能缓存,必须重新请求

        <filesMatch \.(gif)$>

        header set cache-control "no-store,must-revalidate"

        </filesMatch>

      3. 访问

        通过上面的分析,发现gif图片是没有被浏览器缓存的。

        ?

    ?

    1. 在服务器端对数据实现压缩

      注意:需要先知道浏览器支持哪些压缩格式

    1. 使用压缩工具去出静态文件里面的空格或者注释

      1. http://tool.oschina.net/jscompress

        效果:

        b) ????可以使用互联网网上提供的一些压缩后的静态资源信息

        http://www.bootcdn.cn/

      2. 使用Apache的deflate模块实现

        1. 配置

        ?

        1. 在虚拟主机使用,重启Apache

        # 使用服务器的压缩

        <IfModule mod_deflate.c>

        # 压缩级别 可选值 1-9 推荐6

        DeflateCompressionLevel 6

        #对于PDF 、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,

        #反而可能会因为增加CPU的处理时间及浏览器的渲染问题而降低性能。所以没必要再通过deflate压缩

        ?

        AddOutputFilterByType DEFLATE text/plain

        AddOutputFilterByType DEFLATE text/html

        AddOutputFilterByType DEFLATE text/xml

        ?

        </IfModule>

    ?

    1. 浏览

    使用前:

    使用后:

    ?

    总的配置文件

    <VirtualHost *:80>

    DocumentRoot "D:\vhost\local.order.com"

    ServerName local.order.com

    <Directory "D:\vhost\local.order.com">

    Options Indexes FollowSymLinks

    AllowOverride All

    Order allow,deny

    Allow from all

    </Directory>

    #浏览器缓存配置

    #开启缓存的配置

    ExpiresActive on

    #针对jpeg图片设置缓存 access 代表缓存的时间是从服务器响应的那一刻开始计算,还有一个参数 modification 服务器端文件上一次修改的时间

    # plus 必填

    # NUMBER 代表时间

    # 单位 月

    ExpiresByType image/jpeg "access plus 12 months"

    #针对html文件设置缓存

    ExpiresByType text/html "access plus 24 months"

    ?

    #配置gif图片不缓存

    # 设置响应头,告诉浏览器不能缓存,必须重新请求

    <filesMatch \.(gif)$>

    header set cache-control "no-store,must-revalidate"

    </filesMatch>

    <IfModule mod_deflate.c>

    # 压缩级别 可选值 1-9 推荐6

    DeflateCompressionLevel 6

    #对于PDF 、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,

    #反而可能会因为增加CPU的处理时间及浏览器的渲染问题而降低性能。所以没必要再通过deflate压缩

    AddOutputFilterByType DEFLATE text/plain

    AddOutputFilterByType DEFLATE text/html

    AddOutputFilterByType DEFLATE text/xml

    </IfModule>

    </VirtualHost>

    ?

    1. 减少http请求

      将多个js或者css文件合并成一个文件之后在传递,对于http请求来说,每一次的请求既有响应头也有响应主体,将多个请求合并之后,至少可以减少响应头的信息的传递

    d)????使用cdn技术

    离用户访问最近的同一运营商下的服务器提供的静态资源。本质上没有减少流量,只是把流量转移到别的服务器上,但是可以加速网站的访问。

时间: 2024-08-05 15:07:23

大型网站问题的解决方案的相关文章

大型网站瓶颈及解决方案

大型网站面临的问题: 海量数据处理 大型网站每天的数据量可能上百万,甚至上千万或更多.如果存在设计不好的多对多关系,在前期可能没有任何问题,但是随着用户增长,数据量会以几何级数增加.此时,对于一个表的select和update(还不用说多表联合查询)的成本是非常高的. 数据并发处理 死锁在高并发情况下存在的概率非常高,这时使用缓存仍是一个大问题.因为在整个应用范围下,缓存是全局共享的.当两个或者多个请求同时对缓存有更新要求时,尽管我们有lock机制,但并不是很灵验,应用程序还是会直接死掉. 文件

大型网站数据库解决方案

对于大型网站系统而言,有三个难以逾越的难题: 1.数据资源已近乎等同生存资本,如何保障网站数据不丢失? 2.网站业务停服带来巨大经济损失,如何构建多级高可用? 3.高并发流量带来的系统压力激增,系统如何应对? 阿里云云数据库RDS沉淀阿里巴巴集团多年数据库技术,深耕各行业数据库解决方案,对网站系统的各级难题均有可靠的应对策略.   一.网站数据安全      数据安全已经成为一家网站赖以生存的资本,尤其对于电商网站而言,数据近乎等于直接的生存资源.近日国内某知名电商网站也遭遇了拖库危机,可见数据

通用大型网站页面静态化解决方案

大型网站架构技术系列收藏文章更新列表 http://www.cnblogs.com/ruthon/p/4477899.html  多个文件服务器读写,这里可采用SMB协议 页面静态化,可采用freemarker开源框架 如果考虑到大量的读写请求,则将请求分布式或采用调度的办法来解决 第一点我们首先应该考虑文件服务器与静态页面的映射关系,即什么文件应该读写到哪台服务器,这个关系最简单的办法是随机映射,然后将映射关系保存到数据库中即可,SMB常用的操作代码如下: public static bool

大型网站架构系列:负载均衡详解

面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题.从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统.分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,我们可

大型网站架构系列:负载均衡详解(1)

面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题. 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统.分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,我们

《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.可伸缩与可扩展-傻傻分不清楚 上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性.那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚. (1)扩展性(Extensibiltiy) 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力.我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭.也就说,当系统新增一个功能时

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构核心原理与案例分析》阅读笔记-01

通过阅读该书籍我们能够更加清楚的树立大型网站的的技术发展历程,剖析大型网站技术架构模式,深入的讲述大型互联网架构核心原理,并通过一些典型的技术案例来讲述大型网站开发全景视图,该书籍深入的阐述了各种大型网站面临的各种架构问题及解决方案. 在第一章第一篇大型网站架构演化中了解到与传统企业应用系统相比,大型互联网应用系统具有高并发大流量.高可用性.海量数据.用户分布广泛,网络情况复杂.安全环境恶劣.需求快速变更,发布频繁.渐进式发展等特点:大型网站架构演化发展历程经历了初始阶段的网络架构它的应用程序.

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

最近刚刚读完李智慧的<大型网站技术架构-核心原理与案例分析>,对每章重点内容作了一些笔记,以便加深印象及日后查阅. 一.大型网站软件系统的特点 高并发,大流量:需要面对高并发用户,大流量访问. 高可用:系统7X24小时不间断服务. 海量数据:需要存储.管理海量数据,需要使用大量服务器. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击. 需求快