名词
性能指标 | ||
系统指标 [1] 吞吐量: 单位时间成功传送数据的量 [2] 并发量: 单位时间访问服务器的连接数 [3] 资源利用率: [4] 用户响应时间: 呈现时间+系统响应时间[网络传输时间+应用延迟时间] # 响应时间: Server接受请求,做出响应 平均值or最大值 # 呈现时间: Client 接受数据,呈现页面 服务器 QPS:Query Per Scond 每秒I查询率 QPS= C/ART
|
Cache
一、概念 |
定义: 原始数据的复制集 1原理:[1] 写入\读取速度更快的设备 [2] 缓存到离应用最近的位置 [3] 缓存到离用户最近的位置 2分类 [1] CDNCache [2] 反向代理Cache [3] 分布式Cache [4] 本地应用Cache 3媒介 [1] 中间件:Ngnix、Redis [2] 缓存内容:文件、数据、对象 [3] 缓存介质:CPU、内存(本地,分布式)、磁盘(本地、分布式) 4. 设计 缓存内容: [1] 热点数据 [2] 静态资源 缓存位置: CDN、反向代理、本地(内存、硬盘)、分布式缓存服务器 解决策略: [1] 过期策略-固定时间、相对时间、 [2] 同步机制-实时写入(推)、异步刷新(推、拉) 静态资源:页面、脚本、图片、视频、文件— [ CDN、反向代理 ] 动态资源:-应用服务器 |
二. |
一.分类 ⅠCDNCache: 最近服务器有缓存,降低网络拥塞、提高访问响应速度、命中率 ##原理: 部署-用户访问集中地区,全局负载技术,指向最近正常工作的缓存服务器。 Ⅱ反向代理Cache: 代理服务器有缓存,负载均衡、数据缓存、安全控制 ##原理: 部署-机房-代理Server, 返回静态资源,转发动态资源的请求 Ⅲ分布式Cache: 访问热点数据、减轻数据库压力 Ⅳ本地Cache : MyBatis\Hibernate 二. 职责划分 ## CDN : 存储所有的静态资源 ## 反向代理: 动静分离,缓存请求的静态资源 ## 分布式缓存: 数据库中的热点数据 ## 本地缓存: 字典等常用数据 三. 请求过程 CDN—Nginx—AppServer(LocalCache)—Redis—DB 第一步 Client发起请求,如果CDN有缓存则直接返回 第二步 如果CDN无缓存,则访问反向代理服务器,有则返回 第三步 如果Nginx无缓存,则访问应用服务器, # AppServer访问本地缓存:有则返回代理服务器,并缓存静态数据 [ 动态数据转发 ] 第四步 如果LocalCache无数据,则读取分布式缓存,返回应用服务器,缓存到本地LocalCache 第五步 如果Redis无数据,则读取数据库,并缓存在Redis 四. 常见问题 0.分布式算法 : 余数算法、散列算法 1. 数据一致性 [1] Write: 先写持久化介质,再写缓存 [2] Read: 读缓存失败,先读DB,再写回缓存 [3] Fulsh: 时效性-数据不一致时间,刷新时间 ## [1] 先写Cache再写DB 并发读-脏读 ## [2] 先写DB再写Cache 并发读-读不到 ## [3] 缓存异步刷新 不同步问题 ## 其他方法: 超时、刷新 2. 缓存高可用: 分布式[-数据海量,一致性Hash算法]、复制[-节点高可用,异步] 3. 缓存请求 缓存穿透: 请求Key不存 —— 缓存空数据,key有数据后,清除空数据缓存 缓存雪崩: 大量Key失效 —— 规划失效时间、评估负载压力DB、多级缓存、过载保护、应用层限流 缓存穿刺: 4. Redis Mecache MongoDB 数据安全:文件存放路径、加密、模糊。配置文件 密码:MD5加密,多套对称加密算法。密码表示字段L1:模糊字段,节省磁盘及后续传输消耗 |