读大型网站技术架构---第二篇---第四章---架构优化

此书第二章主要针对架构方面怎么实现一些具体的优化手段,4.1节主要描述的是性能测试方面的,暂时不想去关注性能测试方面的知识。主要关注一下其他地方的优化手段。

4.2 Web前端性能优化

Web前端指网站业务逻辑之前的部分,包括浏览器加载,网站试图模型,图片服务,CND服务。

4.2.1. 浏览器访问优化

  1. 减少http请求
    HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路,进行数据传输,而在服务器端都需要启动独立的线程去处理。
    主要手段:合并CSS,合并JS,合并图片。
  2. 使用浏览器缓存
    缓存CSS,JS,Logo,图片等静态资源更新频率不高,缓存起来可以极大的改善的性能。
  3. 启动压缩
    在服务器对文件进行压缩,服务端进行压缩,浏览器进行解压,可以减少通信传输的数据量,在服务器资源不足的情况下进行权衡考虑。
  4. 减少Cookie传输
    Cookie在每次请求和响应中,太大的Cookie会严重影响数据传输,减少Cookie中传输的数据量。另外对于静态资源的访问,没有必要传输Cookie,因此需要考虑将静态资源用独立域名部署。

4.2.2. CDN加速
在这里插入图片描述
CDN手段主要减少资源访问所经过的路径,以最快的速度返回用户所需的静态资源。

4.2.3. 反向代理
在这里插入图片描述
反向代理服务器位于网站机房一侧,代理网站Web服务器接收Http请求,缓存一些静态内容,或者缓存一些动态热门内容,减轻后台服务器压力。

4.3 应用服务器性能优化

应用服务器就是处理网站业务的服务器,网站业务代码都不熟在这里,优化主要手段有缓存,集群,异步等。

4.3.1. 分布式缓存

  1. 缓存基本原理
    Hash表,KV格式。不多做解释。
  2. 合理使用缓存
    2.1 频繁修改的数据:大致读写比例是2:1。
    2.2 没有热点的访问:遵循二八定律,即大部分数据访问需要集中到小部分数据上。
    2.3 数据不一致于脏读:主要集中在数据失效时间和缓存更新策略,需要根据场景来决定。
    2.4 缓存可用性:缓存仅仅为了提高数据读取性能的,缓存数据丢失或者缓存不可用不能影响应用程序的处理,不能因为缓存雪崩之后导致数据库宕机。
    2.5 缓存预热:缓存中存放的是热点数据,热点数据是缓存系统利用LRU,最好是缓存系统启动时就把热点数据加载好。
    2.6 缓存穿透:之前有做过这方面的研究学习,怎么处理这种高并发的请求不存在的KV数据而导致请求压力全部落到数据库中。
  3. 分布式缓存架构
    部署多个服务器组成的集群,主要分为两种:以JBoss为代表的需要更新同步的分布式缓存;另外一种就是Mencached为代表的不互相通信的分布式缓存。
    在这里插入图片描述
    受限的地方在于缓存数据的数量受限于单一服务器的内存空间,而且当集群规模较大的时候,缓存更新信息需要同步到集群所以机器,代价很大。因此大型网站很少采用这种方式。
    在这里插入图片描述
    Memcached采用一种集中式的缓存集群管理。缓存与应用分离部署,缓存系统部署在一组专门的服务器上,引用程序通过一致性Hash等路由算法选择缓存服务器远程访问缓存数据,缓存服务器之间不通信,集群规模可以很容易实现扩容。

4.3.2. 异步操作
主要是可以将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。
在这里插入图片描述
典型的例如订单系统,利用消息队列可以有效的减少订单对系统的冲击,如下图:
在这里插入图片描述
消息队列在订单系统中需要注意:数据写入消息队列立即返回给用户,数据在后续的业务校验,写数据等操作可能失败,因此使用消息队列之后,需要修改业务流程进行配合,需要在消息队列的订单消费者进程真正处理完该订单,甚至商品出库后,再去修改订单状态。

4.3.3. 使用集群
略。
4.3.4. 代码优化

  1. 多线程
    启动线程数=[任务执行时间 / (任务执行时间- IO等待时间)] * CPU内核数。
  2. 资源复用
    单例和对象池
  3. 数据结构
  4. 垃圾回收
    主要针对的是JVM垃圾回收策略和垃圾回收算法等等调优和选择。
    4.3.4. 代码优化

4.4 存储性能优化

磁盘也是当前系统最严重的瓶颈。这边不做过多的研究和学习。(不是当前学习的主要目的)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值