写点什么

专访丁奇:阿里云即将开源 AliSQL,超大并发、针对秒杀优化

  • 2016-09-01
  • 本文字数:3929 字

    阅读完需:约 13 分钟

8 月 9 日,在 2016 云栖大会·北京峰会上,阿里云宣布启动 AliSQL 数据库开源项目。在 10 月 14 日的云栖大会·杭州峰会上,阿里巴巴正式宣布 AliSQL 开源

AliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。该版本性能优于社区版 MySQL 70% 左右,可帮助中小企业和开发者提升数据运营能力。

阿里云数据库资深专家丁奇介绍,AliSQL 版本在强度和广度上都经历了极大的考验。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。AliSQL 增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。

丁奇表示,“在通用基准测试场景下,AliSQL 版本比 MySQL 官方版本有着 70% 的性能提升。在秒杀场景下,性能提升 100 倍”。这样的性能提升数据是如何得出的?即将开源的 AliSQL 又将为开发者带来哪些功能?针对于不同行业,AliSQL 做了哪些工作呢?

近日,InfoQ 就相关问题采访了丁奇。

受访嘉宾介绍

丁奇,阿里云关系数据库服务内核开发和运维团队负责人,活跃的 MySQL 社区贡献者。专注于数据存储系统、MySQL 源码研究和改进、MySQL 性能优化和功能改进。

InfoQ:AliSQL 是基于 MySQL 官方版本的一个分支,能否简单介绍下 AliSQL 的历史?AliSQL 版本在强度和广度上都经历了哪些考验?

丁奇:大概在 2009 年,阿里巴巴集团开始大规模的使用 MySQL 数据库来持久化业务数据。随着集团业务的高速发展,官方的 MySQL 版本遇到了不小的挑战,包括性能、部署、功能、成本等方面。

伴随着业务的驱动和对源代码的熟悉,集团开始尝试在 MySQL 官方的开源版本上进行修改,这就形成了 AliSQL 的雏形。

电商业务的高速发展,对 MySQL 的性能提出了更高的要求。出于节省成本,AliSQL 持续进行了性能优化,同时,多核 CPU 和 SSD 等新硬件的采用,也反过来促进 AliSQL 能够尽可能利用硬件的红利。

双 11 大促不断刷新记录,数据库的稳定性也变得越来越重要,AliSQL 开始定制基于限流、线程池、秒杀等功能的 patch,提升 AliSQL 的稳定性。

针对小微金融业务对数据保护的高要求,AliSQL 定制了适合金融业务的数据保护方案,例如金融云上使用的双通道日志高可靠方案。

从阿里云 RDS 上线服务开始,阿里云数据库团队就遇到了前所未有的挑战,不同的行业用户,不同的使用习惯和要求,AliSQL 也迎来了发展最为迅速的时刻,影响力也越来越大。

所以,AliSQL 的版本,是伴随着业务的发展,一起成长起来的,经历过双 11 大促这样大压力的考验,同时也经历了阿里云各行各业用户差异化的需求。可以说是身经百战。

InfoQ:阿里云是开源组织 WebScaleSQL 的第五位成员,与 Facebook、Google、Twitter 和 LinkedIn 团队共同研发 WebScaleSQL,同时,阿里巴巴还拥有 OceanBase 自研数据库。能否请介绍下 AliSQL、WebScaleSQL、OceanBase 三者的关系和各自的特点?

丁奇: OceanBase 是 Alibaba 集团自研的分布式数据库,经历了集团业务的洗礼,具有通用性,高扩展能力。

WebScaleSQL 是由这五家公司发起的基于 MySQL 官方的一个分支,旨在解决大家在互联网业务上遇到的问题,是五个成员公司将各自足够通用的功能提交到一起的集合,每家公司的研发同学都可以提交代码。实际上每个公司自己生产环境使用的是自己维护的一个分支,因为每个公司都有自己定制化的需求。

AliSQL 同样基于 MySQL 官方版本,汲取了官方和社区的技术红利,具有很高的性能和稳定性,并适应不同行业的特点进行了定制。AliSQL 的改进方向主要集中在安全性、稳定性、性能、新功能等方面。

AliSQL 是经过几年的生产环境、几万个用户实例的实际业务锤炼的。

AliSQL 的一些定制化功能都是为了解决 DBA 维护、业务使用中碰到的实际问题。比如 5.5 以上的版本由于有 metadata lock,DBA 对表加字段等操作可能导致阻塞查询,进而导致整库不可服务。我们新增alter ..wait N ..方法,保证了操作的安全性。再比如通过提供 set rds_reset_connection 这样的语句,解决了长连接占用资源和短连接性能问题的矛盾。

InfoQ:AliSQL 在相关报道中提到,“在通用基准测试场景下,AliSQL 版本比 MySQL 官方版本有着 70% 的性能提升。在秒杀场景下,性能提升 100 倍。”能否详细讲解该数据是如何得出的?

