云存储网关的缓存最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
云备份 Cloud Backup,100GB 3个月
简介: 前言 云存储网关支持通过传统的文件协议(SMB/NFS)来访问OSS Bucket里面的数据,并能够通过缓存技术将用户频繁访问的热点数据保留在网关侧的缓存盘里,从而提供给用户更好的访问体验。用户在使用阿里云云存储网关时,经常会碰到一些缓存相关的问题,比如在创建共享时如何选择缓存盘的容量和类型,比如缓存的数据淘汰策略是什么等。

前言

云存储网关支持通过传统的文件协议(SMB/NFS)来访问OSS Bucket里面的数据,并能够通过缓存技术将用户频繁访问的热点数据保留在网关侧的缓存盘里,从而提供给用户更好的访问体验。使得用户在享受云上海量OSS存储空间的同时,还兼具本地的高速访问性能。下面是阿里云文件网关的架构图。

83b20186b331ce7e094f76cd1ccdcfc4bef93a16

用户在使用阿里云云存储网关时,经常会碰到一些缓存相关的问题,比如在创建共享时如何选择缓存盘的容量和类型,比如缓存的数据淘汰策略是什么等。本文接下来的内容将结合缓存盘的工作原理来解开这些困惑。云存储网关根据支持的协议的不同,分为支持NFS/SMB文件协议的文件网关和支持iSCSI协议的块网关。它们两者的缓存工作机制是不一样的,本文主要针对的文件网关。

工作原理

文件网关支持缓存模式和复制模式两种模式,绝大部分用户使用的应该都是缓存模式。缓存模式是指缓存盘的数据到一定比例之后,文件网关会自动淘汰那些访问不频繁的数据。在这种模式下,固定容量的缓存盘可以管理远远大于缓存盘实际容量的OSS Bucket。复制模式则不同,数据在网关侧和OSS Bucket里面是1:1的,所以网关不会去做数据的淘汰,一定容量的缓存盘理论上只能管理对应于缓存盘容量的OSS Bucket。复制模式针对的场景主要是OSS Bucket总数据量基本不会增长且总数据量不是特别大,同时希望将所有数据都保持在网关共享里加速访问。不过这种场景毕竟在少数,绝大多数用户会选择缓存模式以应对日后OSS Bucket里面的数据增长。

cachemode

在缓存模式下,缓存盘的数据会在60%满的时候触发淘汰直到实际数据量落到60%以下,从而保证永远有足够的缓存容量面对新的数据写入。那么淘汰的策略是如何的呢,如何决定哪些数据是可以淘汰的呢?文件网关淘汰的实际上是已经同步到OSS Bucket里面的文件,也就是说对某个文件的最后一次修改应用到网关的SMB或者NFS共享之后,并且网关已经将这个文件上传到OSS Bucket里面,那么这个文件就是可以淘汰的。如果用户还在持续的对某个文件进行写入,这个文件是不会被选为一个淘汰的对象的。所以用户如果同时打开多个文件进行写入,缓存盘的容量就应该比同时在写的所有文件的总容量要大,否则就有可能导致数据来不及淘汰而造成写入错误!!!

在复制模式下,因为数据不会发生淘汰,相对来说就简单很多。缓存盘的容量比OSS Bucket里面的总数据大就可以,这种模式注定它不可能管理特别大的数据量,因为当前支持的缓存盘的最大容量32TB。所以除非对复制模式有强需求,还是推荐使用缓存模式,相对来说更加灵活。

另外文件网关会预留一部分缓存盘空间存储元数据,一般会预留20%。这部分元数据主要是用来存储单个文件的元数据,包括大小,修改时间等等。所以即使某个文件的数据被淘汰之后,网关还是存储了一个桩文件在元数据里,这样用户从客户端进行文件夹浏览的时候,还是能够看到数据被淘汰掉的这个文件,给用户一致的体验。用户如果试图读取这个文件内容,网关会负责将数据再次从OSS Bucket里获取到缓存盘里面。这部分元数据空间关系到当前共享可以支持的最大文件数目,毕竟40GB的缓存盘的元数据空间肯定低于50GB的缓存盘的元数据空间。一般来说100G的缓存盘已经可以支持到1000万文件了。

注意事项

了解缓存的工作原理之后,下面这些其实都比较好理解了。

如果你的业务对带宽和IOPS的要求比较高,比如跑的数据库之类的对时延要求比较高的业务,那么可能SSD类型的缓存盘更适合,因为它拥有更好的带宽和IOPS。SSD类型的缓存盘的带宽和IOPS都会比高效云盘更优秀,SSD缓存的最高IOPS可以到25000,高效云盘缓存是5000,带宽方面SSD缓存最高可以到300MB,高效云盘缓存的带宽最高可以到140MB。

容量的选择主要和并发数和最大文件大小有关。缓存盘的可用容量(需要扣除元数据空间)需要大于并发数和最大文件大小的乘积,这样才不会造成数据写入错误。当然越大的缓存盘本地能够缓存的热数据量也就越多,总体来说性能会更好。所以如果希望能够获得比较好的性能,缓存盘还是要设置的稍微大一些。

云存储网关的控制台现在也提供了非常方便的计算器,根据用户输入的IOPS和带宽需求等可以作出合适的缓存容量和类型的推荐。结合我们前面讲的对照看下图中每一个条目,相信很好理解。

calcu

小结

本文介绍了云存储网关文件网关的缓存工作原理,包括缓存盘元数据空间管理,数据淘汰策略等,旨在解答用户在选择和使用缓存盘时遇到的一些问题。

相关实践学习
1分钟 Serverless搭建高性能网盘
本场景将使用阿里云函数计算、文件存储NAS以及开源项目Kodbox,带大家1分钟Serverless搭建个人高性能网盘,网盘可长期使用。
目录
相关文章
|
2月前
|
存储 缓存 Java
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
|
15天前
|
存储 缓存 Java
Java中缓存实现的最佳实践
Java中缓存实现的最佳实践
|
15天前
|
缓存 NoSQL Java
Spring Boot整合Redis缓存的最佳实践
Spring Boot整合Redis缓存的最佳实践
|
2月前
|
负载均衡 Cloud Native 安全
云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
本文档介绍了如何在 MSE(Microservices Engine)云原生网关中集成JWT进行全局认证鉴权。
911 10
|
5月前
|
运维 Kubernetes 应用服务中间件
Higress × OpenKruiseGame 游戏网关最佳实践
本文将演示 Higress 如何无缝对接 OKG 游戏服,并为其带来的优秀特性。
134437 2
|
11月前
|
存储 缓存 NoSQL
Redis缓存应用与最佳实践:优化性能与处理挑战
本篇深入探讨了Redis在缓存应用中的最佳实践,旨在优化性能并处理常见的缓存挑战。我们首先介绍了设计高效缓存架构的基本原则,展示了如何使用Redis作为缓存存储来提升应用性能。进一步地,我们讨论了缓存更新策略,演示了如何在源数据更新时同时更新缓存,以确保数据的一致性。
441 0
|
11月前
|
Kubernetes 安全 Serverless
为什么 Higress 是 Knative 入口网关的最佳实践
Knative Serving 是一款基于 K8s 的 Serverless 开源平台,用于构建和管理现代化、可拓展、流量驱动、无服务器的应用程序。本文重点关注 Knative 网络层能力的实现。
416 12
为什么 Higress 是 Knative 入口网关的最佳实践
|
运维 Kubernetes Cloud Native
|
运维 Kubernetes Cloud Native
洛神云网络集中式网关ACMG最佳实践
洛神云网络集中式网关ACMG最佳实践
352 1
洛神云网络集中式网关ACMG最佳实践
|
弹性计算 负载均衡 Cloud Native
Soul 云原生网关最佳实践
Soul 是基于兴趣图谱和游戏化玩法的产品设计,属于新一代年轻人的虚拟社交网络。成立于2016年,Soul 致力于打造一个“年轻人的社交元宇宙”,最终愿景是“让天下没有孤独的人”。
Soul 云原生网关最佳实践

相关产品

  • 云存储网关