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

  • Post author:
  • Post category:其他




第1篇



大型网站架构演化

大型网站架构技术的核心价值是随网站所需灵活应对

驱动大型网站技术发展的的主要力量是网站的业务发展


网站架构设计误区

  • 一味追随大公司的解决方案,一句话“淘宝就是这样做的”…
  • 为了技术而技术,网站架构是因业务而存在,除此之外毫无意义。技术选型和架构设计中,

    脱离网站业务发展的实际,一味追求时髦新技术

    ,可能会将网站技术发展引入崎岖小道,架构之路越走越难。
  • 企图用技术解决所有问题,业务的问题,也可以考虑用业务手段去解决



大型网站架构模式



网站架构模式

  • 分层(横向)
  • 分割(纵向)
  • 分布式

    • 分布式应用和服务
    • 分布式静态资源
    • 分布式数据和存储
    • 分布式计算(map-reduce等)
  • 集群
  • 缓存

    • CDN
    • 本地缓存
    • 分布式缓存
  • 异步
  • 冗余
  • 自动化
  • 安全



大型网站核心架构要素

  • 性能

    衡量网站性能有一系列指标,重要的如:响应时间、TPS、性能计数器等
  • 可用性

    包括:部分服务器宕机是否可用;开发、发布过程的高可用(通过

    预发布验证

    、自动化测试、自动化发布、

    灰度发布

    等手段,减少bug流入线上的可能性,避免故障范围扩大)
  • 伸缩性

    主要标准:是否可以用多台服务器构建集群,是否容易向集群中添加服务器。
  • 扩展性

    主要标准:网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不同产品之间是否耦合,其他产品的功能不受牵连被迫进行改动
  • 安全性



第2篇 架构



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



1 网站性能测试



性能测试指标
  • 响应时间

    主要是平均响应时间,请求总响应时间/请求总次数

  • 并发数

    指系统能够同时

    正常

    处理请求的数目。

    推算在线用户数和各功能场景的并发用户数很重要,这些指标将成为系统非功能设计的重要依据。

    测试并发请求可以增加随机等待时间,称为思考时间。

  • 吞吐量

    指单位时间内系统处理请求的数量,体现系统的整体处理能力。

    如:“请求数/秒”、“访问人数/天”、“TPS(每秒事务数)”、“HPS(每秒HTTP请求数)”、“QPS(每秒查询数)”



2 应用服务器性能优化



分布式缓存

网站性能优化第一定律:优先考虑使用缓存。

  • 基本原理

    将热数据存储在

    相对

    较高访问速度的存储介质中,以供系统使用。

    一方面访问速度快,另一方面,节省数据计算时间,不用每次查询都计算一次。
  • 合理使用缓存

    缓存带来的好处很多,但不合理使用造成的问题可能会更大。

    1)频繁修改的数据勿用缓存

    读写比至少大于2,否则缓存没有意义,只会徒增服务器压力

    2)非热数据勿缓存

    缓存数据要遵循“二八原则”,缓存空间有限,需要合理利用;防止无价值数据排挤掉有价值的数据

    3)数据不一致与脏读

    开发时要考虑业务场景,是否能接受数据“最终一致”

    4)

    缓存可用性


    现实中,很可能大量应用缓存,

    数据库相关服务已经“习惯”了有缓存顶在前面的日子,当缓存服务奔溃时,数据库可能因不能承受如此大的请求压力而宕机。

    这种情况称为

    缓存雪崩

    ,发生这种故障时,甚至不能简单重启缓存和业务服务器恢复网站访问。

    实践中,有的网站利用缓存双写热备等手段来提高缓存服务的可用性,但这种解决方案显然有违缓存的设计初衷(特性),

    缓存根本不应该当做一种可靠的数据源来使用。


    通过分布式缓存服务器集群,将缓存数据分布到集群中多台服务器上,一定程度上改善了缓存的可用性。当其中一个节点宕机时,只有部分缓存数据丢失,重新计算、加载这部分数据并不会对数据库造成”雪崩”的影响。

    5)缓存预热

    热点数据

    warm up


    6)缓存穿透

    如果因不恰当的业务代码、或恶意攻击持续高并发的请求某个不存在的数据,由于缓存中没有保存该数据,所有请求都落到数据库上,会对数据库造成较大压力,甚至崩溃。简单的应对策略是,将这种“无效数据”也存入缓存。(这里更多可能性是业务方面的问题)


异步操作



版权声明:本文为dch9210原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。