热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式存储_面向核心业务的全闪分布式存储架构设计与实践

本文由编程笔记#小编为大家整理,主要介绍了面向核心业务的全闪分布式存储架构设计与实践相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了面向核心业务的全闪分布式存储架构设计与实践相关的知识,希望对你有一定的参考价值。






Q
ingStor NeonSAN 是一款面向核心业务设计的全闪分布式块存储,打破了传统存储的容量与水平扩展的瓶颈,性能可以媲美全闪中高端存储阵列,
能够很好支持 Oracle RAC 等关键应用,在金融、电力、广电、制造、测绘等行业广泛落地。







我们将在本文中揭开 NeonSAN 架构的神秘面纱,介绍她是如何做到高性能和高可靠的产品体验,并在最后详细分享一个典型案例:NeonSAN 替换 Oracle 一体机,承载某大型保险集团 OLTP 和 OLAP 系统,满足数据不断增长的互联网金融业务需求。







1







面向闪存的三种存储方案






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








1. 
传统方式






因为传统的存储诞生在机械盘的时代,是面向机械盘设计的,IOPS 通常在一百左右。而当前主流 NVMe SSD 的性能已经达到百万 IOPS 级别。这两类存储介质的机制迥异。






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






2. 
全闪阵列






全闪阵列的性能相比传统方式有了很大提升。






但是,全闪阵列通常采用专有的硬件,成本高昂。另外,传统阵列一般采用双控制器互为备份,纵向扩展无法提升性能,横向扩展受限于控制器的数量。这使得全闪阵列无法灵活适应数据爆发增长的业务场景。






3. 
全闪分布式存储






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






通常采用通用的 X86 硬件,使硬件标准化,可以降低 TCO。
集群中每一个节点都具备存储和计算能力,随着节点的增加集群的容量和性能得到线性扩展。
无中心设计使集群不易形成瓶颈节点,理论上可以无限扩展。
针对 NVMe SSD 进行特殊的设计和优化,性能强劲。





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







2







企业级分布式块存储







关于 NeonSAN 名字的由来:后半部分是SAN代表了产品的形态;Neon 是元素周期表里面氖的代号,是一种惰性气体,具有极高的稳定性。所以 
NeonSAN 的名字寓意着这是一款稳定的企业级存储产品。








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


NeonSAN 核心模块由数据层和控制层组成,此外包括前端接口与运维管理工具层。






NeonSAN 核心模块采用并行流水线技术,设计了全闪存储系统的资源调度系统、内存管理系统、元数据管理系统、RDMA 网络收发系统等,打造高可用、高可靠、高性能、扩展灵活的全闪分布式存储。






NeonSAN 提供 9 个 9 可靠性,单卷性能达到 10 万 IOPS,最小延迟小于 90 微秒。






在扩展方面,NeonSAN 可以扩至 4096 节点,容量和性能随节点的增加而线性增长。






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






NeonSAN 的基本架构是由 Zookeeper 服务、元数据服务、管理服务、存储服务和接入服务五部分构成。








Zookeeper 提供集群的发现服务;元数据服务用来记录集群中的元数据,如节点信息、SSD 的信息、卷信息等;






管理服务提供集群的管理功能,如节点的上线、创建卷等。






数据存储服务用来给客户提供具体的  I/O,承载业务发来的  I/O 请求。
其采用对等的设计,每个存储节点的地位是相等的,都可以提供  I/O 服务。






对等设计可以保证集群的某一个节点发生故障时,其他节点能够接替故障节点继续服务,保证业务的连续性,同时为集群的容量和性能线性扩展提供基础。






接入服务,第一个模块是 QBD 内核驱动,在 Windows Server 和 Linux Server 上都有对应的版本,它可以让服务器以使用本地盘的方式使用 NeonSAN,上层业务不需要做任何改造就可以对接 NeonSAN,非常方便。






第二个模块是 QEMU,可以为虚机提供云硬盘。






第三个模块是通用的 iSCSI 接口,可以为 VMware 等虚拟化平台提供存储服务。






第四个模块是 NVMe-oF 接口,提供端到端的高速数据传输服务,具备非凡的性能。






此外,还提供 CSI 接口,为容器提供持久化的存储服务。其支持提供克隆、快照、QoS、在线扩容等高级功能。






3







如何满足网络高可靠和高可用







NeonSAN 的网络分为两部分:前端业务网络和后端互联网络,采用两个前端交换机和两个后端交换机,组建高可用网络。






每个 NenonSAN 节点配备双网卡,每张网卡有两个网口,分别连接到后端交换机和前端交换机。


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



假如交换机 A 发生故障就会影响到 NeonSAN 1、2、3 节点的网卡 A,凡是通过这些网卡进行交互的业务也会受到影响。此时 NeonSAN 节点就会自动把网络流量切换到网卡 B 上,走交换机 B,保证整个集群网络的可用性。







4







如何满足数据高可靠和高可用






NeonSAN 的数据可靠性及可用性是通过副本机制来实现的。







在 Linux 服务下看到块设备,或者在 Windows Server 下我们看到一张盘,对应到 NeonSAN 集群里,就会把这个盘切成一片片的 Shard。





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







如上图所示,有红、黄、绿、紫这四个片,每一片都会有三副本,分别存放在不同的节点。任何一个节点上的数据损坏,都不会导致数据的丢失。






如果节点 1 不能提供服务,节点 2 或 3 可以继续提供服务,保证整个集群的可用性。






NeonSAN 的数据写入是三个副本同时写入,保证数据间的强一致性。数据的读取是从主副本读的。数据的副本可以按卷进行灵活的配置,在一个集群中既可以有单副本的卷,也可以有两副本的卷,还可以有三副本的卷。





NeonSAN 支持精简置备和全置备,一个集群可以同时存在精简置备的卷和全置备的卷。





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






我们通过一个例子来介绍 NeonSAN 强一致性写过程中的 I/O 路径。






首先,客户端发  I/O 给三副本的主副本节点,当主副本节点收到  I/O 请求后会同时做两件事:将  I/O 请求发给它本地的 SSD,同时也会把这个请求发给两个从副本。当两个从副本 I/O 完成以及本地的  I/O 同时完成后才会返回给客户端写成功,实现强一致三副本的写入。






5







NeonSAN 的独门秘籍






NeonSAN 是一个面向全闪的分布式存储系统,针对全闪有哪些特殊的设计?




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







首先, NeonSAN 采用了
极短  I/O 路径
,这是可以提供卓越性能的根本。








NeonSAN 只要 3 步就可以完成一个  I/O,当客户端的  I/O 发到存储节点后,存储软件做完处理后直接发给本地的 SSD。






业界某些分布式存储,比如 Ceph,却要经历很多步骤:先经过存储软件的处理,再发给本地文件系统,还要写日志,某些系统还需要再经过缓存,最后才能落到 SSD,这个  I/O路径是非常长的。简单来说就是很慢。






NeonSAN 采用自研 SSD 管理模块直接管理本地裸设备,不依赖本地的文件系统,不需要日志,也不需要 Cache,极大精简了  I/O 路径,从而让延迟减少到最低,接近于 SSD 延迟的量级。






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






传统机械盘只有 1 个队列,深度是 32,NVMe SSD 一般盘有 128 个队列,每个队列的深度是 128,还采用传统的软件设计,显然 NVMe 是处于饥饿的状态,无法发挥队列和深度优势。






NeonSAN 采用并行流水线,将  I/O 进行拆分,拆分成接收、调度和落盘。






举个例子,在机械盘的年代就像超市只有 1 个收银台,只能排 1 队。但是到了 NVMe SSD 时代,超市有 128 个收银台。如果我们还排 1 队就对资源造成极大的浪费,所以需要采用多个队列并行 I/O,充分发挥 NVMe SSD 本身的性能,提升 SSD 的使用率。






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






在微秒的 SSD 时代,操作系统逐渐暴露出一些问题。比如低效 CPU 核心调度和内存资源的竞争,以及调度时的切换等带来了巨大的延迟。






在高并发的压力下,多核心 CPU 的竞争与不合理的调度成为性能的瓶颈。NeonSAN 专门设计了资源调度引擎,避免由于调度问题和内存争抢问题带来的延迟开销。






