高性能and高可用思想

读张开涛———《亿级流量-网站架构核心技术》所得。

1. 高并发

1.1 缓存技术

1.1.1 应用级缓存

1.1.2 HTTP缓存

1.1.3 多级缓存

1.1.4 连接池

1.2 队列技术

2. 高可用

2.1 限流技术

2.1.1 限流算法

2.1.1.1 令牌桶算法

  • 按照固定的速率添加令牌—————>限制的是平均流入速率,允许一定程度的突发流量。

2.1.1.2 漏斗算法

  • 按照固定的速率处理请求————->常量流出速率,平滑突发流入流量。

2.1.1.3 计数器(粗暴)

2.1.2 应用级限流

2.1.2.1 限流总并发、连接、请求数

2.1.2.2 限流总资源数

2.1.2.3 限流某一个接口的总并发、请求数

2.1.2.4 限流某一个接口的时间窗请求数

2.1.2.5 平滑限流某一个接口的请求数

2.1.3 单机限流

2.1.3.1 Guava限流

  • Guava RateLimiter———-限制时间窗口内的凭据速率
    • 平滑突发限流(SmoothBurst)
    • 平滑预热限流(SmoothWarningUp)
    • 主要方法:RateLimiter.create()和limiter.acquire()

2.1.4 分布式限流

2.1.3.1 Ngnix+Lua

2.1.3.2 Redis+Lua

​ 思路上就很粗暴!!!比如当前限流为10000QPS/s,直接将当前秒作为key,每一个请求到达的时候都将这个key自增,当一个请求将其自增到10000后,就拒绝访问!这里一个关键的技巧就是将当前的时间的秒作为key!具体的实现见张开涛的《亿级流量网络架构核心技术》p75—-“分布式限流”

2.1.5 接入层限流

2.1.6 节流

在特定的时间窗口内对于重复的相同事件最多只处理一次,或者希望限制多个连续相同的事件最小执行时间间隔,可以使用节流(Throttle)实现,防止多个相同的事件连续执行。

2.2 负载均衡和反向代理

2.3 隔离技术

2.4 降级技术

2.5 超时和重试

2.6 回滚

2.7 压测和预案

-------------本文结束感谢您的阅读-------------
我知道是不会有人点的,但万一有人想不开呢?