如何设计业务高性能高可用计算架构
1、多级缓存架构
2、分布式缓存
2.1、原始数据缓存
四种数据缓存写入策略:
1、先写缓存后写存储;2、先写存储后写缓存;3、先删缓存再写存储;4、先删缓存再写存储再删缓存
应用场景:
实时性要求高、读多写少
设计核心:
如何保证数据一致性:使用本地表或者消息队列记录删除缓存失败的消息,然后通过重试删除操作
2.2、计算结果缓存
应用场景:
计算量大但实时性要求不高
设计核心:
缓存有效期与结果新鲜度的平衡
3、缓存架构问题
3.1、缓存穿透
解决方案:
空值缓存
缓存当前数据
缓存预热
模拟请求触发系统生成缓存,实现比较复杂
后台按照规则指生成缓存,实现工作量大
灰度发布/预发布触发系统生成缓存(推荐)
随机失效
3.2、缓存雪崩
解决方案:
更新锁
后台更新
3.3、缓存热点
解决方案:
多副本缓存
动态决策或人工干预
4、负载均衡
4.1、四级负载均衡
根据性能需求和维护复杂度,选择合适的负载均衡
4.3、负载均衡算法
随机/轮询
加权轮询
加权轮询
负载优先
基本原理:负载均衡系统将任务分配给当前负载最低的服务器,这里的负载根据不同的任务
类型和业务场景,可以用不同的指标来衡量。
适用场景:
1. LVS 这种 4 层网络负载均衡设备,可以以“连接数”来判断服务器的状态,服务器连接数越大,表明服务器压力越大。
2. Nginx 这种 7 层网络负载系统,可以以“HTTP 请求数” 来判断服务器状态(Nginx 内置的负载均衡算法不支持这种方式,需要进行扩展)。
性能优先
基本原理:将任务分配给当前性能最好的服务器,性能衡量的标准主要是响应时间
适用场景:Nginx 这种 7 层网络负载系统,可以以“HTTP 响应时间” 来判断服务器状态
(Nginx 内置的负载均衡算法不支持这种方式,需要进行扩展)
Hash
基本原理:基于某个参数计算 Hash 值,将其映射到具体的服务器。
适用场景:
1. 有状态的任务,例如购物车;
2. 任务是分片的,例如某个用户的请求只能在某台服务器处理。
4.4、常见的负载均衡
1、Nginx:
2、LVS:
3、DNS
4.5、业务负载均衡
业务负载均衡是指基于业务内容的,更灵活。
常见的方法:
Cookie
自定义 HTTP Header
HTTP query string
评论