AliSQL 引领开源技术变革之路

简介: 首届阿里巴巴中间件技术峰会上,阿里巴巴数据库资深专家何登成带来“AliSQL 引领开源技术变革之路”的演讲,本文从回顾AliSQL发展史开始谈起,接着分析了X-KV接口的好处,最后着重分享了X-Cluster——AliSQL集群解决方案。

首届阿里巴巴中间件技术峰会上,阿里巴巴数据库资深专家何登成带来“AliSQL 引领开源技术变革之路”的演讲,本文从回顾AliSQL发展史开始谈起,接着分析了X-KV接口的好处,最后着重分享了X-Cluster——AliSQL集群解决方案。

视频回顾

以下是精彩内容整理:

 

AliSQL发展历史简要回顾

为了去IOE,从2010年我们选择Alibaba的MySQL分支AliSQL。

我们为什么发展一个MySQL分支呢?最主要的思考还是在于生态,当我们去选择开源数据库时,我们会发现MySQL的整个生态、社区对于其它数据库来说是庞大的。我们发展MySQL开源分支是因为开源数据库在Alibaba体量下还是会碰到许多问题,比如性能、功能和可运维性,我们都作了相应优化。

ebbb8ce4a8abc162e5ac813d1656a66779973f14

在2010~2016期间,我们做了100+ 项的优化,包括bug 修复、功能增强、性能突破和可运维性的增强,目前为止,ALiSQL很多的新功能都被吸收到了开源数据库中。

90014c9a7fc260d13fe15084ddde045f10c011c5

图为AliSQL精简架构。我们在各个核心模块都做了改进,比如Binlog、Read View等等。

7a481f9b256747bd0fb028bc222d29b8514a79e1

功能和可运维增强也有很多改进,我们不仅仅是在使用,而是真正做了很多创新,这些创新我们也会回馈给社区。

 

X-KV:高性能K-V接口

X-KV是AliSQL高性能K-V接口,InnoDB Memcached Plugin的扩展。

c05b5530b8f061d88f003c3fe453d7cb02836b4e

为什么需要X-KV?左图是比较经典的部署,有前端的用户请求、数据库,数据库扩展性能时会在数据库和应用层之间加cache,访问频率比较高的放到缓存和内存中,用缓存区域查询问题是目前通用的解决方案,但它不一定是最好的。那么,我们如何保证数据和缓存的数据一致性呢?我们探索从KV接口直接访问存储引擎中的数据,这样可以绕过MySQL Server层的很多复杂逻辑,比如Parse、Optimize、Execute和数据的转换、投影等。

X-KV的具体优化如下:

  • 我们将Data Type支持能力丰富了,不光支持Float/Double、Integer、Decimal,还包括DateTime、Char/Varchar、Custom Format。
  • 用KV访问数据支持的接口比较有限,我们在功能上也做了增强,比如Multi get from multi tables,Non-unique index,composite indexes & prefix search,能够覆盖更多的场景。
  • X-KV新协议。InnoDB Memcached Plugin存在一些问题,通过指定delimiter来区分每一列,delimiter如何选择?NULL和空值无法区分,NULL = 空。

X-KV新协议将以上问题解决了,我们将返回的Field=Meta Info + Data,加Meta Info来描述返回数据,Meta Info有Version|Count|Length1|Length2|Length3…

  • 可运维性优化。官方设计不考虑太多运维性,导致InnoDB Memcached Plugin存在一些问题,比如表结构变更后,如何使得KV接口能够无缝的切换到新的schema, 原有的plugin uninstall ->install 方式对业务有较大影响。X-KV通过扩充Container表,支持了在线的KV配置变更,通过版本号来控制新旧版本的schema配置并自动重新加载。
  • 性能优化。

0

我们模拟阿里的交易数据库上的Query请求做了验证,相对于走SQL,我们提升了5倍左右的性能。

 

X-Cluster:AliSQL集群解决方案

e8010d36e69620ed697bc53ae0429ea2523419e0

为什么做X-Cluster呢?

1.         首先是数据一致性的问题。传统的数据库都是主备的异步复制,异步复制带来的是数据质量问题;官方为了解决问题,提出半同步复制,但半同步复制过段时间会降级。所以它们都很难百分百保证数据质量。

2.         持续高可用问题。当我们搭建完MySQL主备后,主备本身不会做切换,不会做高可用,真正的高可用是在主备之外使用一个外部组件,比如基于zookeeper的HA来提供高可用功能。

3.         区域化/全球化部署问题。过去几年我们分享最多的是异地双活和异地多活,我们要做到真正多城市多活高可用,需要集群能耗跨城市部署,跨国际部署。

4.         上下游生态联动。我们的数据库不仅仅作数据存取,下游还要给其他系统作消费。

能不能用一种技术尝试解决掉这些问题呢?这是我们做X-Cluster的初衷。

8a5f880bc1117f2bb246539e872f65e992c50725

我们的设计目标是:

  • 一体化架构:运维友好
  • 极致性能:同城三副本相对于单机性能下降在10%以内
  • 可异地部署:异地部署,延时增加,但是保持高吞吐
  • 稳定性:网络抖动高容忍性
  • 兼容性:对原有生态100%兼容

我们交付出一个AliSQL集群化的解决方案,将分布式一致性协议Paxos引入到AliSQL上,我们可以去组件一个AliSQL真正的集群,通过Paxos实现日志的强同步,实现自动化选主。

690e8b131479fd5c9bc26e168998f40a449aa8be

X-Cluster核心组件X-Paxos,X-Paxos就是高性能分布式一致性算法。

 

X-Cluster核心技术

Batching & Pipelining

c4c756151654a77baed0a76aea1c4dc6076b4c42

如何实现再有网络延时,尤其有异地网络延时、长延时、短延时以及不同网络条件下怎么样去做高性能真正与单机性能几乎持平?我们使用了Batching&Pipelining。

347af1703e1fc5138c3ccad145cafaf50a755f97

Pipelining是当一批往follower发送时,follower返回之前能不能把下一批在leader上已经完成的事务再发出去,这样就会同时有多批事务从leader等待follower达成多数派,这就是所谓的Pipelining。原来Batching时,是一次只能发一批,等应答后再发下一批,每一批至少会有一个网络的RTT,Pipelining好处是在第一批没有应答前就可以发送第二批···

引入Pipelining就会带来乱序,导致日志空洞,会出现乱序接收。Paxos可以作乱序确认,乱序确认的好处是,如果有日志空洞,任意两个副本达成多数派,都认为事务提交成功。每一个follower上都有空洞,但是将两个follower拼在一起,它是一个完整的日志流。

Locality Aware Content Distribution

8beba47dd56e257599e75d9289f2585380c8d99c

有了Paxos之后,多少副本都可以。为了解决Leader出口网络,降低跨Region长传链路带宽,我们在跨Region时使follower可以连在follower上,用级联的方式去复制。

日志实现

790b492ffdfd0c83df0509faaeacab6df7655778

还有我们做了一体化日志:插件式X-Paxos的日志,归一化的ConsensusLog代替Binlog和RelayLog,全局统一的Log Index。

Asynchronously Commit

8e3631f3db49ede083f6c642e283aaef45d62a6e

我们还将工作线程和提交线程异步化,工作线程只负责处理事务提交之外的用户请求,在用户发送提交请求后,工作线程将事务推入提交等待队列后就继续处理下一个用户请求。而提交等待队列的中的事务由另外一批线程来负责处理,这样能够充分解放工作线程,减少线程的等待,提高高延时下的吞吐性能。

X-Cluster: vs MySQL Group Replication

c81182c0a0748b00d17e6f435fd7d7196d66b6fa

85f442f7d7a956dbabec99e0ff1fef98ca6d2338

我们与MySQL Group Replication对比,做了简单的性能测试。可以看出,INSERT同城比官方好两倍性能,延时要小很多;30ms 网络延时的部署下,我们仍旧能够达到五万多,延时只有官方的三分之一,性能是五倍。

X-Cluster生态

e79a1ebc4632371cf940c1e003eb44d93549b9af

我们面临的问题很多,比如备份、日志订阅、只读节点等,所以我们要超越数据一致性和持续可用,Paxos关联的东西有很多。

持续备份

原有MySQL备份逻辑是:定期备份Binlog文件;RPO一般比较大,例如:大于5分钟;备份跟MySQL的数据一致性保障困难。

X-Cluster可以解决备份的一些不便之处:备份节点作为X-Cluster的一个Learner节点,实时推送X-Cluster上达成多数派的日志;RPO < 1秒;由于备份的一定是达成多数派的日志,因此无数据一致性问题。

自动化高可用

f966d9f8be8c0095a94aff45d9e24216e1d97ca3

原有MySQL高可用方案外部组件依赖:ADHA、ZK。而X-Cluster自动化高可用,Client、Server一体化,Client也是数据库一个learner节点,它需要消费成员变更日志,成员变更日志达成多数派后推给learner节点,Driver就会知道主备发生切换,可以直接连新leader,没有外部组件依赖,达到自动化高可用。

自动化增量日志消费

原有MySQL下游日志消费准实时消费MySQL产生的日志,问题之一是数据一致性;问题之二是数据库主备切换与下游消费端的联动。

X-Cluster自动化增量日志消费,日志消费节点作为X-Cluster的Learner节点,只消费达成多数派的日志,保证数据一致性;X-Cluster自动选主,新Leader自动向日志消费节点推送新日志,彻底解决联动问题。

区域化/全球化部署

  • 按需增加Learner节点:增加读能力,但是不会带来强同步开销
  • 按需增加Log节点:Log节点只有日志,没有数据;Log节点可参与选主,但是没有新增存储开销。低成本节点;3节点X-Cluster = 2节点MySQL主备。
  • 权重化体系:可以指定节点选主权重,控制每个节点的选主优先级。

