《大型网站技术架构》学习总结(3)

性能优化优化

 1、Web性能前端
 (1)减少Http 请求
     每次Http请求都需要建立通信链路层进行数据传输,在服务端要对应一个线程处理,可以通过合并CSS、合并JS文件、合并图片等手段,讲一次访问所需的资源合成一个文件,多个请求合成一个,若有多张图片连接,可通过CSS偏移相应鼠标点击操作,构造不同的URL。
 (2)使用浏览器缓存
     CSS和图标等静态资源更新的频率比较低,使用次数比较大,还存在溜拉起中,可以改善性能,通过设置HTTP头的Cache-Control和Expires属性,设定浏览器缓存属性。在更新这些文件时,可以分批次更新,有时间间隔,避免短时间内大量缓存的更新,造成负载骤增。

(3) 启用压缩
    Gzip压缩。

(4)CSS放在页面文件的最上面,JS文件放在最下面
    浏览器在下载全部CSS文件后会对整个页面进行渲染,让浏览器尽快下载CSS,而JS加载后就会运行,所以放在最后,如果要页面解析要用到JS,就别放在底部了。

(5)减少Cookie传输
     不要把静态资源的访问写入cookie。

(6)CDN加速
    CDN能够缓存的一般是静态资源,如JS文件,CSS文件,JS文件,静态页面等等。

这里写图片描述

(7)反向代理
    反向代理位于机房一侧,代理WEB服务接受HTTP请求并转发请求,可以保护网站安全,还可以配置缓存功能,当浏览器第一次访问静态资源时,资源被缓存在反向代理服务器上,当其他用户访问这些资源时,可以直接返回,加速响应速度。

2、应用服务器性能优化
    (1)分布式缓存
        缓存是一张Hash表,以键值对的形式存储,通过键Key对应的Hash表索引,可以快速找到数据,根据时间局部性和空间局部性原理,以及80%的访问落在20%的资源上,将这20%的数据缓存起来,可以提高访问效率。
        但缓存如果存储频繁修改的数据,就会造成数据失效的情形,还要用缓存淘汰算法把历史数据清理出去,若数据不一致
        可以通过缓存热备提高缓存可用性,当某台缓存服务器宕机时,将缓存访问切换到备用服务器。
        要小心缓存穿透,如果不断请求一个不存在的数据,那么就会到数据库中查找数据,对数据库造成压力。
        分布式缓存架构,以集群的方式提供缓存服务,有以JBoss Cache为代表的需要更新同步的分布式缓存,和以Memcached为代表的不互相通信的分布式缓存。
        JBoss Cache的分布式缓存在集群中所有的服务器保存相同的缓存数据,当缓存数据改变时时,会通知其他机器更新或删除,将应用程序和缓存部署在同一台服务器上,可以从本地快速获取缓存数据,但缓存的数量有限,集群规模大时不实用。

这里写图片描述
Memcached采用集中式的缓存集群管理,缓存与应用程序分离部署,应用程序通过算法选择缓存服务器远程访问缓存数据,可伸缩性强。
这里写图片描述

    3、使用异步操作
        使用消息队列使得调用异步化,如activeMQ ActiveMQ、RabbitMQ等等,用户请求的数据发送给消息队列后返回,再由消息队列的进程获取数据,进行操作。
    4、使用集群
    使用负载均衡构建一个服务器集群,多个服务器处理访问请求。
    5、代码优化
    (1)使用多线程
    线程数的估算公式可以参考这个:
        线程数=任务启动时间/(任务执行时间 - IO等待时间)*CPU内核数
    最佳启动线程数和CPU内核成正比,和IO阻塞时间成反比,如果是计算性任务,那线程数不超过内核数。要注意线程安全问题。
    (2)资源复用
     减少大开销的系统资源的创建和销毁,如数据库连接、线程。网络通信连接等等,可以使用单例和对象池等技术。
     (3)数据结构
     灵活组合数据结果改善数据读写和计算性能。
     (4)垃圾回收

存储性能优化
1、硬盘
机械硬盘和固态硬盘,现在的固态死贵了。。。买不起啊。。。
2、B+树和LSM树
文件系统和数据库系统一般都会对数据进行排序然后存储,加快数据检索速度,保证数据在不断更新、插入和数据后依然有趣,传统关系型数据库使用的是B+树,以树节点为单位存储在磁盘中,从根开始查找所需数据所在的结点编号和磁盘位置,将其加载到内存中然后继续查找,使用两级索引的B+树,输的层次最多三层,可能需要五次磁盘访问才能更新一条记录。
NoSQL数据库使用LSM树,N阶合并数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值