Longhorn vs Rook vs OpenEBS vs Portworx vs IOMesh:细说 5 款 K8s 持久化存储产品优劣势

云原生时代下,越来越多的企业开始使用 Kubernetes(K8s)承载数据库、消息中间件等“生产级”有状态工作负载。由于这些应用对数据持久保存、性能、容量扩展和快速交付具有较高的要求,企业往往需要采用专为 Kubernetes 环境设计的持久化存储方案,来满足有状态应用的存储需求。这也是不少用户感到困惑的地方:如何从市面上众多的 K8s 存储方案中,找到适合自己的产品?

这篇文章中,我们详细对比了 Longhorn、OpenEBS、Portworx、IOMesh 等主流 K8s 持久化存储方案,通过特性对比与性能测试,为用户产品选型提供直观参考。

功能特性对比

在存储方案特性方面,Gartner 在《如何在容器与 Kubernetes 环境进行存储选型和实践(How Do I Approach Storage Selection and Implementation for Containers and Kubernetes Deployments)?》报告中,列举了 5 项云原生数据服务对传统存储方案的改进要求:

  • 软件定义与“硬件无关(hardware agnostic)”。
  • 可编程,可作为“基础设施即代码(IaC)”进行管理,由 API 驱动并支持高级和细粒度的数据服务(如高可用与数据保护)。
  • 基于分布式架构,可以任意规模部署。
  • 与多种 Kubernetes 发行版通过认证,并可与之进行互操作、实现完全集成。
  • 具有简单且可预测的跨环境许可模型。

我们参考以上要求,同时结合国内对 IT 基础架构技术自研等方面的关注,对 Longhorn、Rook、OpenEBS、Portworx 和 IOMesh 5 款产品,从技术开闭源、本土化支持、存储架构、高级数据服务、与 K8s 的集成程度等方面进行了全面对比:

 

基于以上对比,用户在功能特性层面的选型上需要注意以下几点:

  • 关注数据安全与合规性的用户(如金融与政府机构),应尽量选择闭源 K8s 存储方案。同时,闭源厂商往往具备更强的存储核心代码支持能力,基于开源存储技术的方案,若遇到存储部分的故障,可能无法得到及时解决。
  • OpenEBS 与 Portworx 当前没有中国本土支持,更考验运维人员在 K8s 环境方面的知识与经验储备。
  • 若采用 K8s 支持对 I/O 性能要求较高、数据一致性要求较强的应用场景(数据库、消息中间件、缓存等),应尽量选择支持块存储的解决方案。
  • 运行对连续性要求较高的应用,应尽量选择具备高可用与数据保护的产品。

性能测试

性能是评判存储系统是否能够支撑核心业务的关键指标。我们对 IOMesh、Longhorn、Portworx 和 OpenEBS 四个方案*,在 MySQL 和 PostgreSQL 数据库场景下进行了性能压测(使用 sysbench-tpcc 模拟业务负载)。

* 对 Rook 的性能测试还在进行中,测试结果会在后续文章中更新。敬请期待!

测试环境

  • 测试集群为 3 节点混闪配置,搭载 Intel CPU,使用 2 块 SATA SSD 做缓存,存储网卡为 10GbE。
  • 测试数据选择 2 副本场景,TPCC 测试参数:time=600, tables=4, scale=50。
  • 软件版本:IOMesh 0.10.2, Longhorn 1.1.1, Portworx 2.6.3, OpenEBS 2.9.0。

测试结果

四个云原生存储系统在两项测试中的 TPS、QPS 以及 P95 延迟表现如下图所示。

02_kubernetes-persistent-storage-comparison.png

从以上数据与对比可以看出,四个存储方案在性能与稳定性上的表现,从优到次依次为 IOMesh、Longhorn、Portworx 与 OpenEBS。

作为国内首款 K8s 原生的企业级分布式存储,IOMesh 可为运行在 Kubernetes 集群上的各类有状态应用提供稳定、高性能的持久化存储资源,降低方案构建成本与运维难度,加速企业云原生转型进程。欲了解方案详情,您可阅读博客、观看产品解读视频,或点击获取《IOMesh 用户指南》。

扫描下方二维码,一键获取 IOMesh 1.0.0 用户指南。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【异常错误】deepspeed:Cannot specify num_nodes/gpus with include/exclude(deepspeed配置GPU id)

今天在使用deepspeed进行训练的时候,本来想使用GPU 4,5,6,7,但是设置了如下命令还是不管用: export CUDA_VISIBLE_DEVICES4,5,6,7 最后在deepspeed的配置文件中进行配置,才得以解决,期间遇到错误: [2023-0…

ViT-vision transformer

ViT-vision transformer 介绍 Transformer最早是在NLP领域提出的,受此启发,Google将其用于图像,并对分类流程作尽量少的修改。 起源:从机器翻译的角度来看,一个句子想要翻译好,必须考虑上下文的信息&…

使用easyui的tree组件实现给角色快捷分配权限功能

这篇文章主要介绍怎么实现角色权限的快捷分配功能,不需要像大多数项目的授权一样,使用类似穿梭框的组件来授权。 具体实现:通过菜单树的勾选和取消勾选来给角色分配权限,在这之前,需要得到角色的菜单树,角色…

笔记整理-SpringBoot中的扩展点

SpringBoot有哪些扩展点 aware 感知类接口 aware系列的扩展接口,允许spring应用感知/获取特定的上下文环境或对象。bean生命周期控制类接口 bean生命周期类的接口,可以控制spring容器对bean的处理。app生命周期控制类接口 app生命周期控制类接口&#xf…

【Lua学习笔记】Lua进阶——Table,迭代器

文章目录 官方唯一指定数据结构--tabletable的一万种用法字典和数组 迭代器ipairs()pairs() 回到Table 在【Lua学习笔记】Lua入门中我们讲到了Lua的一些入门知识点,本文将补充Lua的一些进阶知识 官方唯一指定数据结构–table 在上篇文章的最后,我们指出…

第九十四回 如何打造一个网络框架

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了"如何mock数据"相关的内容,本章回中将介绍如 何打造一个网络框架闲话休提,让我们一起Talk Flutter吧。 概念介绍 最近在项目中使用dio处理网络相关的内容,有些地方的代…

Mybatis使用collection映射一对多查询分页问题

场景&#xff1a;页面展示列表&#xff0c;需要查询多的字段&#xff0c;和一的字段。并且还要分页。 这时候直接想到的是手写sql。 /*** 标签*/private List<BasicResidentTags> tags;Data TableName("basic_resident_tags") public class BasicResidentTag…

SpringCloud微服务实战——搭建企业级开发框架(五十三):微信小程序授权登录增加多租户可配置界面

GitEgg框架集成weixin-java-miniapp工具包以实现微信小程序相关接口调用功能&#xff0c;weixin-java-miniapp底层支持多租户扩展。每个小程序都有唯一的appid&#xff0c;weixin-java-miniapp的多租户实现并不是以租户标识TenantId来区分的&#xff0c;而是在接口调用时&#…

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…

【Terraform学习】Terraform-AWS部署快速入门(快速入门)

Terraform-AWS部署快速入门 实验步骤 连接到 Terraform 环境 SSH 连接到Terraform 环境(名为MyEC2Instance的实例) 在 Amazon Web Services &#xff08;AWS&#xff09; 上预置 EC2 实例 用于描述 Terraform 中基础结构的文件集称为 Terraform 配置。您将编写一个配置来定义…

防御第三天

1.总结当堂NAT与双机热备原理&#xff0c;形成思维导图 2.完成课堂NAT与双机热备实验 fw1: <USG6000V1>sy [USG6000V1]int g0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.18.2 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit (地址无所谓&…

设计模式适合用于解决特定的软件设计问题呢

当我们在开发软件时&#xff0c;经常会遇到各种各样的问题和挑战&#xff0c;例如如何处理对象之间的关系、如何实现复杂的业务逻辑、如何处理并发访问等。这些问题都是软件设计中经常遇到的问题&#xff0c;而设计模式就是为了解决这些问题而诞生的。 以下是一些常见的软件设…

SpringCloud学习路线(11)——分布式搜索ElasticSeach场景使用

一、DSL查询文档 &#xff08;一&#xff09;DSL查询分类 ES提供了基于JSON的DSL来定义查询。 1、常见查询类型&#xff1a; 查询所有&#xff1a; 查询出所有的数据&#xff0c;例如&#xff0c;match_all全文检索&#xff08;full text&#xff09;查询&#xff1a; 利用…

leetcode 50. Pow(x, n)(x的n次方)

求x的n次方。 思路&#xff1a; 第一个想到的思路是x和它自己乘n次&#xff0c; 但是这样做会面临一些问题&#xff1a; 如果是简单的n很小的情况还好&#xff0c;但是可以看到n的取值横跨整个整数范围&#xff0c; 如果n非常大&#xff0c;一次一次乘x效率低是其一。 一般来…

探索网页原型设计:构建出色的用户体验

在当今数字化时代&#xff0c;用户对网页体验的要求日益提高。在网页设计过程中&#xff0c;扮演着至关重要的角色。通过网页原型设计&#xff0c;产品经理能够更好地展示和传达网页的整体布局、导航结构、元素位置和交互效果&#xff0c;从而使团队成员更清晰地了解设计意图&a…

mapboxGL中楼层与室内地图的结合展示

概述 质量不够&#xff0c;数量来凑&#xff0c;没错&#xff0c;本文就是来凑数的。前面的几篇文章实现了楼栋与楼层单体化的展示、室内地图的展示&#xff0c;本文结合前面的几篇文章&#xff0c;做一个综合的展示效果。 实现效果 实现 1. 数据处理 要实现上图所示的效果…

Excel透视表与python实现

目录 一、Excel透视表 1、源数据 2、数据总分析 3、数据top分析 二、python实现 1、第一张表演示 2、第二张表演示 一、Excel透视表 1、源数据 1&#xff09;四个类目&#xff0c;每类50条数据 2&#xff09;数据内容 2、数据总分析 1&#xff09;选择要分析的字段&…

leetcode做题笔记46

给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路一&#xff1a;回溯 void swap(int *nums,int index1,int index2) {int temp nums[index1];nums[index1] nums[index2];nums[index2] temp; }void prem(int* nu…

已经重新安装了MySQL,第一次应该如何登录root用户

如果已经重新安装了MySQL&#xff0c;第一次登录root用户需要按照以下步骤进行&#xff1a; 1. 打开命令行终端或控制台。 2. 通过一下命令启动MySQL服务器&#xff1a; sudo systemctl start mysql3. 登录MySQL服务器&#xff1a; sudo mysql -u root 如果服务器在本地主…

vue项目登录页面实现记住用户名和密码

vue项目登录页面实现记住用户名和密码 记录一下实现的逻辑&#xff0c;应该分两步来理解这个逻辑 首次登录&#xff0c;页面没有用户的登录信息&#xff0c;实现逻辑如下&#xff1a; 用户输入用户名和密码登录&#xff0c;用户信息为名为form的响应式对象&#xff0c;v-model…