包含两部分:
1.前端性能 其本质就是通过各种技术手段去优化用户实际感受到的前端页面展现时间。
前端性能优化的方法是相对标准的,工具如PageSpeed、Yslow等,都能系统性地分析前端的性能问题,并给出对应的解决方案建议。
2.后端性能 01:后端服务器的高性能架构,业内采用的最主要的技术手段是缓存。 02:集群,也可以从计算能力的角度,提升后端的处理性能。
缓存: 凡是想要提高性能的场合都会使用到缓存的思想。 如果缓存中的数据是经过复杂计算得到的,那么再次使用被缓存的数据时,就无需再重复计算即可直接使用。从这个意义上讲,缓存还具有降低后端运算负载的作用。
启用了缓存后,当应用程序需要读取数据时,会先试图从缓存中读取: 如果读取成功,即缓存命中,可以在很大程度上降低访问数据库的时间开销。 如果没有读取到数据或者缓存中的数据已经过期失效,那么应用程序就会访问数据库去获取相应的数据。获取到数据后,在把数据返回给应用程序的同时,还会把该数据写入到缓存中,以备下次使用。
缓存主要用来存储那些相对变化较少,并且遵从“二八原则”的数据。 这里的“二八原则”指的是 80% 的数据访问会集中在 20%的数据上。 缓存技术并不适用于那些需要频繁修改的数据
缓存的作用是辅助提升数据的读取性能,即便缓存丢失或者过期失效,不影响系统的可用,但可能会因为在短时间内带来很大的访问压力使数据库宕机,如果出现这种情况,可以使用缓存热备技术,把缓存切换到热备的缓存服务器上。 另外,如果采用的是分布式缓存服务器集群,那么缓存被分布到不同的服务器上,即便一台宕机,也只会丢失一部分缓存数据,通过数据库来重建这些缓存的开销也不至于太大。
分布式缓存架构的主流技术方案: JBoss Cache Memcached ------主流
-------有关缓存的测试设计 001:对于前端,需要考虑缓存命中、不命中的的页面加载时间 002:缓存过期,会重新从数据库获取数据,并重建缓存 003:由于重启,导致缓存丢失的场景,会重新读取数据库的数据,重建缓存 004:经常会遇到缓存脏数据,即数据库的数据已更新,但缓存还没更新 005:缓存穿透,访问的数据并不存在,所以这些数据永远不会被缓存,所以会一直访问数据库 006:系统冷启动后,在系统预热阶段,数据库的访问压力是否会超过数据库的实际承受能力 007:对于分布式缓存集群,如果要增加更多节点进行扩容,是否会对原有的缓存数据产生影响? 008:针对架构中不同的位置使用的缓存,做不同的测试设计。
集群: ----------牲口模式 负载均衡器接收外部请求,根据算法,把请求分配到集群中的某台 其中一台宕机也没关系 可以随时撤掉某台机器 如果不够的话可以再进行扩容
----------宠物模式 不通过集群,而是性能强劲的服务器
-------有关集群的测试设计 001:如果扩容,是否会对原有的session产生影响 002:当其中一个机器或者多个宕机时,对用户的影响 003:对于无状态的应用,系统的吞吐量,是否会随着集群中节点的数量呈线性增长 004:负载均衡的算法是否符合预期 005:集群中的机器宕机后再恢复,是否产生负面影响 006:高并发时,集群能够承载的最大容量