分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

news2024/11/19 7:35:08

作者:深耕行业的 SmartX 金融团队 闫海涛

在《解决 SAN 交换机“卡脖子”并升级存储架构?一文解析 RoCE 与相关存储方案趋势》文章中,我们分析了如何利用支持 RoCE 技术的分布式存储,同步实现 IT 基础架构的信创转型与架构升级,并简单介绍了 SmartX 分布式存储 ZBS 对 RoCE 的支持能力。

本文,我们将进一步解读 ZBS 如何支持 RoCE,同时为读者提供启用 NVMe over RDMA(RoCE)接入协议的 ZBS 在实验室环境和业务场景下的真实性能数据,并与 iSCSI、NVMe over TCP 协议场景进行对比,帮助读者直观了解 RoCE 技术的成熟性与生产环境可应用性。

ZBS 如何支持 RoCE

SmartX 分布式存储 ZBS 提供 2 种存算分离架构下的数据接入协议,分别是 iSCSI 和 NVMe-oF。其中,为了满足不同应用对于性能和时延的不同需求,ZBS 在 NVMe-oF 的实现上选择支持 NVMe over RDMA(RoCEv2)和 NVMe over TCP。这两个形态区别仅体现在外部客户端使用哪种协议接入 Access,在元数据管理上并没有区别。

NVMe-oF 协议本身与 iSCSI 协议有很多相似的地方,例如客户端标识为 initiator 端,服务端为 Target 端,NVMe-oF 协议中使用与 iSCSI IQN 近似的 NQN 来作为协议通讯双方的标识等。同时,NVMe-oF 定义了 Subsystem(子系统,相当于 SCSI 体系下的 Target)和 Namespace(命名空间,类似于 SCSI 体系下的 LUN)专有标准。

相比于 iSCSI 通过 initiator + Target 的数据链路控制,NVMe-oF 可以支持 initiator + Namespace 这样更小的链路控制粒度。NVMe-oF 在路径策略选择上(协议原生支持 Multipath)是通过 ANA(Asymmetric Namespace Access)机制指定 Target 链路优先级,再由客户端结合优先级与自身的链路状态探测结果选择 I/O 具体路径。

ZBS 会将所有的可用链路设置为 OP(最优链路)和 Non-OP(次优链路)两种状态,其他状态为发生异常或变化时由 Driver 自动标记。对于每个 initiator + Namespace 的组合,仅返回 1 个最优接入点和 2 个次优接入点。在最优接入点可用时,客户端将仅通过最优接入点访问数据,在异常时选择 2 个次优接入点中的一个进行访问(出于简化安全性处理的考虑,部署时会要求客户端配置为 AB 模式,即使 2 个次优接入点是等价的,也不会进入 AA 模式,同时从两个接入点中下发 I/O)。这样既可保持各个接入点的负载基本均衡,同时又尽可能发挥多个接入点的处理能力。

NVMe-oF 接入架构

欲深入了解 ZBS 中 iSCSI 和 NVMe-oF 的支持设计,请阅读:分布式块存储 ZBS 的自主研发之旅|接入协议之 NVMe-oF。

另外,由于 NVMe-oF 需要工作在无损网络环境中以保证最佳性能,这要求以太网交换机需支持网络拥塞控制功能 ECN,目前 ZBS 支持 L3 DSCP 的 PFC 流控和 Global Pause 流控两种主流模式。我们也基于 ZBS 进行了信创交换机 RDMA 打流测试,测试详情可阅读往期文章《一文了解 SmartX 产品信创硬件选配最佳实践》了解。

NVMe over RoCE vs. NVMe over TCP vs. iSCSI:启用不同存储协议的 ZBS 性能表现

实验室性能测试

我们在相同的测试环境和测试方法下,分别使用不同的接入协议(iSCSI、NVMe over TCP 和 NVMe over RDMA)进行 ZBS 性能测试。结果显示,使用 NVMe over RDMA 作为接入协议,可以取得更高的 I/O 性能输出,其表现为更高的随机 IOPS 和顺序带宽,以及更低的延时表现。欲了解详细测试过程,请阅读:分布式块存储 ZBS 的自主研发之旅|接入协议之 NVMe-oF。

集群性能测试结果

业务场景性能测试

测试背景

某金融客户基于服务器和本地硬盘的方式组建大数据平台,伴随业务的增长,I/O 性能逐渐显现不足。客户过往虽然通过扩容服务器节点的方式来分摊 I/O 负载,以达到提升性能的目的,但该种方式也引起了额外的资源(扩容节点连带的计算资源)投入。借着机房更换的契机,客户希望通过存算分离的架构方案(ZBS),同时实现存储性能提升和大数据平台搬迁至新机房的两个目标。

对于存算分离架构,客户针对 iSCSI 和 NVMe over RDMA(RoCE)两种协议进行了业务场景下的性能测试,并与生产环境进行对比。

测试架构

如上图所示,SmartX 分布式存储通过对接裸金属计算服务器承载大数据的 HDFS 和 HBase 等相关服务,测试主要定位在如下两个场景:

  • HBase 数据表导出至 HDFS ,观察数据表导出时间。
  • 通过 Phoenix 程序直接查询 HBase 数据库,观察接口数据响应时间(响应延迟)。

环境与配置

生产环境

生产环境有配置 1 和配置 2 两种服务器配置,具体如下:

配置 1

配置 2
 

测试环境

说明:因为 NVMe over RDMA 技术对计算平台操作系统版本存在兼容性要求,故 Anolis OS 用于 NVMe Over RDMA 协议的测试。

测试结果

HBase 表导出

从 HBase 3 个表导出的用时对比来看,基于 NVMe over RDMA 接入协议的 SmartX 分布式存储相比生产物理机环境,导表时间缩短 72%;相比 iSCSI 接入协议,导表时间缩短约 60%

SQL 单表查询

为了更真实反映出存储性能差异对于该场景的性能影响,通过使用 Phoenix 本地直接查询 HBase 方式进行测试(消除接口服务器自身影响和网络环境差异)。结果显示,SmartX 分布式存储(使用 NVMe over RDMA 接入协议)相比生产物理机环境,查询时间缩短 71%,相比 SmartX 分布式存储(使用 iSCSI 接入协议),查询时间缩短约 60%

总体而言,在大数据应用场景下,基于不同存储架构与存储接入协议的存储系统,其性能表现有较大差异,其中开启 NVMe over RDMA(RoCE)的 ZBS 可大幅提升应用运行效率,满足大数据应用对高性能与低时延的需求。此外,如上测试结果仅是单表差异,如果是多表混合查询场景,分布式存储架构和 NVMe-oF 的优势在多任务的累积下会显现出更明显的差异。

某金融机构也对比测试了 SmartX 分布式存储(开启 RDMA)与全闪集中式存储执行数仓跑批任务的性能。结果显示,相比生产环境,SmartX 分布式存储执行全部存储过程集,3 个月平均跑批时间缩短 45%;其中,某耗时最长存储过程,3 个月平均跑批时间缩短 55%,其他存储过程集 3 个月平均跑批时间缩短 31%。

欲深入了解测试细节,请阅读:金融用户实践|分布式存储支持数据仓库业务系统性能验证。

总结

通过以上技术解读与性能评测可以看出,ZBS 对新一代网络技术具备卓越的支持能力,开启 NVMe over RDMA(RoCE)的 ZBS 不仅可提供更高的性能和更低的时延,还可充分支持大数据、数据仓库等性能敏感应用,满足生产环境业务需求。

结合《一文解析 RoCE 与相关存储方案趋势》中提到的 SAN 交换机“卡脖子”现状,ZBS 不仅能够支持高性能应用场景,还可帮助用户降低 SAN 交换机使用需求,以以太网交换机进行国产化替代。欲了解更多 SmartX 超融合信创云基础设施解决方案与相关用户实践,欢迎阅读电子书《信创云转型合集:技术路线、厂商评估与用践》

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

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

相关文章

源码和包管理器安装U-Boot tools

源码和包管理器安装U-Boot tools U-Boot(Universal Bootloader)是一个开源的嵌入式系统引导加载程序,用于引导嵌入式系统,如单板计算机、嵌入式开发板等。U-Boot 提供了一种灵活的引导解决方案,支持多种处理器架构和嵌…

时隔一年的测评:gpt3.5发展到什么程度了?

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍1、chatgpt是什么?2、主要特点3、工作原理4、应用限制5、使…

6.5 共享数据

本节介绍Android的四大组件之一ContentProvider的基本概念和常见用法:首先说明如何使用内容提供器封装内部数据的外部访问接口,然后阐述如何使用内容解析器通过外部接口操作内部数据,最后叙述如何利用内容解析器读写联系人信息,以…

国考省考行测:图形推理,数量规律,多面体截面图,视图

国考省考行测:图形推理,数量规律 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和…

JavaWeb——005 请求响应 分层解耦(Postman、三层架构、IOC、DI、注解)

SpringBootWeb请求响应 这里写目录标题 SpringBootWeb请求响应前言1. 请求1.1 Postman1.1.1 介绍1.1.2 安装 1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 …

基于HT32的智能家居demo(蓝牙上位机)

参加合泰杯作品的部分展示,基于HT32的智能家居,这里展示灯光的相关控制,是用蓝牙进行的数据透传,参考了一些资料,美化封装了一下之前的上位机界面。 成果展示 点击主界面的蓝牙设置,进行连接,下…

数据结构--二叉排序树(Binary Search Tree,简称BST)

这里写自定义目录标题 二叉排序树二叉排序树与排序数组没有排序数组,链式存储链表的对比二叉排序树概念对于搜索操作,对于插入操作,对于删除操作, 分析删除节点代码运行结果 二叉排序树 二叉排序树与排序数组没有排序数组&#x…

spring boot整合cache使用memcached

之前讲了 spring boot 整合 cache 做 simple redis Ehcache 三种工具的缓存 上文 windows系统下载安装 memcached 我们装了memcached 但spring boot没有将它的整合纳入进来 那么 我们就要自己来处理客户端 java历史上 有过三种客户端 那么 我们用肯定是用最好的 Xmemcached …

算法 -【从前序与中序遍历序列构造二叉树】

从前序与中序遍历序列构造二叉树 题目示例1示例2 分析代码 题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例1 输入: preorder [3,9,20,1…

东方博宜 1261. 韩信点兵

东方博宜 1261. 韩信点兵 #include<iostream> using namespace std ; int main() {bool m true ;int i 1 ;while (m){ if(i%51 && i%65 && i%74 && i%1110 )break ;i ;} cout << i ;return 0 ; }

去中心化时代,品牌如何赢得确定性增长

去中心化时代下&#xff0c;品牌面临众多挑战。在如今复杂的环境下&#xff0c;有很多不确定的因素&#xff0c;流量、资本等等&#xff0c;这些都是品牌发展过程中的不确定因素&#xff0c;越是复杂的环境下&#xff0c;品牌越要保证自己核心优势&#xff0c;找到并放大我们的…

2月28日做题总结(C/C++真题)

今天是2月28日&#xff0c;做题第三天。道阻且长&#xff0c;行则将至&#xff1b;行而不辍&#xff0c;则未来可期&#xff01; 第一题 static char a[2]{1,2,3};说法是否正确&#xff1f; A---正确 B---错误 正确答案&#xff1a;B 解析&#xff1a;数组定义时&#xf…

网络编程课后模拟面试

思维导图&#xff1a; 面试题目&#xff1a; 1、 什么是回调函数 答&#xff1a;回调函数是一种作为参数传递给其他函数的函数。当特定事件发生或条件满足时&#xff0c;调用包含回调函数的函数来执行特定的操作。回调函数允许在不阻塞程序执行的情况下&#xff0c;异步地处理…

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装介绍watchdog使用python--dotenv使用&#xff08;操作环境变量&#xff09; 七、虚拟环境介绍Mac/linux创建虚拟环境…

liunx操作系统 进程的基本概念

进程的基本概念 计算机结构体系冯诺依曼 操作系统的管理进程进程的特性标识符系统的调用 创建新的进程 进程的状态进程队列进程的状态在liunx查看进程状态、 计算机结构体系 冯诺依曼 在没有存储器之前&#xff0c;所有的信息都是直接进入CPU&#xff0c;这样效率很差&#xf…

【Go语言】Go语言中的切片

Go语言中的切片 1.切片的定义 Go语言中&#xff0c;切片是一个新的数据类型数据类型&#xff0c;与数组最大的区别在于&#xff0c;切片的类型中只有数据元素的类型&#xff0c;而没有长度&#xff1a; var slice []string []string{"a", "b", "c…

LabVIEW磁阻自动优化测量系统

LabVIEW磁阻自动优化测量系统 介绍了一种基于LabVIEW开发的磁阻自动优化测量系统&#xff0c;通过自动优化测试分辨率和高度模块化设计&#xff0c;大幅提升磁阻测试的效率和准确性。系统采用功率电源、电磁铁、高分辨率特斯拉计、步进电机转动器、精密电流源与精准电压表等硬…

Zookeeper启动报错排查

前言&#xff1a;生产linux部署的zookeeper&#xff0c;执行启动脚本后&#xff0c;还是无法使用&#xff0c;故进行重启排查 在zookeeper的bin目录下执行 ./zkServer.sh start-foreground 可实时查看启动日志排查问题 根据上面的日志可以看出&#xff0c;是zoo.cfg配置文件里…

Vue3之属性传值的四种情况

文章目录 Vue3之属性传值的四种情况一、引言二、父组件向子组件传值三、子组件向父组件传值四、祖先组件向后代组件传值五、兄弟组件之间传值 Vue3之属性传值的四种情况 一、引言 在vue3中&#xff0c;组件与组件之间是可以传递属性的&#xff0c;包括三种类型&#xff1a; …

【vue】什么是虚拟Dom,怎么实现虚拟DOM,虚拟DOM一定更快吗

什么是虚拟Dom 虚拟 DOM 基于虚拟节点 VNode&#xff0c;VNode 本质上是一个对象&#xff0c;VDOM 就是VNode 组成的 废话&#xff0c;js 中所有的东西都是对象 虚拟DOM 为什么快&#xff0c;做了哪些优化 批量更新 多个DOM合并更新减少浏览器的重排和重绘局部更新 通过新VDO…