基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

作者:车漾(必嘫)


本系列文章将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景。


概述


在 AI 和大数据时代,算力即正义,强大的算力推动了源源不断的创新。然而,企业自建的算力集群存在资源容量和弹性能力相对有限的问题,在业务低谷时可能会面临高昂的资源闲置成本,而在业务高峰时则可能会面临资源紧张的挑战。特别是在 AI 和大数据时代,越来越多的企业正在寻求将公共云作为算力的有效补充。


考虑到某些企业对于数据主权的特殊要求,他们需要将数据存放在私有云中,但同时也希望能够享受公共云的弹性、可靠性和成本优势。在这种情况下,混合云的使用变得愈发普遍。混合云可将阿里云的云服务与企业自建数据中心相融合,阿里云上的计算资源通过专线访问数据,并由 ACK One 统一进行管理。这种混合云解决方案不仅帮助客户节省成本,还提供了更高的性能和更强的安全保障。但是跨云的计算访问数据场景会带来共性的问题:


  • 云上通用计算和线下异构存储的适配复杂:适配公共云通用弹性计算访问线下异构存储需要一定的开发和集成工作,时间周期较长。生产环境的维护和问题排查成本也会有所增加。
  • 数据访问性能影响工程效率:跨云数据访问慢影响数据分析和 AI 训练的效率。
  • 冗余数据访问开销:对于热点数据的反复读取会带来不必要流量费用。
  • 数据源的传输和复制 / 同步:如何复制 / 同步线下和公有云的数据,保证数据的一致性?



下面我们介绍一下 ACK Fluid[1]支持混合云数据访问常见的应用场景,这些场景以 Kubernetes 下读数据为主特点是接入简单,无侵入,性能好,低成本,自动化:


应用场景 1:

接入第三方分布式存储,连接弹性计算实例和云下存储


许多企业的数据都是存在线下,并且使用的存储类型多样,包括各种开源存储(Ceph,lustrure,JuiceFS,CubeFS)和自建存储。在使用公共云计算资源的时候,也存在挑战:

  • 数据迁云安全性和成本评估时间长:对于数据迁移到云存储上,需要安全和存储团队的长时间评估,这会延缓整个上云过程。
  • 数据访问无法适配:比如公共云对于弹性计算实例(ECI)支持的分布式存储类型有限(比如 NAS,OSS,CPFS),但是对于第三方存储缺乏支持。
  • 接入云平台周期长和难度高:需要开发和维护云原生兼容的 CSI 插件,一方面需要相关的专家和开发适配工程量,同时要维护版本的升级,同时支持的场景有限。比如自建 CSI 无法适配弹性计算实例(ECI)。
  • 缺乏可信透明的数据接入方式:如何在 Serverless 容器的黑盒系统访问数据过程中规避泄露,如何确保数据在传输、访问过程中安全,透明,可靠。
  • 避免业务修改的需求:如何确保业务用户不感知基础设施层面的差异,避免对现有应用本身进行任何修改。


ACK Fluid 通过提供 ThinRuntime 扩展机制[2]支持将基于 FUSE 实现第三方存储客户端以容器化的方式接入 Kubernetes 中,可以支持阿里云上标准 Kubernetes,边缘 Kubernetes,Serverless Kubernetes 多种形态。


1. 开发简单

基于 ThinRuntime 方案,只需要会用 docker 即可,一般开发工作 2-3 小时左右,从而显著降低了接入第三方存储的工作成本。


2. 安全可控

以容器化的方式支持自定义方式实现数据访问。整个数据访问过程云平台无侵入,无需提供实现细节。


3. 使用方便

只需要在 PVC(持久卷申请)中添加特定 label 即可,满足了业务用户无需感知基础设施层面的差异的需求,能将存储适配时间缩短为原计划的十分之一。


4. 开源标准

基于开源 Fluid 标准对于 ThinRuntime 提供了完整的支持,只要满足开源要求就可以适配 ACK Fluid。整个开发测试可以在 MiniKube 环境完成。


5. 可观测可控制

第三方存储客户端只需要实现自身的容器化,就可以转化为 Fluid 管理的 Pod,无缝接入 Kubernetes 体系,并获得可观测性和计算资源可控制性。


总结:ACK Fluid 为云上计算访问云下数据提供了扩展性好,安全可控,低适配成本与云平台实现无关的好处,应用案例参见小米[3]



应用场景 2:

加速第三方存储卷声明,降低资源成本


