原理描述
全局缓存通过前后台分离、IO聚合和智能预取三大创新技术,实现IO路径缩短、写缓存不失效和缓存命中率提高。三大创新技术实现原理如下。
- 前后台分离
全局缓存将端到端IO处理路径划分为前台和后台两部分,前台部分保证最快响应应用的读/写请求,应用只会感知到缓存前台部分的执行时间,后台部分的执行时间应用不感知。针对数据写入请求,cache前台会将业务数据通过WAL的形式存储在非易失介质中,然后立刻response给应用,对应业务来说写请求就执行完成。cache后台,异步的将业务数据聚合后,批量下刷到后端存储POOL,完成数据写入全流程。数据读取请求,直接在读cache pool中获取数据,然后返回给应用。 cache后台会根据业务workload,提前将数据从存储pool预取到读cache pool中,保证读请求能命中。同时缓存前台的处理流程,实现了零上下文切换,达到最小程度软件开销,保证低时延。
- IO聚合
写入存储介质的workload不同,会严重影响介质的性能发挥。以HDD(Hard Disk Drive)介质为例,Ceph集群每块HDD处理随机4K的请求,只能达到150 IOPS左右,换算成带宽是600KB/s。将workload改变为顺序1M的请求,HDD盘可达100MB以上带宽,相比于随机4K请求, HDD盘带宽提升了160多倍。真实的业务场景,数据workload就是大小不同,顺序性不同的各种请求;IO聚合特性就是将各种访问地址随机,块大小不同的数据整合成4M/8M的大块IO,然后顺序的写入后端存储磁盘,这样就能保证后端存储介质性能大幅提升,同时根据系统最大IOPS规格匹配相应数量的HDD盘,就可以保证写cache永远不会被写穿。同时为了避免IO聚合后的读放大,IO聚合功能的元数据管理支持部分数据按需读取。
- 智能预取
智能预取技术,主要工作原理为,解析应用发起读请求的pattern,进行访问行为匹配,比如顺序流、逆序流、间隔流、热点流、关联流等,如果匹配成功,就能提前预判业务可能会读取的数据,将这些数据提取从后端存储pool读取到cache pool中。为了更加准确的预取数据,pattern匹配、预取门限、预取长度等参数都会根据读cache命中率的负反馈,进行实时动态调整。目前经过多种真实业务负载的测试,读缓存命中率可以达到80%左右。