揭秘红包场景下的高性能本地存储架构设计

简介: 红包是最近兴起的全民参与的活动,2017年新春红包在参与人数和业务峰值上都到达了历史新高,其中红包除夕开奖峰值达到90W/s。近日,阿里云系统和块存储负责人、资深专家马涛从高性能本地存储架构设计、高性能本地存储要点分享、高性能本地存储性能数据等方面分享了高性能本地存储的实战经验。

前言:红包是最近兴起的全民参与的活动,2017年新春红包在参与人数和业务峰值上都到达了历史新高,其中红包除夕开奖峰值达到90W/s。近日,阿里云系统和块存储负责人、资深专家马涛从高性能本地存储架构设计、高性能本地存储要点分享、高性能本地存储性能数据等方面分享了高性能本地存储的实战经验。

以下内容根据现场分享和幻灯片整理而成。


红包业务特点


image


支付宝红包的大致业务架构包括单元化部署、统一接入、网关、DAO、数据库以及在线离线数据处理,整体流程很长。其中数据库在整理的交易链路中起到承上启下的作用。在红包业务中,数据库具有三大特点:

(1)峰值压力大。除夕夜开奖峰值达到90W/s,但这仅仅是从业务层面考虑,由于业务对数据库不仅仅是一次事务的压力,所以开奖峰值时数据库面临的压力可达百万之多。

(2)延迟要求苛刻。数据库单位时间内能承受的事务是有严格要求的,数据库延迟降低后,会大幅降低对数据库数目的需求,进而降低所需物理机配置,对整体的业务压力也会大幅度降低。

(3)自带容灾。对于大型互联网公司,他们的数据库业务实际上是有非常完善的容灾机制,数据库具备主从复制;业务层也会有本身的容灾机制。从存储来看,上层的容灾业务做得很全面。

针对红包业务,数据库的需求可以概括为两点:一是延迟要非常低,延迟要低于100us;二是IOPS一定要高,需要达到20W以上。


现有块存储产品


image


目前阿里提供了三种不同的块存储产品,分别是SSD云盘、高效云盘和普通云盘。三者详细的对比如上图所示,可以看到:三种块存储的产品都具有高可靠的优点,它们的数据可靠性都达到了99.9999999%;它们的缺点也非常明显,IOPS和延迟不达标,IOPS最高的SSD云盘也只有20000,延迟最低的SSD云盘也有500us之久,距离20w IOPS和100us延迟的要求还存在很大的差距,这就需要设计一款新的存储产品来满足双十一以及红包业务的要求。
因此,高性能本地存储应运而生。

高性能本地存储

高性能本地存储的设计目标是为了满足高性能数据库的要求,设计要点一是超高的IOPS;另一点是超低延迟。

image

通用的云本地存储常规架构如上图所示。以MySQL数据库为例,它通过POSIX API与云主机内核交互,云主机内核包括一个标准文件系统和标准的块设备接口;云主机内核下面是云物理机内核,它自上而下由标准文件系统、标准块设备接口、硬件驱动和硬件组成。当数据库发起IO访问时,要经过7个模块才能到达硬件;请求完成后,再经过7个模块才能返回给应用层,路径相当之长。云主机内核和云物理机内核中都包括标准文件系统和块设备层,也就是说同样的模块可能在云主机内跑了一遍,还需要在云物理机上再运行一遍,功能上重叠,实现方式上也基本类似;重叠的模块导致请求访问时的路径很长,对于业务和数据库性能造成的的直观影响是延迟高、性能差。

因此,采用通用的云本地存储常规架构是无法解决红包业务的需求,也不能设计出高性能的存储产品。那该如何将云本地存储的性能发挥到极致呢?我们的切入点是高性能存储架构。

image


上图是高性能存储架构,图中左侧是标准物理机情况下存储性能达到极致的框架:它的层次比较少,数据库经过POSIX API直接就到标准文件系统、块设备层、硬件驱动、硬件,请求所经过的模块比上文提到的云本地存储常规架构少2-3个,性能也相对有所提升。

那么如何在云主机的环境下搭建一个类似物理机的环境呢?首先云主机的必要模块是必须保留的,应该尽可能精简云物理机内核中的模块,进而达到性能的最佳值。如上图右侧所示,首先必须保留云主机内的标准文件系统和块设备层,因为它们和业务数据库是息息相关的,标准文件系统提供了标准的Open、Creat、Write之类的接口,如果省去该模块,业务是无法适配这种修改的。

对用户而言,云物理机内所有的修改都是透明的,因此在云物理机上只保留硬件驱动,从而达到最佳性能。


高性能本地存储关键组件


image


在云主机内,标准文件系统是不能变化的,因为它是存储与数据库、业务交互的地方。因此,想要进行性能优化,只能考虑在块设备层、硬件驱动、硬件三个模块入手加速本地存储的性能。

经过一系列的调研与研发测试,最终在块设备层使用了标准virtio blk驱动;硬件驱动使用了SPDK工具集;硬件使用了NVMe SSD。下面对这三个模块进行详细的解读与分析。

VirTio-blk

image


利用Virtio blk可以实现云主机和云物理机之间的高性能数据交互。Virtio提供了半虚拟化的接口,所谓半虚拟化就是在虚拟机和物理机之间通过某种方式(修改了虚拟机某些接口),从而使得虚拟机和物理机之间实现高速传输,性能比传统的全虚拟化有所提高。

Virtio blk是标准块设备接口,通过块设备接口可以对块设备进行格式化、分区、创建文件系统等标准操作,对用户完全透明,数据库无需任何更改。Virtio blk另一个优点是采用了Virtio协议,通过共享环交换数据。在上图中,蓝色部分是虚拟机,红色部分是物理机。虚拟机通过Virtio Front End将数据通过Virtio Ring传递到后端的Virtio Back End;Virtio Back End将这些数据处理后再回传给Virtio Front End,完成了一次数据的交互。

SPDK

除了Virtio blk之外,SPDK是另一个重要的组件。SPDK全称是Storage Performance Development Kit,它是一组用来编写高性能、高扩展性的用户态存储应用的工具集。

image

相比于SPDK,DPDK可能更为人知,它主要是为了解决网络方面的问题。SPDK在很多模块上是与DPDK共用的,它的核心观点是通过用户态协议加无锁设计加轮询机制达到高性能:

(1)用户态协议是指SPDK实现了用户NVMe协议,让用户可以在旁路内核的情况下去访问设备;其缺点是不支持posix API、不支持标准的文件系统,也没有标准的设备支持,应用性较差。

(2)无锁设计,对于高性能编程而言,无锁设计都是核心的思想,此次不再展开。

(3)轮询机制,SPDK提供了Polling Mode ,它摒弃了内核中常用的中断这类的机制,消除了中断的影响,提高了整体性能。

NVMe SSD

image


NVMe SSD有两个核心点:首先SSD是PCI-E的SSD,本身的访问速度是非常快的;采用NVMe之后,速度会更快,NVMe是用来代替SCSI的新协议,它具有高带宽、低延迟的特点,比SCSI协议更简单高效,提高了系统整体的性能。


数据链路


image

高性能本地云储存的数据链路如上图所示,在云主机中,核心数据库、POSIX API和标准文件系统保持不变。云数据库通过标准的POSIX API 访问标准文件系统;标准文件系统通过Virtio-Blk和SPDK用户态驱动直接交互,在SPDK用户态驱动中再与NVMe SSD交互,减少了数据链路的长度,同时提高了IO性能。

延迟分布

image


高性能本地云储存搭建之后,我们使用了fio磁盘测试工具在CentOS7上对通用虚拟化架构本地盘和阿里云高性能本地存储的随机IO平均延迟进行了对比测试。测试时块设备IO调度器均设置为noop,测试参数为--direct=1--bs=4k--iodepth=1--numjobs=1。

从上图可以看出,在随机读两方面,阿里云高IO本地盘延迟只有70us左右,而通用虚拟化架构本地盘延迟在130us左右;随机写方面,阿里云高IO本地盘的延迟只有30us左右;通用虚拟化架构本地盘延迟在60us左右。

数据库性能对比

image


上图是新旧数据库Index-Update性能对比,可以看到:在旧数据库实例的情况下,TPS只有14242.65、RT为8.21ms;新数据库实例下,TPS可以达到26969.81、RT为1.7ms,整体性能大幅度提升。

释放红包技术福利,即将在公有云上线

通过延迟分布和数据库性能的对比,可以看出高本地云存储对性能提升起到了很大的作用,在红包活动中发挥了很大的作用。在完成双十一及红包活动之后,阿里云希望将高性能本地云存储技术推广给其他用户使用。因此,在今年2月底,高性能本地云存储在公共云上线,它的技术架构与支撑支付宝红包的技术架构相同:采用NVMe SSD+SPDK技术,也是全球首家采用该技术的高性能本地盘。

image


本地盘2.0性能非常好,容量为3TB、IOPS为50万、延迟为50us、带宽为4GB。具体参数如下表所示:

image

可以看出,最优产品读写IOPS单盘可达24000;读带宽达2GBps;写带宽为1.2GBps。


高IO本地存储实例


image


有了本地盘作为基础,如果想要实现高性能本地存储实例,还需要在计算性能、存储IO性能、网络性能上进行相应地提升:

(1)为了保证计算性能稳定,采用了Intel Xeon E5-2682 v4(Broadwell)处理器,主频为2.5GHz,DDR4内存。

(2)为了保证存储IO性能稳定,采用了基于NVMe SSD和SPDK技术,提供高达数十万随机IO读写能力的同时,保持在us级别的时延水平。

(3)网络性能方面,实例网络性能与计算规格相对应(实例计算规格越大则网络性能越强)。

综上所述,将SPDK与NVMe SSD技术结合起来,能够让本地盘接近或类似物理机的性能,在双十一以及新春红包这类峰值压力很大的场景下,性能依旧很好。

原文链接

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
相关文章
|
1月前
|
消息中间件 缓存 架构师
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
|
20天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
38 8
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
23天前
|
边缘计算 监控 自动驾驶
揭秘云计算中的边缘计算:架构、优势及应用场景
揭秘云计算中的边缘计算:架构、优势及应用场景
|
2月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
39 9
|
2月前
|
机器学习/深度学习 存储 人工智能
用60%成本干80%的事,DeepSeek分享沉淀多年的高性能深度学习架构
【10月更文挑战第2天】近年来,深度学习(DL)与大型语言模型(LLMs)的发展推动了AI的进步,但也带来了计算资源的极大需求。为此,DeepSeek团队提出了Fire-Flyer AI-HPC架构,通过创新的软硬件协同设计,利用10,000个PCIe A100 GPU,实现了高性能且低成本的深度学习训练。相比NVIDIA的DGX-A100,其成本减半,能耗降低40%,并在网络设计、通信优化、并行计算和文件系统等方面进行了全面优化,确保系统的高效与稳定。[论文地址](https://arxiv.org/pdf/2408.14158)
75 4
|
3月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
110 4
|
4月前
|
运维 Cloud Native 容灾
核心系统转型问题之单元化架构对于自研可控场景该如何支持
核心系统转型问题之单元化架构对于自研可控场景该如何支持
|
4月前
|
人工智能 Serverless API
Serverless 架构实现弹幕场景问题之用SAT进行双主键的插入操作如何解决
Serverless 架构实现弹幕场景问题之用SAT进行双主键的插入操作如何解决
43 0
|
3月前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
下一篇
DataWorks