首先,在网卡上我们分配专门的接收与解析  I/O 流水线,针对  I/O 调度流水线我们给它分配了独享的 CPU,避免调度流水线来回切换产生不必要的上下文开销,做到特定的 CPU 服务专门的流水线。






在内存方面,在系统软件启动时一次申请所需内存,根据不同流水线需求的多少按需分配给接收与解析 I/O 调度、数据落盘等流水线,避免在 I/O 过程中频繁申请与释放,带来的访问页表、内存锁等额外开销及内存碎片问题。






资源调度引擎保障了 NeonSAN 在获得高效 I/O 的同时将延迟控制在很低的水平。






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






分布式存储是依赖于网络的。NeonSAN 将业务与数据网络分离,存储网络中的  I/O 不会对业务网络造成压力,避免资源的竞争。






NeonSAN 采用端到端的 RDMA 网络设计,无论是存储内部节点之间还是存储服务和客户端之间都采用了 RDMA 网络。





RDMA 网络的内核旁路(kernel bypass)与零拷贝的特点让网络中的单个  I/O 延迟变得非常低,基于异步的消息机制能让多个 I/O 的并发显得效率更高。







6







压力和性能测试






上面介绍了 NeonSAN 的基本架构与面向全闪的特殊设计,接下来看看 NeonSAN 的真实性能表现。





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



从 E 企研究院的测试结果可以看到:在两个客户端压力下,随着卷数量的增加,NeonSAN 集群提供的性能线性增长,延迟几乎不变。






以 4K 写为例,单个卷的 IOPS 是 13 万多,4 个卷的 IOPS 增加到 47 万,接近线性增长;单个卷的延迟是 0.943 毫秒,4 个卷的延迟基本没什么变化。







7







典型案例







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






在采用分布式架构之前,用户采用 Oracle SuperCluster Solaris 平台,采购与维保费用昂贵,且扩容复杂,无法快速适应业务发展的需求。








于是客户把视角转到了基于 X86 计算与存储分离的分布式架构,采用三节点全闪配置的 NeonSAN 作为存储节点,配置三副本用于Oracle 数据库存储卷。






截止2020年底,用户已经完成了数次扩容,NeonSAN 整体规模已经达到了几十个节点,承载 OLTP 和 OLAP 业务,满足数据不断增长的互联网金融业务需求。






案例详情,请点击文末“相关文章推荐 -- 某大型保险集团在线财险业务系统分布式存储架构实践"。






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






NeonSAN 分布式存储方案的优势主要体现在以下几个方面:






首先,采用计算与存储分离的全分布式架构后,海量的数据压力分散到了多个并发存储节点,系统性能、吞吐量按照线性扩展。






其次,全闪的存储节点之间采用 RDMA 互联,性能提升 100% 以上,存储系统提供负载均衡机制,有效避免单点性能瓶颈。





通过开放的 X86 平台取代了传统数据库一体机与集中式存储设备,大幅缩短了存储系统的建设与扩容周期,有效满足业务数据量激增的扩容需求,同时大幅度节省采购、维护与运营成本。







8







总结













N
eonSAN 针对全闪等新型存储介质进行的架构设计,能够提供高可靠、高可用,性能卓越的存储服务,其丰富的接口,可以承载数据库等传统应用,原生适配虚拟化、大数据、容器等多种应用生态,服务云时代高效的数据存储和管理,








NeonSAN 具备丰富的企业级特性,基于同步及异步的数据复制可以灵活构建各类灾备和双活解决方案。经过大量企业客户核心业务的长期验证,NeonSAN 是一款真正可以承载企业核心业务的全闪分布式存储产品。






本文作者:魏国武, QingStor 资深研发工程师












点击阅读原文或扫描二维码




免费试用 QingStor 企业级分布式存储



















- FIN -










相关文章推荐


















































推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 职业道路的选择与建议
    职业道路的选择与建议2010-09-2621:31:53标签:职业感悟建议   [推送到技术圈]版权声明:原创作品,允许转载, ... [详细]
  • 弹性云服务器ECS弹性云服务器(ElasticCloudServer)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
author-avatar
时刻要有危机感01
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有