浅谈对象存储分布式缓存

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 从整体系统的架构上来考虑降低飞天盘古的请求压力,需要在对象存储业务前端系统服务层面去优化系统全局缓存,提高缓存的命中率。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
存储 缓存 大数据
对象存储上如何重复利用高速缓存和算子下推(一)
 1 背景基于snowflake,redshift等在云上数仓的开创性工作,基于对象存储构建数据湖/数仓已经成为一股新的潮流,现在的云上数据库通常都采用计算-存储分离的架构,而不再是传统的share-nothing,这是由对象存储的的高弹性,低成本带来的优势,但是有与对象的存储特性,其在单流性能方面的弱点也很明显。目前的常见的场景中,如离线分析,基本都只能采用大规模并发的方式大量调用对象存储的AP
对象存储上如何重复利用高速缓存和算子下推(一)
|
缓存 应用服务中间件 nginx
Nginx代理阿里云OSS图片 并设置缓存
Nginx代理阿里云OSS图片 并设置缓存
1477 0
|
缓存 分布式计算 Java
Spark 访问 OSS 透明缓存加速 | 学习笔记
快速学习Spark 访问 OSS 透明缓存加速。
218 0
Spark 访问 OSS 透明缓存加速 | 学习笔记
|
SQL 缓存 分布式计算
Presto 访问 OSS 透明缓存加速 | 学习笔记
快速学习 Presto 访问 OSS 透明缓存加速。
313 0
Presto 访问 OSS 透明缓存加速 | 学习笔记
|
SQL 存储 缓存
数据湖实操讲解【JindoFS 缓存加速】第十三讲:Presto 访问 OSS 透明缓存加速
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播! 扫文章底部二维码入钉群,线上准时观看~ Github链接: https://github.com/aliyun/alibabacloud-jindofs
数据湖实操讲解【JindoFS 缓存加速】第十三讲:Presto 访问 OSS 透明缓存加速
|
存储 SQL 缓存
数据湖实操讲解【JindoFS 缓存加速】第十二讲:Spark 访问 OSS 透明缓存加速
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播! 扫文章底部二维码入钉群,线上准时观看~ Github链接: https://github.com/aliyun/alibabacloud-jindofs
数据湖实操讲解【JindoFS 缓存加速】第十二讲:Spark 访问 OSS 透明缓存加速
|
2月前
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
254 2
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
11天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
机器学习/深度学习 存储 分布式计算
机器学习PAI常见问题之DLC的数据写入到另外一个阿里云主账号的OSS中如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
1天前
|
安全 Linux 对象存储
数据备份到阿里云oss上,以防勒索病毒的破坏
数据备份到阿里云oss上,以防勒索病毒的破坏
13 0

相关产品

  • 对象存储