X-Cluster实战总结

一路走来,我们并不是一帆风顺,也踩过很多坑,比如:

  • 异常处理:硬件异常,网络异常:Leader Stickiness
  • Batching & Pipelining:极大事务,极小事务,不同网络时延下的Batching/Pipelining策略,网络异常情况下的Batching/Pipelining策略
  • 全球化部署下的优化:权重体系、热点带来的影响

 

 

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 消息中间件 NoSQL
redis入门到精通系列(一):入门redis看这一篇就够了
如果你是计算机专业学生 ,那么一定使用过关系型数据库mysql。在请求量小的情况下,使用mysql不会有任何问题,但是一旦同时有成千上万个请求同时来访问系统时,就会出现卡顿甚至系统崩溃的情况。最典型的例子就是早期的12306购票网站,一旦到了购票高峰期,12306肯定崩溃。造成这个原因的罪魁祸首就是关系型数据库。
7825 0
redis入门到精通系列(一):入门redis看这一篇就够了
|
SQL 前端开发 JavaScript
分享几个开源Java写的博客系统
分享几个开源Java写的博客系统
7285 0
分享几个开源Java写的博客系统
|
11月前
|
数据采集 缓存 安全
Go单协程事件调度器:游戏后端的无锁有序与响应时间掌控
Go单协程事件调度器通过串行化执行,实现无锁、有序的高效并发控制,适用于高实时性游戏后端。其核心在于严控单事件耗时(&lt;1ms)、分优先级处理玩家交互与定时任务,并结合任务切片、异步卸载与数据预处理优化响应性能,保障全服稳定低延迟。
453 1
|
11月前
|
数据采集 数据挖掘 API
1688店铺所有商品API使用指南
本文详解1688店铺商品API的使用,涵盖接口摘要、概述、Python请求示例及注意事项。通过该API可获取商品列表、详情等核心数据,适用于店铺管理、ERP系统与数据分析。结合代码演示,助开发者快速完成对接,实现高效数据采集与应用。(239字)
|
12月前
|
人工智能 数据可视化 知识图谱
NanoBanana pro真的强嘛?我试了试结果...........【附带工具+Prompt双邪修玩法】
小阁带你体验Nano Banana Pro!1:1动漫转真人、老照片修复、文生图、漫画上色翻译……效果惊艳,中文理解超强。阁下AI全球首发集成该模型,打造AI创作新境界,一键生成爆款内容,重新定义你的生产力!
|
7月前
|
算法 网络安全 数据安全/隐私保护
如何逆向获取转转App的接口参数?
逆向获取转转 App 的接口参数(核心是 zzreqsign、zz-token、deviceId、timestamp 等加密 / 动态字段),是调用其私有 API 的关键。下面按 抓包 → 定位 → 算法还原 → 代码实现 四步,给你一套可落地的完整流程(2026 最新,Android 为主)。
|
9月前
|
SQL 安全 前端开发
WordPress Fontsy Plugin SQL注入漏洞深度剖析与防御指南
本文深度解析WordPress Fontsy插件CVE-2022-4447高危SQL注入漏洞:影响1.8.6及以下所有版本,未授权即可通过AJAX接口(get_fonts等)触发,CVSS最高9.8分。详述成因(参数未过滤+未用$wpdb-&gt;prepare)、危害(数据窃取、服务器沦陷)及紧急卸载、WAF拦截、安全开发等防御方案。(239字)
388 8
|
10月前
|
机器学习/深度学习 数据采集 人工智能
【前沿观察】金加德讲师:2026,AI应用元年——技术人如何跨越“模型”与“落地”的鸿沟,跟随时代脚步?
2026年,AI迈入“应用元年”,技术重心从大模型转向智能体落地。金加德讲师指出,推理成本骤降、交互范式重构与确定性逻辑回归推动AI进入工业化时代。Prompt工程让位于Agent系统设计,Coze与Python成核心工具。个人竞争力在于掌握“胶水语言”、架构思维与领域知识。未来属于能定义问题、构建系统的“数字造物主”。
680 1
|
人工智能 算法 搜索推荐
智能体领航员:2026 硅基生命如何温柔重塑我们的日常
2026年,AI智能体跃升为“生活领航员”:懂情绪、知健康、伴成长。它重构智慧居家、守护实时健康、定制化学习辅导,更坚守隐私主权、算法克制与真实回归——让科技有温度、有边界、有烟火气。(239字)
543 0
|
10月前
|
数据采集
静态IP购买常见问题及解决方案
静态IP因稳定、适用广,成企业刚需,但购买易踩坑。本文梳理IP纯度低、带宽虚标、地域偏差、售后差、计费不透明、合规风险6大问题,提供避坑指南,助你高效选购合规、稳定的独享静态IP,保障业务顺畅运行。(238字)