HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

高 IO 型本地盘存储实例:双十一中,阿里如何将数据库性能提升 100%、响应时间减少 80%?

  • 2017-02-26
  • 本文字数:2589 字

    阅读完需:约 8 分钟

2016 年双十一期间,阿里的交易额再次刷新历史记录,其中支付宝的支付峰值达到 12 万笔 / 秒。抛开业务数字,阿里在技术上也是做足了功课,除了使用 RocketMQ 消息中间件承受万亿级消息容量之外,还启用了上千个高 I/O 型的本地盘存储实例。

阿里云告诉 InfoQ 这一举动使得数据库的性能提升近 100%、平均响应时间节省了 80%。那么让阿里云取得如此效果背后的技术利器是什么呢?为此,InfoQ 采访了三位相关负责人。

阿里云在块存储的基础上,以半虚拟化磁盘接口 virtio-blk 研发出了高 IOPS 并发、低 IO 延迟的本地盘存储实例。

随着硬件技术的发展,硬件自身性能越来越高,存储软件的瓶颈也就越发明显。为了解决 I/O 性能上的痛点,阿里云开始基于 NVMe 协议和英特尔开源项目 SPDK 研发高 IO 存储实例。

NVMe SSD 与传统 SATA SSD 的区别

NVMe 的全称是 Non-Volatile Memory express,顾名思义是为闪存类存储介质全新设计的协议接口,最早由英特尔于 2007 年发起,当前已成为基于 PCI-E SSD 闪存所采用的主流接口协议。而 SATA SSD 所使用的 AHCI(Advance Host Controller Interface)协议,是在 80 年代后期基于 IDE/ATA 所发展起来的,面向传统机械硬盘所设计的存储接口协议。随着 SSD 本身性能的不断增强,面向机械硬盘设计的 AHCI 协议已经明显成为制约 SSD 硬盘读写性能进一步提升的最大短板,而 NVMe 协议则成为了替代 AHCI 的完美选择。相比于 AHCI,NVMe 的优势主要体现在以下方面:

  • 低延迟

    AHCI 的每个命令都需要读取 4 个不同的寄存器,而 NVMe 无需读取寄存器就可以发出命令,延迟降低至 AHCI 的 25%;

  • 多队列和更高的队列深度

    支持多队列让 CPU 的性能得到更好的释放,单核再也不是 IOPS 的瓶颈了。队列深度更是从 32 提升到惊人的 64K,能够充分压榨出 SSD 的 IOPS 性能。

SPDK:英特尔针对高性能存储应用开发的开源项目NVMe 接口标准的固态盘通常为 SATA SSD 性能的 5-8 倍,但由于 Linux 内核驱动实现与调度机制的限制,传统的软件定义存储系统并不能完全释放其性能。为了帮助软件定义存储开发商充分发挥 NVMe 接口 SSD 的超高性能,英特尔开发了 SPDK(Storage Performance Development Kit),包含一套驱动程序,以及一整套端到端的存储参考架构。SPDK 的目标是能够把硬件平台的计算、网络、存储的最新性能进展充分发挥出来,其框架如下:

技术创新点

  1. 借助 SPDK 实现了用户态高性能存储架构,有效降低了虚拟机存储的 IO 栈深度
  2. 通过优化 NVMe 硬件中断的处理,减小因为 NVMe 硬件中断处理带来的额外 IO 延迟开销
  3. 通过优化虚拟机驱动程序,降低虚拟机访问 NVMe 硬件过程中的通信开销

研发中都攻克了哪些难关?从项目初始立项到正式上线经历 1 年 2 个月,主要使用 C 语言来开发。研发过程中主要的障碍是使用 NVMe 以及 SPDK 等新的存储技术带来的问题:

1 新协议的使用

因为使用了 SPDK,此前通过操作系统来管理的磁盘就需要应用程序自己来进行管理,因此不仅需要开发相关的功能,对阿里云整体的运维、管控都提出了新的要求和挑战。

2 软硬件性能同时提升

具体而言,当 NVMe 设备处理单个 IO 请求的延迟降低到几十微秒(us)后,硬件设备的中断处理开销以及虚拟机中断的处理就成为了瓶颈。为了降低中断处理的开销,阿里云通过使用轮询方式来消除 NVMe 硬件中断的处理开销,在使用轮询方式后虚拟机发送 IO 请求时与物理主机通信的开销也可以进一步降低。

项目的初心与愿景

该项目起源于拜访客户时,阿里云了解到部分行业客户对于高 IOPS 并发和稳定低 IO 延迟有着较高的需求。出于提高单个服务器存储 IO 性能的初心,阿里云启动了本项目的研发。

项目的研发主要经历了两个大的版本,即集团内部数据库的使用(文中开篇提到的双十一)和本周五正式宣布的公有云对外售卖版本。据悉,目前对外售卖的版本,除采用 NVMe SSD 磁盘 +SPDK 存储性能优化架构,还使用了基于 Intel Xeon E5-2682 v4 (Broadwell) 处理器,主频为 2.5GHz,DDR4 内存以及独享型计算架构。

阿里云项目负责人强调:该高 IO 型本地盘存储实例的目标客户是具备较强开发和运维能力的企业客户,自身的系统架构可以保证业务数据的一致性,并能克服单副本数据丢失对业务造成的影响。具体应用场景主要是对存储 IO 性能要求较高,读写延时较为敏感,且业务自身具备高可用架构的场景,比如 NoSQL、OLTP、分布式日志等,适合网络游戏、互联网电商、在线直播 / 娱乐类提供在线业务的行业用户。

以下是推荐的使用场景:

(1) 用户将 Hadoop/Cassandra/MongoDB 等 NoSQL 业务部署在高 IO 型本地盘存储实例上,由于这些应用自身已经提供了数据冗余功能,本地盘单盘故障后用户的数据并不会受到影响,同时用户可以享受到更高的 IO 性能;

(2) 用户在高 IO 型本地盘存储实例上自建 MySQL 数据库,建议采用高可用架构(主库 + 从库同步复制),为了保证用户数据库数据的安全,建议用户通过 mysql_dump 等备份工具,在业务低峰期定时对 MySQL 上的数据进行备份,将数据备份到云盘上,并通过云盘快照等技术进行定期备份。

或将 MySQL 的 redolog 和 binlog 等日志文件放在本地盘中,将数据文件放在 SSD 云盘中,NVMe SSD 的低延时性能可以大幅提升 MySQL 的性能,借助 binlog 等主从同步方式保证数据安全,同时满足性能和可靠性两方面的需求;

(3) 有大量并发访问需求的用户网站可以将 memcached 部署到高 IO 型本地盘存储实例上,通过高 IO 型实例提供的高 IOPS 性能,为网站的静态数据提供更高速的缓存;

(4) 用户使用 bcache/flashcache 等工具使用高 IO 本地盘和云盘构建混合存储,通过高速本地磁盘作为缓存对云盘进行加速。

项目的下一步工作将重点集中在继续提高单实例的 IOPS 性能。

当前的高 IO 型本地盘存储实例单实例规格为 2 块 1.45TB 的高性能本地固态盘,后期将考虑提供更多的存储容量,以及更高 IOPS 并发能力,来满足更高的需求。

作者介绍

马涛,花名伯瑜,阿里云系统和块存储负责人,国内知名 Linux 内核研发人员,在内核主线有超过 300 个提交,在文件系统等存储领域为内核主线做出了卓越的贡献,目前带领团队负责阿里巴巴 Linux 内核以及块存储相关的研发工作。

刘峥,花名文卿,阿里云系统和块存储技术专家,高 IO 型本地盘存储实例底层研发负责人,专注于 Linux 内核及存储领域的研发和性能优化等工作。

彭亚雄,花名崆闻,阿里云弹性计算产品专家,高 IO 型本地盘存储实例产品负责人,专注于块存储领域的产品工作。

2017-02-26 18:005400
用户头像

发布了 58 篇内容, 共 43.8 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

【操作系统 | Linux】终端切换与帮助命令

计算机魔术师

8月月更