在满足场景 1 下,即便云上计算能够以 Kubernetes 的标准化协议 PV 存储卷访问企业的线下存储,也无法避免在性能,成本上的挑战和需求:


  • 数据访问带宽有限和高延时:云上计算访问云下存储带来的数据访问延时和带宽有限,导致高性能计算耗时长,计算资源利用率低
  • 数据冗余读取,网络费用昂贵:深度学习模型的超参调优、自动调参深度学习任务等运行期间会不断重复访问同一数据。但是由于 Kubernetes 原生调度器无法感知数据缓存状态,导致应用调度的结果不佳,缓存无法重用,导致数据重复拉取引入更多外网和专线费用。
  • 线下分布式存储是数据并发访问的瓶颈,而且面临着性能和稳定性方面的挑战:当大规模算力并发访问线下存储且深度学习训练的 IO 压力增大,线下分布式存储很容易成为性能瓶颈。这会对计算任务造成影响,甚至会导致整个计算集群失效。
  • 受网络稳定性影响严重:一旦公共云和数据中心之间网络不够稳定,会导致数据同步出错,应用处于不可用的状态。
  • 数据安全需求:元数据和数据需要保护,不允许够持久化到云盘上。


ACK Fluid 提供了基于 JindoRuntime 的 PV 存储卷通用加速能力[4],可以支持满足 PVC 的第三方存储简单,快速,安全的获得通过分布式缓存实现数据访问加速能力,可以带来如下好处:


1. 使用简单

只需要实现 CSI 协议中 PVC 的第三方存储即可以立即使用,无需额外开发。


2. 高性能,提效率

通过数据预热、弹性带宽和缓存亲和感知调度,实现云上计算集群访问云下数据性能无损失


3. 降成本,省流量

通过分布式缓存将热点数据持久到云上,减少数据读取,降低网络流量;同时吞吐可以弹性伸缩,按照业务削峰填谷。


4. 自动化

以数据为中心的自动化运维,提高运维效率:包括自动缓存预热、自动化扩缩容和清理,实现高效管理。


5. 更安全

分布式内存缓存提高安全性:无需数据落盘,适用于敏感用户,提供卓越性能和安全保障。


总结:ACK Fluid 为云上计算访问第三方存储 PVC 提供了开箱即用,高性能,低成本,自动化和无数据落盘的收益,应用案例参见 360。



应用场景 3:

实现第三方存储主机目录挂载 Kubernetes 化,标准化并加速提效


也有许多企业由于历史原因和技术云下存储选择没有支持 CSI 协议,只支持以主机目录的方式挂载,一方面存在与 Kubernetes 标准化平台的对接的挑战,另一方面也需要应对与场景 2 类似的性能和成本的问题:


  • 缺少标准化,上云困难:主机目录挂载的模式由于无法被 Kubernetes 感知和调度,很难被容器化工作负载使用和管理。
  • 缺少数据隔离性:由于整个目录都被挂载到主机上,并被所有的工作负载访问,导致数据全局可见。
  • 数据访问在成本,性能和可用性上有何场景 2 相同的需求,因此不再赘述。


ACK Fluid 提供了基于 JindoRuntime 的 PV 主机目录通用加速能力,直接支持主机目录挂载可以原生,简单,快速,安全的获得通过分布式缓存实现数据访问加速能力。


1. 标准化

将传统架构迁移至云原生:将主机目录挂载模式变化为 Kubernetes 可以管理的 CSI 协议下的 PV 存储卷,便捷与公共云标准协议结合。


2. 迁移低成本

传统架构迁移低成本:无需额外开发,只需要在部署时刻将 Hostpath 协议转换成 PV 存储卷。


3. 数据隔离更容易

接入 Fluid 后,可以通过子数据集模式可以控制不同用户对于线下存储不同目录的可见性,无需额外开发。


4. 高性能,提效率

通过数据预热、弹性带宽和缓存亲和感知调度,实现云上计算集群访问云下数据性能无损失。


5. 降成本,省流量

通过分布式缓存将热点数据持久到云上,减少数据读取,降低网络流量;同时吞吐可以弹性伸缩,按照业务削峰填谷。


6. 自动化

以数据为中心的自动化运维,提高运维效率:包括自动缓存预热、自动化扩缩容和清理,实现高效管理。


7. 更安全

分布式内存缓存提高安全性:无需数据落盘,适用于敏感用户,提供卓越性能和安全保障。


总结:ACK Fluid 为云上计算访问第三方存储的主机目录挂载方式提供了开箱即用,高性能,低成本,自动化和无数据落盘的收益。



应用场景 4:

跨区域中心数据分发


许多企业出于性能、安全、稳定性和资源隔离的目的,会在不同区域建立多个计算集群。而这些计算集群需要远程访问唯一中心化的数据存储。比如随着大语言模型的逐渐成熟,基于其的多区域推理服务也逐渐成为各个企业需要支持的能力,针对这一场景,仍有不小的挑战:


  • 多计算集群间手动同步数据非常耗时。
  • 大型语言模型的管理复杂,由于不同业务需求会选择不同基础模型和数据,导致最终模型存在差异。
  • 模型数据频繁更新,根据不同业务输入进行迭代。
  • 拉取大型语言模型文件耗时长,启动模型推理服务较慢。参数规模庞大,体积通常达到几百 GB,在 GPU 显存中加载时间巨大。
  • 模型更新要求所有区域同步更新,使用过载的存储集群进行复制作业会严重影响现有负载性能。


ACK Fluid 除了提供通用存储客户端的加速能力,还提供了定时和触发式数据迁移和预热能力,简化数据分发的复杂度。


1. 节省成本

跨区流量成本大幅降低,计算时间明显缩短,少量增加计算集群成本;并且可以通过弹性进一步优化。


2. 加速应用

由于计算的数据访问在同一个数据中心或者可用区内完成通信,延时降低,且缓存吞吐并发能力可线性扩展。


3. 简化数据同步

通过自定义策略控制数据同步操作,降低数据访问争抢,同时通过自动化的方式降低运维复杂度。



综述


在本文中,我们简单介绍了通过 ACK Fluid 和 JindoFS 团队的 JindoRuntime 可以支持的混合云场景分类,后续文章中,我们会对以上场景的具体实践和使用方式进行详细介绍。


相关链接:

[1] ACK Fluid

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/overview-of-fluid

[2] ThinRuntime 扩展机制

https://github.com/fluid-cloudnative/fluid/blob/master/docs/zh/samples/thinruntime.md

[3] 小米

https://www.infoq.cn/article/kco7hi5TcVE08ySwNIw7

[4] PV 存储卷通用加速能力

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/accelerate-pv-storage-volume-data-access

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
24天前
|
Kubernetes API 调度
k8s 到底是什么,架构是怎么样的?
Kubernetes(k8s)是Google开源的容器集群管理系统,它通过YAML文件自动化应用部署、扩展和管理。k8s架构包含控制平面(API Server、Scheduler、Controller Manager和etcd)和工作节点(Node,含kubelet、Container runtime、Kube Proxy等)。控制平面负责调度和管理,Node执行任务。kubectl是命令行工具,用于与k8s交互。k8s通过Ingress暴露服务,并通过Pod作为最小调度单位管理容器。Docker通常与k8s结合使用,提供容器化应用,但二者并非同一概念。
55 4
k8s 到底是什么,架构是怎么样的?
|
1月前
|
存储 Kubernetes 负载均衡
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(下)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。
|
2月前
|
缓存 负载均衡 算法
后端架构设计中的优化技巧
【2月更文挑战第9天】 后端架构设计是一个复杂而关键的工作,不仅需要考虑系统的可靠性和扩展性,还需要保证系统的高性能。本文将介绍一些后端架构设计中的优化技巧,包括数据库设计、缓存优化、负载均衡等方面的内容,帮助开发者在设计后端架构时更好地提升系统性能。
39 1
|
3天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
5天前
|
JSON API 数据库
后端架构设计与优化:打造高性能应用后端
后端架构设计与优化:打造高性能应用后端
18 2
|
12天前
|
弹性计算 安全 Serverless
图像处理场景下的Serverless架构
【4月更文挑战第15天】图像处理场景下的Serverless架构
|
18天前
|
存储 数据库 Android开发
构建高效安卓应用:采用Jetpack架构组件优化用户体验
【4月更文挑战第12天】 在当今快速发展的数字时代,Android 应用程序的流畅性与响应速度对用户满意度至关重要。为提高应用性能并降低维护成本,开发者需寻求先进的技术解决方案。本文将探讨如何利用 Android Jetpack 中的架构组件 — 如 LiveData、ViewModel 和 Room — 来构建高质量的安卓应用。通过具体实施案例分析,我们将展示这些组件如何协同工作以实现数据持久化、界面与逻辑分离,以及确保数据的即时更新,从而优化用户体验并提升应用的可维护性和可测试性。
|
1月前
|
运维 Linux Apache
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
199 2
|
1月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【2月更文挑战第29天】在当今快速发展的软件开发领域,微服务架构已成为提高系统可维护性、扩展性和敏捷性的关键解决方案。本文将深入探讨如何利用Docker容器化技术和Kubernetes集群管理工具,共同构建一个既高效又可靠的微服务环境。我们将分析Docker和Kubernetes的核心功能,并展示它们如何协同工作以简化部署流程、增强服务发现机制以及实现无缝的服务伸缩。通过实际案例分析,本文旨在为开发者提供一套实用的微服务架构设计和实施指南。
|
1月前
|
Kubernetes API 调度
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(上)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多