• 《大型网站技术架构:核心原理与案例分析》读书笔记二


    第四章 瞬时响应:网站的高性能架构

    网站性能是客观指标,也是主观感受;
    网站性能测试
    性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量指标;
    • 不同视角下的网站性能:用户视角(优化手段:优化页面HTML样式、利用浏览器端的并发和异步特性、调整浏览器的缓存策略、使用CND服务、反向代理等);开发人员(关注响应延迟、系统吞吐量、并发处理能力、系统稳定性;优化手段:使用缓存加速数据读取、使用集群提高系统吞吐能力、使用异步消息加快请求响应以及削峰、代码优化);运维人员(关注基础设施性能和资源利用率,如网络运营商的带宽能力、服务器硬件配置、数据中心网络架构、服务器和网络带宽的资源利用率等,优化手段:建设优化骨干网、使用高性价比定制服务器、使用虚拟化技术优化资源利用率等)

    • 性能测试指标:开发人员的视角:响应时间(重复请求取均值)、并发数(系统能够同时处理的请求的数量)、吞吐量(单位时间内系统处理的请求数量;TPS:每秒事务数;HPS:每秒HTTP请求数;QPS:每秒查询数)、性能计数器(指标:System Load、对象与线程数、内存使用、CPU使用、磁盘与网络IO等)

    • 性能测试方法:性能测试、负载测试、压力测试、稳定性测试

    • 性能测试报告

    • 性能优化策略:性能分析进而性能优化

    Web前端性能优化
    • 浏览器访问优化:减少HTTP请求(合并CSS,合并JS、合并图片);使用浏览器缓存(将CSS、JS、图标等静态文件缓存在浏览器中。更新静态资源时,采用批量更新的方法);启用压缩(在服务器端对文件进行压缩,在浏览器端对文件解压缩);CSS放在页面最上面,JS放在页面最下面;减少Cookie传输;

    • CDN加速,CDN可以最短路径返回响应;缓存静态资源;

    • 反向代理

    应用服务器性能优化
    • 分布式缓存

    • 异步操作

    • 使用集群

    • 代码优化

    存储性能优化
    • 机械硬盘vs.固态硬盘,机械硬盘快速顺序读写、慢速随机读写;连续访问(数据存储在连续的磁盘空间上),随机访问(数据存储在不连续的磁盘空间)

    • b+树vs.LSM树,为了改善数据访问特性,文件系统或者数据库系统通常会对数据排序后再存储,加快数据检索速度,

    • RAIDvs.HDFS

    想要解决高并发的问题,肯定会导致低并发的时候有一定性能的影响。用户体验的快或是慢,可以通过技术手段改善,也可以通过优化交互体验改善。


    第五章 万无一失:网站的高可用架构

    一、网站可用性的度量与考核
    • 网站可用性度量

    • 网站可用性考核

    二、高可用的网站架构
    (1)高可用的应用
    • 通过负载均衡进行无状态服务的失效转移:不能管理好session

    • 应用服务器集群的Session管理:session服务器。分为无状态的应用服务器和有状态的Session服务器

    (2)高可用的服务:服务器分级,重要的模块用好的处理快的服务器,超时设置,异步调用,服务降级等。
    (3)高可用的数据
    • CAP原理

    • 数据备份

    • 失效转移

    (4)高可用网站的软件质量保证

    • 网站发布

    • 自动化测试

    • 预发布验证

    • 代码控制

    • 自动化发布

    • 灰度发布

    (5)网站运行监控

    • 监控数据采集

    • 监控管理


    第六章 永无止境:网站的伸缩性架构

    网站架构的伸缩性设计

    • 不同功能进行物理分离实现伸缩:比如流程上的不同部分,数据库、缓存、基础技术等

    • 单一功能通过集群规模实现伸缩

    应用服务器集群的伸缩性设计

    • HTTP重定向负载均衡:优点是比较简单。缺点是浏览器需要两次请求服务器才能完成一次访问,性能较差

    • DNS域名解析负载均衡:大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段。

    • 反向代理负载均衡

    • IP负载均衡

    • 数据链路层负载均衡

    • 负载均衡算法:轮询,加权轮询,随机,最少连接,源地址散列。

    分布式缓存集群的伸缩性设计

    • Memcached分布式缓存集群的访问模型

    • Memcached分布式缓存集群的伸缩性挑战

    • 分布式缓存的一致性Hash算法

    .数据存储服务器集群的伸缩性设计

    • 关系数据库集群的伸缩性设计

    • NoSQL数据库的伸缩性设计:HBase为可伸缩海量数据储存而设计,实现面向在线业务的实时数据访问延迟。

  • 相关阅读:
    云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算
    乐观锁 与 悲观锁 来解决数据库并发问题
    Python二维数组构造
    一次问题追查----短字符串签名算法引发的bug
    C++ assert 断言使用
    并查集(Union-Find)算法
    linux shell grep/awk/sed 匹配tab
    C++ 变量默认初始值不确定(代码测试)
    linux 查看机器内存方法 (free命令)
    html table奇偶行颜色设置 (CSS选择器)
  • 原文地址:https://www.cnblogs.com/znjy/p/15950952.html
Copyright © 2020-2023  润新知