java远程连接ssh的实现

测吧(北京)科技有限公司

Java、

软件测试 | 测试开发 | Monkey基本参数介绍

测吧(北京)科技有限公司

软件测试、

表弟面试阿里又挂了,我强烈推荐程序员必备阿里面试的300+面试题(含答案解析)给他后,苦肝两月,成功上岸蚂蚁金服

钟奕礼

Java 编程 程序员 java面试 技术宅

书单来了 | 京东 8.31 图书品类日,这些经典书 & 新书不容错过!

图灵社区

程序员 计算机 图书节

万节点规模云服务的 SRE 能力建设

阿里巴巴云原生

阿里云 云原生 SRE 可观测

为什么很多企业一边大规模裁员,又一边招聘?

C++后台开发

后台开发 裁员 音视频开发 互联网大厂 C++开发

测试左移之Sonarqube scanner使用

测吧(北京)科技有限公司

软件测试 SonarQube

单测增量代码覆盖率统计方案

转转技术团队

测试 测试覆盖率统计工具

企业钱包数字资产管理工具API开放对接技术

薇電13242772558

数字资产

荣耀智慧服务百亿曝光扶持计划,具体申请规范来了!

荣耀开发者服务平台

卡片服务 荣耀 honor

设计模式的艺术 第二十三章状态设计模式练习(设计一款纸牌游戏软件,该游戏中用户角色具有入门级、熟练级、高手级和骨灰级4种等级。角色等级与积分对应,胜利增加积分,失败扣除积分。入门级有最基本的游戏功能,熟练级增加胜利积分加倍功能,高手级再增加换牌功能)

代廉洁

设计模式的艺术

深度干货!一篇Paper带您读懂HTAP | StoneDB学术分享会第①期

StoneDB

MySQL HTAP StoneDB 企业号九月金秋榜 实时数据库

数字货币永续合约交易所app系统开发

开发微hkkf5566

华为云咨询携手商业伙伴探索咨询业态升级

宇宙之一粟

数字化转型 8月月更

【Django | 开发】中间件配置(记录响应耗时日志)

计算机魔术师

8月月更

书单来了 | 京东 8.31 图书品类日,这些经典书 & 新书不容错过!

图灵教育

程序员 计算机 图书节

【Django | 安全防护】CSRF跨站伪请求和SQL注入攻击

计算机魔术师

8月月更

提速 10 倍!深度解读字节跳动新型云原生 Spark History Server

字节跳动数据平台

数据库 spark 数据存储 湖仓一体 数据计算

[译]为什么程序员不应该长期留在一家公司

宇宙之一粟

成长 跳槽 8月月更

如何让你的代码更优雅?

六月的雨在InfoQ

性能 代码优化 优雅 日常开发 8月月更

提质增效两不误,揭秘大型软件团队「价值增长飞轮」|直播回顾

万事ONES

【刷题之路 | Java & Python】两数之和(暴力枚举&哈希表)

计算机魔术师

8月月更

严禁外传,字节跳动2022秋招Java岗位架构师面试题(暂定版)发布

钟奕礼

Java 编程 程序员 后端 java面试

送你个低代码福利,错过要再等一年

华为云开发者联盟

云计算 福利 低代码 华为云

【Django | 安全防护】防止XSS跨站脚本攻击

计算机魔术师

8月月更

解决方案|电力行业应如何应对数字化转型危机

云智慧AIOps社区

安全 监控 解决方案 智能运维AIOps 故障处理

MobTech 短信验证iOS端SDK API

MobTech袤博科技

ios sdk

【Django | 开发】分离上线环境与开发环境(多settings配置)

计算机魔术师

8月月更

阿里云基于全新 RocketMQ 5.0 内核的落地实践

阿里巴巴云原生

阿里云 RocketMQ 云原生

软件测试 | 测试开发 | 智能音箱语音交互系统简介与测试初探

测吧(北京)科技有限公司

软件测试、

高IO型本地盘存储实例:双十一中,阿里如何将数据库性能提升100%、响应时间减少80%?_数据库_木环_InfoQ精选文章