丁奇: 通用基准的测试,我们是采用 sysbench 进行的测试,也是公开的标准测试方法,AliSQL 在吞吐能力上,比 MySQL 官方大概 70% 的性能提升。

秒杀场景是一个比较特殊的场景,AliSQL 有专门的定制 patch 针对这种场景的优化,如果没有限流和排队,大并发的请求下,系统很容易产生雪崩效应,导致吞吐量急剧下降,而非线性关系。所以,秒杀场景下,在不可预知的业务请求量的时候,类似减库存这样的场景,性能下跌非常厉害,而 AliSQL 的秒杀解决方案能够保证这类场景维持高性能。

InfoQ:电商行业的环境特点是怎样的?AliSQL 在电商行业环境下的优势有哪些?或者说,为了更好地符合电商行业的需求,AliSQL 做了哪些性能与功能的优化工作?

丁奇: 电商行业的环境,其实提供了一个非常综合的场景,在扩展性、稳定性、性能等方面对数据库都提出了非常高的要求,AliSQL 就是顺应着这样的要求进行的定制版本。

比如应对大量应用集群的线程池功能,秒杀场景的排队功能,以及 SQL 的限流功能。

比如大写入量备库延迟,AliSQL 提供的基于表的并行复制功能,又比如结构化数据的压缩功能等。

InfoQ:电商秒杀场景有什么特点,为数据库带来的挑战有哪些?AliSQL 针对该场景优化了哪些性能与功能?已经应用过的实际场景有哪些?实际效果如何?

丁奇: 电商的秒杀场景,其实就是减库存,对数据库而言,就是对一条记录的更新,因为事务的特点,单条记录的更新必须串行完成,但秒杀的特点,就是在某个时刻,大量的并发进行减库存,这就造成了大量的线程因获取不到锁而处在死锁检测状态,消耗了大量的 CPU 资源,最终导致系统无法响应,而引起雪崩效应。

AliSQL 针对这样的场景,提供了排队和限流的功能,经过了双 11 零点时刻高并发请求的考验,保持了系统的稳定性和持续吞吐能力。

电商业务高峰有两个对数据库挑战比较大的场景:

1. 超大并发

MySQL 能够支持的并发活跃连接数是有上限的,理想情况下是大约(CPU 核心数×2)个活跃连接数,当活跃连接数远超这个值时,性能会急剧下降,导致整个业务不可用。AliSQL 有水位控制,超过一定阈值的活跃连接数,当我们判断到当前压力超过数据库的处理能力时,会主动放弃后到的请求,这样保证数据库还能保持很高的能够正常响应的吞吐量。

2. 秒杀场景

在秒杀场景里面有一个减库存的问题。大量用户同时抢购同一个商品的时候,需要同时更新商品库存,这时候 InnoDB 的行锁加上死锁检测机制会导致数据库 CPU 短时间内被占满,导致整库几乎无法响应。

在 AliSQL 我们有针专门针对秒杀的方案,保证在大量线程同时减库存时仍能保持很高的 TPS。除了阿里自己的秒杀业务,这个功能同样适用于抢红包这样的业务,已经在 2015、2016 年春节经过大量的业务验证。

InfoQ:在个性化方面,AliSQL 针对云计算和金融行业做了哪些优化工作?应用过的实际场景有哪些?实际效果如何?AliSQL 在物联网大数据压缩、金融数据安全等场景又提供了哪些个性化功能?

丁奇: 在云计算的环境下,用户的使用场景和方式都千差万别,为了适应不同的环境,AliSQL 定制了很多个性化的功能,比如,为了保障在线业务的平稳,针对用户的分析型的 SQL,AliSQL 提供了资源使用限流、全表扫描 buffer pool 不缓存的特性,用户可以通过设置环境变量或者使用 hint 来方便的使用这些功能,又比如为了加快大表的扫描,提供了逻辑预读的功能,
这些特性,用户在不同的场景下可以自由选择。

除了这些,AliSQL 在公有云上针对不同行业定制了很多功能。比如:

  1. 游戏行业
    我们在 proxy 这一层进行了 AliSQL 的桥接认证,提供防闪断功能。
  2. 物联网行业
    AliSQL 集成了 TokuDB 引擎,提供高压缩比和大吞吐写能力。
  3. 金融行业
    AliSQL 定制了多通道的半同步策略,以及一主两备的三机房零数据丢失的数据保护级别。

InfoQ:针对不同的应用场景,AliSQL 增加了哪些监控指标?

