云原生应用需要云原生存储系统
的崛起云-native应用从根本上改变企业如何开发和运行软件应用程序。但这种转变不仅改变了应用程序开发;它还影响基础设施。容器化、Kubernetes、无服务器计算和微服务等新技术是云原生环境的关键组成部分。为了支持现代云原生环境以及作为其中一部分的新兴技术,组织不能依赖传统的存储基础架构。
相反,他们必须使用云原生存储平台。为避免混淆,定义“云原生”的含义很重要,因为该术语已经扩展到包括并非真正云原生的应用程序。云原生计算基金会 (CNCF) 将云原生应用描述为“现代动态环境(例如公共云、私有云和混合云)中的可扩展应用”。在实践中,这意味着应用高度分布式、易于扩展、容器化并使用 Kubernetes 进行管理。
云原生存储系统需要具有可移植性、可扩展性,并支持云原生设置中常见的技术。换句话说,这些系统必须能够正确管理有状态应用程序的数据,同时还要解决云原生环境中常见的数据存储挑战,例如与管理基于 Kubernetes 的应用程序数据相关的障碍。
为了有效地做到这一点,云原生存储必须在六个关键操作领域获得高度评价:可扩展性、性能一致性、持久性、可部署性和可用性。
可扩展性是云原生应用程序和环境的基本特征,因此云原生存储也必须易于扩展才有意义。存储平台的可扩展性可分为四类:客户端可扩展性(增加访问存储系统的客户端或用户数量的能力)、容量可扩展性(在存储系统的单一部署中增加存储容量的能力)、吞吐量可扩展性(每秒运行更多吞吐量或处理更多数据的能力)和集群可扩展性(通过部署额外组件来扩展存储集群的能力)。云原生存储必须在所有四个维度上都具有高度可扩展性。
表现
性能在云原生环境中至关重要。云原生存储平台必须提供可预测和可扩展的高级性能。这意味着系统应该能够快速完成读取或写入操作,每秒执行大量存储操作,并提供可以以 MB/s 或 GB/s 存储或检索的高数据吞吐量。
一致性
一致性也是云原生存储系统的关键。如果读取操作在写入、更新或删除数据后立即返回正确的数据,则平台可以被描述为一致的。如果新数据在更改后立即可供客户端读取操作,则系统非常一致。但是,如果在读取操作返回更新数据之前存在延迟,则系统只会最终保持一致。在这种情况下,可以将读取延迟视为恢复点目标 (RPO),因为它代表了组件发生故障时丢失的最大数据量。
耐用性
云原生存储需要持久耐用并防止数据丢失。耐用性不仅仅意味着可访问性——真正耐用的平台保证数据可以安全地存储更长的时间。这些系统应包括多层数据保护(包括支持大量备份数据副本)和多级冗余(例如本地冗余、跨区域冗余、跨公共云可用区冗余和到远程站点的冗余)。他们还必须能够识别数据损坏并自动恢复或重建该数据。存储介质老化和组件故障是数据损坏的常见原因。
此外,包含云原生存储平台的特定存储介质(例如,SSD、旋转磁盘和磁带)应该具有物理弹性。
可部署性
云原生应用程序非常便携,可以轻松分布在多个位置。为了支持这种敏捷性,可以按需部署或配置存储系统至关重要。这需要一种软件定义的横向扩展方法,使组织能够在不添加新设备的情况下立即增加存储容量。利用单个命名空间的存储架构在这里是理想的。由于这些系统在对等全局数据结构中将所有节点连接在一起,因此可以使用现有基础设施在任何位置按需添加新节点(和更多容量)。
可用性
最后,云原生存储必须具有高可用性,在发生故障时提供对数据的即时访问,无论故障发生在何处(例如,在传输系统、存储介质、控制器等中)。要被视为高可用性,存储系统应该能够修复和恢复任何出现故障的组件,在单独的设备上维护冗余数据副本并处理到冗余设备的故障转移。
云原生应用不再只部署在 DevOps 环境中——它们现在越来越多地部署在完整的生产环境中。这包括无状态和有状态的云原生应用程序。随着越来越多的云原生应用支持现实世界的用例——尤其是有状态的云原生应用——组织需要专门为这些环境设计的存储基础设施。
结论
有效的云原生存储必须在上述所有六个领域中提供。当然,这些并不是唯一的考虑因素,安全性、可管理性、可观察性和基于 API 的自动化也是重要因素。但对于评估云原生存储选项的组织来说,由可扩展性、性能、一致性、持久性、可部署性和可用性组成的清单是最好的起点。
标签: