写点什么

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

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

    阅读完需:约 13 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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:5010006
用户头像

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

关注

评论

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

顿悟!百度强推的Redis天花板笔记,原来数据库是这样理解的

冉然学Java

分布式 redis' 技术专题合集 #java redis 底层原理

架构实战营第8模块作业

Geek_53787a

以数字化转型为契机,3C企业如何通过SRM供应商云协同平台实现高效协同?

数商云

数字化转型 企业数字化 SRM系统

认识中小型局域网WLAN

flow

签约计划第三季

基于java springboot失物招领微信小程序源码

清风

计算机毕业设计 失物招领小程序

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(二)

Spring认证

Java spring

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(三)

Spring认证

Java spring spring认证

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(四)

Spring认证

Java spring

字符设备驱动结构

贾献华

7月月更

上海交大牵手淘宝成立媒体计算实验室:推动视频超分等关键技术发展

阿里巴巴大淘宝技术

音视频 音视频技术

远光软件获得阿里云产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 云原生 合作

[网络]跨区域网络的通信学习路由表的工作原理

flow

签约计划第三季

跨区域网络的通信学习静态路由

flow

签约计划第三季

Baklib|为什么说企业需要重视客户体验?

Baklib

深圳线下报名|StarRocks on AWS:如何对实时数仓进行极速统一分析

StarRocks

数据库

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(五)

Spring认证

[网络]跨区域网络的通信学习IPv4地址的分类和计算

flow

签约计划第三季

一文读懂Okaleido Tiger近期动态,挖掘背后价值与潜力

小哈区块

融合数据库生态:利用 EventBridge 构建 CDC 应用

阿里巴巴云原生

阿里云 云原生 事件总线 CDC EventBridge

震撼首发!2022全网最全465页Java性能调优笔记,吃透轻松涨薪15w

了不起的程序猿

java 14 java程序员 性能调优 Java性能调优

为什么客户支持对SaaS公司很重要?

Geek_da0866

熊市下PLATO如何通过Elephant Swap,获得溢价收益?

西柚子

直播|StarRocks 技术内幕 :低基数全局字典优化

StarRocks

数据库

MQTT over QUIC:下一代物联网标准协议为消息传输场景注入新动力

EMQ映云科技

车联网 物联网 IoT mqtt 弱网

阿里云 Serverless 异步任务处理系统在数据分析领域的应用

阿里巴巴云原生

阿里云 Serverless 数据分析 云原生

认识中小型局域网MAC地址及分类

flow

8月月更

云原生编程挑战赛火热开赛,51 万奖金等你来挑战!

阿里巴巴云原生

阿里云 云原生编程挑战赛

私有化部署的即时通讯平台,为企业移动业务安全保驾护航

WorkPlus

图的连通性之普里姆算法和克鲁斯卡尔算法

乔乔

7月月更

2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务

Spring认证

spring Spring JPA

克服“看牙恐惧”,我们用技术改变行业

Lily

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