丁奇: AliSQL 增加了很多监控指标,以帮助用户或者 DBA 更了解自己的数据库,比如,AliSQL 针对四个不同的维度的统计:

  1. SQL 维度。增加每个 SQL 执行的开销统计,除了响应时间,锁等待等,还包括逻辑读,物理读,临时空间使用等。
  2. 对象维度。增加了每个表的 DML 次数,索引的使用情况,帮助用户理解业务和索引使用效率。
  3. 事务维度。增加了每个事务持续的时间,和操作的对象。帮助用户定位问题。
  4. 线程维度。增加了线程的内存使用统计。

InfoQ:阿里巴巴一直在推进开源工作,您认为做好开源工作,公司应该从哪些方面出发?目前,AliSQL 的开源计划是怎样的?将为开发者具体怎样的帮助?

丁奇: 我觉得,公司首先是支持开源的,基于开源的协议,有着回馈社区的初衷,并怀着促进社区发展的良好愿景。

AliSQL 开源会保持着一个好的节奏,持续的高质量回馈社区。具体在 9 月中旬放出 binary, 10 月份会放出源代码的第一个稳定版本。

开发者可以自由下载使用,并在平台上进行反馈或者提出建议,后续 AliSQL 也会定期组织论坛,邀请开发者参与进行讨论。

我们希望 AliSQL 能够形成一个活跃的社区,开发者能够从中受益,也能够提出需求和改进建议,促进分支持续发展。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-09-01 00:5010110
用户头像

发布了 28 篇内容, 共 17.3 次阅读, 收获喜欢 29 次。

关注

评论

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

AI + K8S 驱动存储技术变革

焱融科技

人工智能 Kubernetes 云原生 高性能 存储

带你看论文丨全局信息对于图网络文档解析的影响

华为云开发者联盟

文档 CNN网络 图网络 非结构化文档 全局信息

The Data Way Vol.1|风口下的开源市场:如何看待开源与商业的关系?

SphereEx

数据库 开源

Apache之道在腾讯的探索与实践

腾源会

Apache 开源 腾源会 腾讯开源

十大排序算法--桶排序

Ayue、

排序算法 8月日更

使用Grafana显示Prometheu监控

Rubble

Grafana Prometheus 8月日更

oeasy教您玩转vim - 11 - # 向前向后

o

万字长文讲透低代码

百度开发者中心

最佳实践 开发者 方法论 低代码 语言 & 开发

你真的懂语音特征吗?

华为云开发者联盟

语音 音频 声学 时域图 时域

我看 JAVA 之 并发编程【三】java.util.concurrent.atomic

awen

Java 并发编程 Atomic 原子操作

iPhone Shortcuts 使用与场景

TroyLiu

iphone 效率工具 快捷指令 shortcuts nfc

收获颇丰!这份阿里架构师纯手敲JDK源码全彩小册可以打满分

Java架构追梦

Java 阿里巴巴 架构 面试 jdk源码

这波性能优化,太炸裂了!

why技术

Java 性能优化 JVM

工作多年,分享16条职场经验给新人朋友

架构精进之路

职场 成长 经验分享 8月日更

简单的Postman,还能玩出花?

码农参上

8月日更

Python代码阅读(第7篇):列表分组计数

Felix

Python 编程 Code Programing 阅读代码

C++ Vector

若尘

c++ vector 8月日更

MySQL中的DEFINER(定义者)是什么

Simon

MySQL

十万高层齐卸甲,竟无一人有慈心。前阿里员工看阿里高管不法侵害女员工事件

刘悦的技术博客

阿里巴巴 面试 职场 职场 PUA

浅谈BU安全建设

I

项目管理 企业安全 BU安全 安全建设

从技术到文案,还回技术么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

台达AS228T_CanOpen_VFD_X

林建

台达 AS228T Canopen 功能块 E变址

【“互联网+”大赛华为云赛道】EI命题攻略:华为云EI的能力超丰富,助你实现AI梦想

华为云开发者联盟

大数据 modelarts 大赛 互联网+ 华为云EI

vivo 全球商城:优惠券系统架构设计与实践

vivo互联网技术

服务器 架构设计

TCP如何进行拥塞控制

W🌥

计算机网络 TCP/IP 8月日更

接口返回值一定不允许使用枚举类型吗?

skow

Java 面试 后端 开发规范

【“互联网+”大赛华为云赛道】IoT命题攻略:仅需四步,轻松实现场景智能化设计

华为云开发者联盟

IoT 华为云 LiteOS 互联网+ IoT边缘

孩子排斥写作业 VS 员工不接活儿——项目管理来帮忙

Ian哥

如何用Camtasia添加视频水印?

淋雨

视频剪辑 Camtasia 录屏软件

Java测试框架九大法宝

FunTester

自动化测试 JUnit 测试框架 selenium testNG

Compose 编程思想

Changing Lin

8月日更

专访丁奇:阿里云即将开源AliSQL,超大并发、针对秒杀优化_语言 & 开发_韩婷_InfoQ精选文章