浅谈对象存储分布式缓存

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
云备份 Cloud Backup,100GB 3个月
简介: 从整体系统的架构上来考虑降低飞天盘古的请求压力,需要在对象存储业务前端系统服务层面去优化系统全局缓存,提高缓存的命中率。

使用缓存可以有效缩短数据的读取路径和降低I/O操作频次,从而提高数据的读取响应速度。对象存储在原有的单机缓存的基础上,在集群范围内构建分布式缓存,进而优化数据读取的性能。

对象存储业务层的数据存储模型是按照桶(Bucket)、对象(Object)、块(Block)三个层级来对数据进行存储管理的。针对一次对象数据读取,用户请求会通过负载均衡到业务前端系统,业务前端系统通过计算得到对象的块列表并进行遍历,请求键值存储系统获取块数据,最后将读取的块数据有序地返回给用户。

下图是用户读取数据的系统路径图,红线部分是键值存储系统直读飞天盘古优化。随着键值存储系统直读飞天盘古功能的上线开通,块数据的读取可以绕过键值存储系统,直接请求飞天盘古系统读取,这在一定程度缩短了数据读取的路径,减少了整体对象存储系统的响应时间,但是同时也使得键值存储系统路径上对数据读取的缓存优化失效,导致飞天盘古的请求压力上升。

用户读取数据的系统路径.png
用户读取数据的系统路径

另外,对象存储业务前端系统支持块数据的单机内存缓存。对于块数据读取,会优先去读取缓存,如果没有命中,就需要客户端请求键值存储系统获取数据。但单机内存缓存会由于业务前端机服务内存大小限制及负载均衡策略造成的流量发散而导致块数据的缓存命中率降低。

所以,从整体系统的架构上来考虑降低飞天盘古的请求压力,需要在对象存储业务前端系统服务层面去优化系统全局缓存,提高缓存的命中率。

典型的缓存架构包含读穿型缓存和旁路型缓存。读穿型缓存与旁路型缓存的区别在于请求方请求数据的时候,如果缓存没有命中,旁路型缓存由缓存客户端更新缓存,而读穿型缓存则由缓存服务端更新。基于业务读写数据模式,在业务前端系统的内部实现采用的是旁路型缓存,读块数据的时候,会优先去缓存中获取数据,如果没有,再调用键值存储系统客户端获取数据后更新缓存返回;而写块数据的时候,则直接通过键值存储系统客户端写入底层的键值存储系统,由键值存储系统写入飞天盘古,不做缓存更新。

下图是在现有的业务前端系统的基础上设计和实现的分布式缓存系统架构图。分布式缓存主要通过一致性哈希算法来构建全局化缓存,用虚拟化节点来优化集群数据的均衡性。对象存储的分布式缓存系统架构是去中心化的,在业务前端系统中既实现了缓存服务端功能,也同时实现了基于一致性哈希算法的全局缓存节点管理和流量处理的缓存客户端功能。

对象存储分布式缓存架构系统.png
对象存储分布式缓存架构系统

在对象存储分布式缓存系统架构中,核心系统功能支撑可以分为三个部分:管控服务、缓存服务和数据监控。

管控服务负责管理集群服务节点的信息,实时收集集群缓存服务节点的心跳,为缓存节点提供集群范围内所有的缓存节点信息,是一个支持HTTP协议的Web集群服务。

缓存服务是在原有业务前端系统服务中构建的,主要包含三个功能模块:

(1)缓存服务端
缓存服务端模块是在LRU缓存功能的基础上构建的RPC服务,对外提供块数据读取功能并且支持慢启动。

(2)缓存客户端
缓存客户端则实现了RPC客户端功能,基于集群全局节点信息,利用一致性哈希算法构建全局缓存节点的哈希环。当用户请求获取数据时,数据的读取模块会调用缓存客户端,缓存客户端会根据块的Key信息获取存储该块数据的对应缓存节点,然后发起RPC请求获取块的相应数据。

(3)节点信息管理
节点信息管理则负责定时将本节点的信息更新给管控服务端,同时也定时从管控服务端同步全局缓存节点信息。

在数据监控方面,对象存储分布式缓存实施采集分布式缓存服务端的运行数据,监控分布式缓存服务端的整体状态。另外,通过数据分析功能获取热点数据,实时分析分布式缓存服务端的业务状态,同时为分布式缓存服务端热点数据的预热提供有效的数据支撑。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
7月前
|
Cloud Native Java 开发工具
云原生 阿里云分布式文件系统 对象存储OSS 服务配置
【1月更文挑战第8天】云原生 阿里云分布式文件系统 对象存储OSS 服务配置
|
7月前
|
存储 Java 开发工具
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
710 0
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
|
7月前
|
存储 负载均衡 Cloud Native
【专栏】Minio是一款高性能分布式对象存储服务,以其易用性和可扩展性著称
【4月更文挑战第28天】Minio是一款高性能分布式对象存储服务,以其易用性和可扩展性著称,适用于存储多媒体内容。通过组建Minio集群,可实现高可用性、高性能、可扩展性和数据保护。搭建集群包括安装Minio、配置集群参数、启动节点、验证集群状态、设置访问权限及可选的数据迁移步骤。Minio集群是实现可靠且高性能存储解决方案的理想选择,适合各种应用场景。
387 0
|
存储 Kubernetes 网络协议
【分布式技术专题】「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构
【分布式技术专题】「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构
741 6
【分布式技术专题】「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构
|
存储 Cloud Native Java
Spring Boot 玩转 MinIO:轻松搭建分布式对象存储系统,提升数据管理效率
Spring Boot 玩转 MinIO:轻松搭建分布式对象存储系统,提升数据管理效率
1907 0
|
存储 缓存 NoSQL
分布式对象存储设计原理
保存像图片、音视频这类大文件就是对象存储。不仅有很好的大文件读写性能,还可通过水平扩展实现近乎无限容量,并兼顾服务高可用、数据高可靠。
595 0
|
存储 缓存 大数据
对象存储上如何重复利用高速缓存和算子下推(一)
 1 背景基于snowflake,redshift等在云上数仓的开创性工作,基于对象存储构建数据湖/数仓已经成为一股新的潮流,现在的云上数据库通常都采用计算-存储分离的架构,而不再是传统的share-nothing,这是由对象存储的的高弹性,低成本带来的优势,但是有与对象的存储特性,其在单流性能方面的弱点也很明显。目前的常见的场景中,如离线分析,基本都只能采用大规模并发的方式大量调用对象存储的AP
对象存储上如何重复利用高速缓存和算子下推(一)
|
存储 Swift 对象存储
Ceph分布式存储之对象存储
Ceph分布式存储之对象存储
328 0
Ceph分布式存储之对象存储
|
SQL 存储 缓存
数据湖实操讲解【JindoFS 缓存加速】第十三讲:Presto 访问 OSS 透明缓存加速
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播! 扫文章底部二维码入钉群,线上准时观看~ Github链接: https://github.com/aliyun/alibabacloud-jindofs
数据湖实操讲解【JindoFS 缓存加速】第十三讲:Presto 访问 OSS 透明缓存加速
|
缓存 分布式计算 Java
Spark 访问 OSS 透明缓存加速 | 学习笔记
快速学习Spark 访问 OSS 透明缓存加速。
265 0
Spark 访问 OSS 透明缓存加速 | 学习笔记

相关产品

  • 对象存储