网站架构常用的优化方法

一、基础架构

       C/S架构   B/S架构

二、TCP/IP模型
    自上而下分为了:
        应用层      : 使用接收到的数据
        传输层      : 实际传输数据
        网际互连层  : 找到要传输数据的目标节点
        网络接入层  :将需要相互连接的节点接入到网络中,从而为数据传输提供条件。

        BS架构的TCP/IP模型中网络接入层没有响应协议,网际互连层是IP协议,传输层是TCP协议,应用层是HTTP协议。
        数据传输过程中最核心的是各种传输协议,对直接连接的硬件来说是各种数据总线协议,对网络传输来说是网络协议。
    B/S架构解决速度问题的核心主要是解决海量数据操作问题和高并发问题。
三、海量数据操作的解决方案
    1、缓存和页面静态化
        缓存就是将从数据库中获取的结果暂时保存起来,下次使用时无需重新从数据库获取。
        缓存的两种使用方式:
            内存:  程序直接操作的主要是Map,尤其是ConcurrentHashMap
            缓存框架:  常用框架Ehcache、Memcache和Redis等。
        缓存使用过程中最重要的是确定什么时候创建缓存和缓存的失效机制
            缓存创建: 第一次获取时创建、程序启动时创建、缓存失效之后立即创建
            缓存失效: 定时失效、数据变化时失效
        * 使用缓存时最重要的就是确定缓存创建和失效的机制
        页面静态化
        页面静态化类似缓存就是将程序最后生成的页面保存起来,使用页面静态化后不需要每次调用重新生成页面。
        页面静态化主要在程序中使用模板技术生成,常用的如Freemarker和Velocity,另外可以在应用服务器的上一层缓存生成的页面,可以使用Squid和Nginx
    2、数据库优化
        表结构优化

            根据具体业务对表结构进行优化
        SQL语句优化
            记录SQL语句执行时间,仔细分析执行日志,找出优化重点
        表分区
            数据有一定的规律性,例如通常按日、月、年等进行分区
        分表
            通常按业务来拆分表,例如大型网站的用户表,可以按活跃用户一张表、非活跃用户一张表,并定时进行表数据迁移
        索引优化
            需要按具体业务进行分析,确认是否使用索引,因为所以会提高查询数据同时会降低增删改的速度
        使用存储过程代替直接操作
            存储过程只需编译一次,可以进行一系列复杂操作。
    3、分离活跃数据
        例如活跃用户非活跃用户分离、网站热点文章分离
    4、批量读取和延迟修改
    5、读写分离
        读写分离本质是对数据库进行集群,这样在高并发情况下将数据操作分配到多个数据库服务器中从而降低单台服务器压力。数据库集群最核心的就是数据同步,一般情况下
        会将写数据专门交给一台服务器,该服务器称为主服务器,通过主服务器向从服务器同步数据。
        通常的同步方式包括:数据库的热备份、另外专门的软硬件配合
    6、分布式数据库
        分布式数据库就是将不同的表存放在不同数据中然后再放到不同服务器。实际使用中分布式数据库有很多复杂问题需要解决,如事物处理、多表查询等。
    7、NoSQL和Hadoop
        将数据库的结构化数据进行非结构化
        Hadoop将一张表中的数据分为多个块保存到多个节点,而且每个块有多个节点保存,这样集群可以并行处理相同的数据,还可以保证数据的稳定性。
四、高并发的解决方案
    1、应用和静态资源分离
        将静态资源主要包括图片、视频、Js、css和一些资源文件,这些没有状态的文件直接存放到相应的服务器。一般使用专门的域名进行访问。
    2、页面缓存
        将应用生成的页面缓存起来,这样就不用每次请求重新生成页面。可以使用Ngnix服务器的缓存功能,或者使用专门的Squid缓存服务器。
        页面缓存的默认失效机制一般是按缓存时间处理的,同时也可以进行手工时效。
        有部分经常改变数据页面的缓存?
        可以将页面静态化处理,然后通过Ajax请求读取并修改相应的数据。
    3、集群与分布式
        集群是每台服务器负责相同的功能,分布式是将不同的业务放到不同的服务器中,处理一个请求可能需要到多台服务器。
        集群有两种方式:一种是静态资源集群。另一种是应用程序集群。
        集群中最重要的问题是数据的同步,即Session同步。
        Session同步有两种处理方式:
            在Session发生变化时自动同步到其他服务器.Tomcat默认使用该方式
            用一个程序统一管理Session. 该方式可以通过Memcached等方式来统一管理Session并通过重写Request覆盖getSession方法获取指定服务器的Session
        另外一种Session同步的解决方法,可以按照用户IP进行服务器分配,这样就不需要服务器的Session同步了。
    4、反向代理
        用户请求到来后,反向代理服务器来确定哪台服务器来处理用户请求。
    5、CDN
        CDN是一种特殊集群页面缓存服务器,当接收用户请求后会将请求分配到最合适的CDN服务器结点获取数据。
    6、底层的优化
        例如传输协议,HTTP/2协议
    

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值