云原生是一种开发和运行软件应用程序的新范式,它融合了云计算、容器化、Serverless 和微服务等技术趋势。云原生存储是一种旨在用于云原生环境的存储技术。
云原生存储平台可以存储管理有状态应用程序的数据,并解决 Kubernetes 或其它基于云原生环境的基础设施中一直存在的数据存储挑战问题。分布式架构中的对象存储可以基于现代对象存储、块存储或传统磁盘驱动器提供数据存储服务。
云原生应用和传统应用并没有一个标准的划分界限,其描述的是一种技术倾向,即越符合以下特征的应用越云原生化:
云原生应用是一簇应用特征能力的集合,而实现了这些能力的应用在可用性、稳定性、扩展性、性能等核心能力都会有大幅的优化。优异的能力代表了技术的方向,云原生应用正在引领各个应用领域实现云原生化,同时也在深刻改变着应用服务的方方面面。存储作为应用运行的基石,也在服务云原生化过程中遇到了更多的需求与挑战。
云原生存储的关键特性如下:
高可用性
云原生存储必须在高需求中可用。存储系统需要具有即使在事件失败时也能访问数据的功能——无论是在传输系统、存储介质、控制器还是其他组件中。存储高可用性的 3 个要素:
以下几个是衡量高可用性的指标:
可扩展性
云原生存储可以轻松灵活扩展。存储系统的可扩展性可以从 4 个维度来定义:
存储性能
云原生存储应该支持可预测的、可扩展的性能,服务水平通常从以下角度进行衡量。
一致性
云原生存储应该支持如下的一致性:
在一致性系统中,读取延迟可以被视为恢复点目标 (RPO),因为这代表了组件故障时数据丢失最多的情况。
耐用性
云原生存储应该是持久的,需要保护数据免受任何丢失。不仅仅是可访问性,存储系统要确保数据可以长期存储。一些因素会影响存储系统的耐用性:
动态部署
动态部署是云原生存储系统的最终理想标准,可以根据需要快速部署或配置,也可以通过多种方式进行部署和实例化,其中包括:
云原生存储的最佳解决方案定义如下:
公有云存储
公有云可以提供一系列云原生存储选项,包括对象存储(例如 Amazon S3 或 青云QingCloud 对象存储)、基于云的文件共享以及附加到计算实例的托管磁盘。
私有云存储
每当公司构建私有云时,他们通常会倾向于选择具有简单可扩展性、高可靠性和便利性特性的商业云存储服务商。大多数服务商提供部署支持和运营与维护 (O&M) 服务。随着云原生存储需求的增长,私有云基础设施供应商提供了最成熟的云原生接口,允许本地资源消耗云存储。
自行维护的存储服务
公司可以在内部构建的存储服务类型主要有 2 种:块存储和简单文件存储。
Ceph RBD 和存储区域网络 (SAN) 被认为是相对成熟的块存储解决方案,但是由于它们的复杂性,通常需要专门的支持和维护团队。
决定要创建自己的分布式存储系统的公司可以选择 GlusterFS、NFS 和 CephFS 等服务做文件存储。NFS 相对成熟,但不足以解决高性能应用需求。GlusterFS 和 CephFS 通常无法满足关键任务应用程序所需的性能和可靠性。
本地云原生存储的一个新趋势是 S3 兼容存储——支持 S3 API 的本地存储设备。
本地存储
云原生应用程序中也有很多用例使用分布式存储服务意义不大,比如云原生系统中的边缘设备或组件,使用本地存储的 2 种常见情况: