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

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

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 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

相关文章

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo