每日一博 | 在存储世界中成为“云原生”的真正含义
“云原生”(Cloud Native)一词在 2019 年被技术界广泛使用,但是却没有关于这个词一个特别明确的定义。主要的困惑在于,“云原生”与您的应用程序部署到的环境几乎没有关系,该术语同样适用于私有云和公共云。该术语更多的是指应用程序和体系结构的特征。
在 Cloud Native Computing Foundation (CNCF 云原生计算基金会) 对该术语的最新定义中我们可以找到一些相关信息:
云原生技术使组织能够在现代、动态环境(例如公共云,私有云和混合云)中构建和运行可扩展应用程序。容器、服务网格、微服务、不变的基础结构和声明性API 就是这种方法的例证。
这些技术使松散耦合的系统具有弹性,可管理性和可监控。结合强大的自动化功能,它们使工程师能够以最小的工作量频繁且可预测地进行重大的更改。
那么,存储是云原生意味着什么呢?简而言之,它必须以与云原生生态系统中其他所有事物相同的动态,API 驱动的方式运行。有两个相关的指标可以确定一个存储系统是否云原生,它们是:
- 是否专为 Kubernetes 打造
- 是否兼容亚马逊的 S3 API
下面我们将更详细地解读这些指标。
云原生存储是对象存储
现代应用程序体系结构基于对象存储,默认情况下,S3 是云的 API 语言。因为对象存储是唯一一种旨在处理云本机应用程序生成的数据量的存储,并且提供公司可以负担得起的价格以及用户期望的速度运行 —— 它在现代存储中占主导地位。与块文件存储系统相比,对象存储的其他属性包括出色的分发特性,更好的弹性和更高的可用性。
这都是云原生应用程序期望的属性。
Amazon S3 API 是对象存储的事实上的标准,每个对象存储软件供应商都宣称自己对 S3 API 兼容。AWS S3 实际上是二进制兼容的。适用于所有的场景,要么完全不适用。
也就是说,S3 API 基本上可以满足绝大多数的场景,其中包括你可能不会想到的极端情况。这是开源软件具有显着优势的领域。考虑到应用程序、操作系统和硬件体系结构的规模和多样性,可以表明他们已经看到了大多数极端情况,而且能很好的满足这些场景。
这对应用程序创建者来说很重要,因为你需要针对那些供应商来测试你的应用程序。而开源使您可以轻松评估和测试供应商的方案,如果测试通过,很可能是云原生的。如果不是,则不是。
专为 Kubernetes 设计
“云原生”的第二个标准是使用利用外部容器编排平台的分布式架构。这意味着架构必须对 Kubernetes 友好。在容器编排方面,Kubernetes已经是显而易见的行业赢家,因此将其构建为与 Kubernetes 协同工作对于将存储解决方案视为云原生是至关重要的。
存储对 Kubernetes 友好意味着什么?我们认为有六个主要标准。
1. 让 Kubernetes 编排存储节点
Kubernetes 是一个功能强大的编排器,可用于处理计算和存储编排。像 MinIO 这样的真正云原生存储方案与 Kubernetes 集成在一起,允许操作员使用 Kubernetes 界面管理存储,而 Kubernetes 可以处理从存储提供到卷放置的所有事务。
2. 多租户
多租户允许多个客户使用一个应用程序的单个实例,如果实施正确,则可以减少运营开销,降低成本并降低复杂性,尤其是在规模方面。但是,这也需要严格的资源隔离,以便多个用户可以访问计算资源或存储资源,而不会影响其他用户。真正的云原生存储解决方案将提供足够的资源隔离,以确保多租户架构安全,高可用性和高性能。
在对象存储世界中,意味着 Kubernetes 基础架构需要隔离和管理存储租户。如果 Kubernetes 没有管理基础架构,那么它并不是真正的云原生平台。这使那些具有 CSI 或 Operator 集成功能的设备供应商失去资格。
3. 轻巧
除非存储系统非常轻巧并且能够与应用程序堆栈打包在一起,否则多租户是不可能的。如果存储系统占用太多资源或包含太多API,则无法在同一基础架构上打包许多租户。
4. 可扩展
可扩展性是云原生系统的关键属性之一。Kubernetes 的优点之一是它已在各种规模上得以验证。Kubernetes 也可用于管理存储扩展,但前提是基础存储系统与 Kubernetes 集成,并且将存储供应和取消功能移交给 Kubernetes。
5. API 驱动
通常,Kubernetes 和云原生系统的核心原则之一是通过自动化来尽可能多地进行管理。为了使存储系统真正成为云原生,它必须通过 API 与 Kubernetes 集成,并允许动态的、由 API 驱动的编排。
6. 用户空间
最后的考虑也许是最困难的。为了使对象存储解决方案成为云原生,它必须完全在用户空间中运行且没有内核依赖性。这不是大多数对象存储系统(尤其是硬件设备)构建的方式。但是,如果您想对存储进行容器化并将其部署在任何 Kubernetes 集群上,则必须遵守这些限制。根据定义,这意味着需要内核修补或具有专用硬件的解决方案将不是云原生的。
结论
尽管在某种程度上很简单,但这两个要求“云原生”状态的标准实际上在实践中非常困难。公共云对象存储供应商在对抗它们方面做得很好。实际上,如果 Google 是 Kubernetes 的源头,而 Amazon 是 S3 的源头,则确实可以期望他们这样做。私有云对象存储供应商要通过这些测试要困难得多。虽然有些人声称与S3兼容,但仔细检查却发现并非如此。对于绝大多数传统厂商来说,Kubernetes 根本就不在他们的基因范围之内,甚至常常不在计划之列。因为这里面困难重重。
而 MinIO 是专为云原生工作负载而构建,设计时就考虑了 Kubernetes ,并遵循 Kubernetes 的方式。MinIO 与 S3 兼容,但也可以与 Google、Azure 或私有云一起使用,从而使多云和混合云成为可能。
高性能的云原生对象存储是获得云原生应用程序所需的性能、可靠性和可伸缩性的唯一方法。
现在就下载 MinIO 看看。作为 100% 开放源代码的解决方案,您将获得最新、最出色的产品,而不会受到任何限制。更深入的了解 请查看 MinIO 的文档或在 MinIOn的Slack频道,了解人们所关注的是什么。
本文翻译自 https://blog.min.io/what-it-really-means-to-be-cloud-native-in-the-storage-world/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
DataGrip 2019.3 EAP 4 发布,多引擎数据库环境
DataGrip 2019.3 的第四个早期访问计划发布了,主要更新内容如下: DBE-7976:现在可以从数据编辑器上下文中使用“修改表”操作,如果要在编辑表数据时添加新列,只需按 Ctr/Cmd+F6 继续。 DBE-9336: Intentions 现在在例程的源代码中起作用。例如,如果要通过星号上的 Alt+Enter 扩展通配符,现在就可以这样做。 DBE-9548:现在,如果结果集包含具有相同名称的多个列,那么从中创建表就不会对歧义名称造成任何问题。 DBE-9428:引入了新的意图,以帮助将 JOIN ON 转换为 JOIN USING,反之亦然。 发布公告: https://blog.jetbrains.com/datagrip/2019/11/15/datagrip-2019-3-eap-4/
- 下一篇
Fedora 计划将默认文本编辑器从 Vi 更改为 Nano
Fedora计划在默认的Fedora Workstation安装中添加Nano文本编辑器,作为对Vi的补充,但其利益相关者打算提交一个系统范围内的提案,该提案会将默认安装的编辑器从Vi更改为Nano。 Fedora Workstation风格可以默认将Nano文本编辑器添加到自旋中,而无需将其替换为默认的基于终端的文本编辑器,该文本编辑器当前由Vi持有。在近日举行的Fedora工作站会议上,他们避免尝试仅更改Fedora工作站的默认文本编辑器,而是发布了系统范围内的建议,以将其用于Fedora的所有旋转。在Workstation WG会议记录中,该计划已得到确认。 如果Fedora 32发行版得到Fedora工程和指导委员会的批准,则默认文本编辑器的更改可能会在春季发布。 参考消息:https://www.phoronix.com/scan.php?page=news_item&px=Fedora-Workstation-Vi-To-Nano
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境