首次揭秘,面向核心业务的全闪分布式存储架构设计与实践

本文主要是介绍首次揭秘,面向核心业务的全闪分布式存储架构设计与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。

机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作用。

机械盘依赖盘片的旋转和机械臂的移动进行 IO,目前转速基本达到物理极限,所以机械盘性能一直徘徊不前,无法满足企业核心业务对于存储性能的要求。

全闪,企业核心存储新选择

SSD 作为一种全新的闪存介质开始进入企业的数据中心,并逐渐成为应用的主流。

企业对存储的要求是性能和容量要满足业务的需求,并且价格合适。

首先从容量上来看,目前主流的 SSD 单盘容量已经达到 8T,完全满足企业各类应用的需求。

其次从性能上来看,一块 NVMe SSD 的性能大概在 100 万 IOPS,相当于 5000 块 7.2k SATA HDD 的性能。在延迟上,一块 NVMe SSD 的延迟大概在 10 微秒,是机械盘的 200 分之一。

最后从单盘的价格来看,SSD 比机械盘要贵,但是从单个 IO 的成本来看,SSD 的性价比远远高于机械盘。最近英特尔推出了 96 层 QLC NAND 颗粒,正在研究 114 层的 NAND,随技术进步,SSD 性价比会进一步提高。

总之,全闪能够满足企业核心业务对存储的高 IOPS、低延迟的要求,并且可以降低 TCO,可以说企业核心存储选择全闪是大势所趋,所以厂商要面向全闪来设计存储系统。

面向闪存的三种存储方案

如上图所示,目前业界基于全闪的存储方案主要有以下三种:

第一种是传统方式。

用 SSD 做缓存或者直接用 SSD 盘替换掉传统存储中的机械盘,这种方式无法发挥全闪的性能。

因为传统的存储诞生在机械盘的时代,是面向机械盘设计的。而当前 NVMe SSD 的性能已经达到 100 万 IOPS,与机械盘有了天壤之别。

传统存储受限于底层架构的设计,并没有针对全闪进行有效的软件改造或者优化,即使采用了全闪的配置,也无法发挥 NVMe SSD 的性能,传统存储方案已经不再适合承载高速闪存介质。

第二种是全闪阵列。

全闪阵列的性能相比传统方式有了很大提升,可以满足当前业务的要求。

全闪阵列通常采用专有的硬件,导致其成本高昂。另外一方面,传统阵列一般采用双控制器互为备份,纵向扩展无法提升性能,横向扩展受限于控制器的数量,一般情况下可以扩展到 8-16 个,导致其扩展性很差,灵活性也不够。

第三种是全闪分布式存储。

分布式存储是通过网络将存储节点联系在一起,以集群的形式提供服务。

首先,它采用通用的 X86 硬件,使硬件标准化,可以降低 TCO。

其次,扩展灵活。集群中每一个节点都具备存储和计算能力,随着节点的增加集群的容量和性能得到线性扩展。无中心设计使集群不易形成瓶颈节点,理论上可以无限扩展。

第三,针对 NVMe SSD 进行特殊的设计和优化,性能强劲。

另外,随着 25G、100G 网络的普及和 RDMA 网络低延迟的特性,使得分布式全闪的跨节点扩展不再是瓶颈。在全闪存和高速 RDMA 网络的加持下,分布式全闪架构已经成为企业核心业务的理想之选。

这篇关于首次揭秘,面向核心业务的全闪分布式存储架构设计与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144659

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe