【Distributed System】高并发(High Concurrency)

Posted by 西维蜀黍 on 2019-08-06, Last Modified on 2023-10-11

Design Levels

Consistency Models

Scalability

  • vertical scalability
  • horizential scalability

降级(Downgrade)

  • 失败次数降级:主要是一些不稳定的 API,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况
  • 超时降级(Timeout Downgrade):主要配置好超时时间和超时重试次数和机制,并使用异步机制探测回复情况
  • 限流降级(Rate Limits Downgrade):秒杀或者抢购一些限购商品时,此时可能会因为访问量太大而导致系统崩溃,此时会使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级;降级后的处理方案可以是:排队页面(将用户导流到排队页面等一会重试)、无货(直接告知用户没货了)、错误页(如活动太火爆了,稍后重试)。
  • 故障降级:比如要调用的远程服务挂掉了(网络故障、DNS故障、http服务返回错误的状态码、rpc服务抛出异常),则可以直接降级。降级后的处理方案有:默认值(比如库存服务挂了,返回默认现货)、兜底数据(比如广告挂了,返回提前准备好的一些静态页面)、缓存(之前暂存的一些缓存数据)

熔断(Circuit Breaker)也可被视为一种特殊的降级

微服务拆分

负载均衡

  • DNS 负载均衡
  • 反向代理负载均衡
    • IP负载均衡
    • 直接路由

静态资源

动态静态资源分离,静态资源使用 CDN 加速。

消息队列

镜像集群模式

削峰

消息队列具有很好的削峰作用的功能——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。

Middleware

Cache

  • 缓存与数据库的一致性问题
  • 缓存雪崩
  • 缓存穿透
  • 缓存击穿
  • Hot keys

数据库

  • SQL vs NoSQL
  • 数据库的分库分表
  • 数据库读写分离
    • 主从复制
    • Read replicas
    • CQS
  • 连接池

Reference