大型网站架构设计学习笔记 1

2019-07-23  本文已影响0人  路亚历克斯

挑战与架构目标

大型网站的主要挑战是:大容量(请求量大/数据量大[海量数据])、高并发(峰值并发大)、高可用(724业务不中断)、强安全*!!!

熔断(服务级、网关)

  1. 熔断指当系统中的某个服务出现异常,如调用超时不可用时,熔断对该服务的调用、并且后续调用直接返回,待该服务恢复后再恢复调用的机制。

    • 如5秒内20次调用失败即启动熔断机制
    • 每隔5秒放通部分调用,如果服务恢复正常则恢复所有调用
  2. 熔断是系统异常情况下的一种自动保护机制,防止系统雪崩。熔断由系统实时检测,满足条件自动触发。

    • 扇出:A调B、调C,B和C又调其他服务
    • 雪崩:如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,即所谓的“雪崩效应”。
  3. 主要特征:

    • 框架级实现,每个微服务都需要
    • 系统自动检测、自动触发执行、自动恢复
    • 熔断一般是某个服务故障引起

降级

  1. 指在特殊场景下(系统资源有限、处理能力不足等),主动降低业务(页面)或服务的功能范围,对非核心关键功能停止提供,如页面的某些功能(如商品详情页的评论记录只返回10条、库存不再实时查询等)或服务的某些能力,以保证核心关键部分功能可用的策略。

  2. 降级通常由人工手动触发(配置开关支持),相应方案需要针对性设计,并通常具有代码侵入性

  3. 主要特征:

    • 人工触发执行与恢复
    • 针对性的方案设计,代码侵入性
    • 对业务由层级之分,从最外围服务开始降级
    • 降级一般是从整体负荷考虑

限流

  1. 指对目标系统、服务、节点(如网关)、资源(如数据库、缓存)限制请求流量,以保护其正常可靠运行的机制。

  2. 限流通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。

  3. 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率);其他还有如限制远程接口调用速率、限制MQ的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流。

  4. 常见限流算法:漏桶、令牌桶。

注:有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。

上一篇 下一篇

猜你喜欢

热点阅读