版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

吴林、黄伟

近日,华为云自研关系型数据库 Taurus 公开亮相。作为华为云自研的最新一代云原生分布式数据库,Taurus 完全兼容 MySQL 8.0,采用计算与存储分离、日志即数据的架构设计,支持 1 写 15 读,性能达到原生 MySQL 的 7 倍。

过去多年,数据库技术本质上并没有出现颠覆式发展。作为核心基础设施,数据库是一款用户粘性非常高的产品,一旦核心业务数据落定,企业轻易不会尝试更换,因此很长一段时间内,大众习惯于老牌 IT 厂商垄断数据库市场的状况。然而,云厂商涉足数据库领域的消息近年层出不穷,比如 AWS Aurora、阿里云 PolarDB 以及华为云 Taurus。

在互联网、移动和物联网等新场景之下,图片、音频、视频等非结构化数据开始出现爆炸性增长,传统数据库不堪重负,企业客户急切需要新的数据库产品。在云计算技术不断成熟的背景之下,云数据库开始崛起,并因为按需扩展、按需付费等特性获得大量中小企业及互联网客户的拥护。

从云厂商的入局也不难看出,现在做数据库的门槛并不像从前那么高,并不只有传统的数据库厂商可以做,单就这一领域的创业者也不少。在这种情况下,核心竞争力只可能从差异性发展而来,人人都在做且会做的东西很难形成核心竞争力。据此,华为云近日公开亮相的自研关系型数据库 Taurus 有什么不同?核心竞争力是什么?为什么性能足以达到原生 MySQL 的 7 倍?与云上 MySQL 相比,后者的不足之处有哪些?华为云进行了哪些修补?

云原生数据库技术趋势

传统的数据库体系结构已有 30 多年的历史,专为本地部署,本地存储和单机数据库实例而设计和优化,此后很长一段时间内,该体系结构未针对公有云环境进行优化。在公有云环境下,计算和存储通过网络分离以支持多租户数据库实例并 scale out 向两端扩展;并不要求单个节点的高可靠性。

举例来说,假设一个本地数据库的每个数据库实例都有本地存储,为了支持高可用性,通常部署一个备实例并使用数据库内部复制机制将数据库日志(MySQL binlog)发送到备实例重建数据库副本。目前,大多数云厂商都采用类似机制来支持云数据库高可用性。但是,这种内部复制机制并没有利用云存储已经通过存储层复制提供的可靠性,这导致大量存储和带宽浪费。实际上,备数据库实例可以通过云存储与主实例共享数据,不仅可以节省磁盘空间和带宽,还可以为云数据库服务提供快速 RTO。

很明显,在将传统数据库迁移上云时,需要重新设计和优化数据库系统。过去几年,主要云供应商,比如 AWS 和阿里云,已经做了部分工作。预计未来几年,更多云和数据库供应商将遵循这一趋势,构建某种形式的云原生数据库技术。此外,Gartner 预测,到 2019 年,90%的云数据库架构将支持计算和存储分离。

值得注意的是,除了基于云环境的数据库架构重新设计之外,这一领域还存在两大趋势:

  • 在云原生数据库中利用新硬件:如新硬件和RDMA。这些都是活跃的研究领域,然而除了充当缓存和计算机与存储之间的快速链接之外,到目前为止,我们还没有看到任何其他的突破性。
  • 基于即时和历史收集的数据,使用ML(机器学习)和统计技术来帮助管理和自我调整云数据库,包括但不限于数据库实例自动伸缩和参数设置和自动调整,异常检测等。

云上 MySQL 的不足

当前,对于 RDS for MySQL,各大云厂商基本都采用主备高可用模式、主备间使用 Binlog 复制,该架构下每添加一个从库都需要全栈式资源,这导致了一些问题:

1、资源浪费

备库往往不承担流量;复制线程会消耗主库 / 从库计算资源,造成计算资源浪费;EVS 的 3 副本冗余机制下,N 个备库最大需要 3*(N+1) 个副本,造成存储资源浪费以及多种数据需要走存储网络进行刷盘,造成网络资源浪费等。

2、扩展性不佳

添加只读时需要拷贝数据,重放 binlog,对于大数据量情况下速度很慢,尤其是采用本地盘方案。主从复制延迟问题会让主备倒换受影响,难以保证 RTO。此外,采用物理备份、逻辑备份时备份恢复速度很慢, 1T 以上数据量都以小时计,使得数据库扩展性受限。

华为云 RDS 架构演进

华为云 Taurus 与 Amazon Aurora 数据库进化的方向是一致的,然而进化路径各有不同,这是由各自的数据库云服务实现方式不同所决定的。华为云 RDS MySQL 有如下几个版本,这些产品形态满足不同的用户业务场景,具有不同的特点,可以进行优势互补。

MySQL 单机版

MySQL 单机版采用数据库计算节点和存储节点分离的方式,利用云盘数据本身的可靠性和多副本的特性,同时也利用 ECS 云服务器虚拟化来提升标准化部署、版本和运维管理效率,能够满足低端用户不太注重高可用服务的业务场景。

MySQL 主备版

MySQL 高可用版则是针对企业级用户提供的高可用数据库版本,提供 99.95% 的 SLA 保障。采用 Active-Standby 高可用架构,主节点和备节点之间通过 MySQL Binlog 进行数据 Replication。当主节点发生故障,备节点接管服务。同时还支持最多 5 个只读节点,支持负载均衡的数据读写分离的访问方式。

MySQL 金融版

MySQL 金融版是针对金融行业等高端用户设计的高可用、高可靠云服务产品。一主两备三节点架构,可跨 AZ 部署,任意一台服务器宕机不影响业务可用性;基于 Paxos 协议,实现了分布式下数据的强一致性,拥有更加优异的故障恢复时间,满足数据容灾备份等业务场景的需求。

Taurus 的进化


Taurus 采用计算与存储解耦的技术架构,同时可以最多支持 15 个只读节点。主节点和只读节点之间是 Active-Active 的 Failover 方式,计算节点资源得到充分利用,由于使用共享存储,进一步降低了用户使用成本。

Taurus 的设计思想有几个大的革新:

  • 将部分计算能力卸载到存储节点
  • 软硬件深度优化,充分利用 RDMA 网络、NVME SSD 等硬件优势
  • 日志即数据,与传统 RDS for MySQL 相比,不再需要刷 page,所有更新操作都记录日志,不再需要 double
    write,减少了网络通信。

另外在 DB Server 设计上,完全拥抱开源生态,完全兼容 MySQL 8.0。

华为云 Taurus 和 Amazon Aurora 的一个共同设计哲学就是,先推出一写多读的版本,根据市场需求,适时推出多写版本,满足绝大多数 OLTP 应用场景和性能要求。

Taurus 架构设计原则:

采用华为下一代云存储(DFV)作为快速,可扩展,可靠和共享数据库存储。不复制存储层中的已有功能,例如,数据复制,跨 AZ 可靠性,数据清理。

  • 单个数据库集群应该只需要一份足够可靠的数据库副本集。所有只读副本共享存储在云存储中,甚至跨
    AZ,数据库层中没有逻辑复制。一写多读,没有独立的备用实例。主节点发生故障转移时,只读副本可以切换到接管主服务器。
  • 记录为数据库。仅顺序写入以最小化 SSD 磨损(避免写入放大)
  • 只有数据库日志通过网络从数据库计算机节点写入 DFV 存储层。没有页面检查点和刷新跨网络,没有双重写入。基于 DFV
    存储层内的数据库日志重建数据面,以避免繁重的网络流量。
  • 基于跨 DFV 存储节点的切片策略对数据库进行分区,以支持大型数据库卷。单个 DFV
    存储节点管理来自不同数据库集群实例的多个分片,实现存储容量和处理能力的无限扩展。

Taurus 数据库关键技术点剖析

Taurus 架构

如图所示,Taurus 是一个分布式集群架构设计,采用计算与存储分离的设计理念,满足公有云计算环境下用户业务弹性扩展的刚性需求。数据库计算节点和存储节点之间采用高速网络互联,并通过 RDMA 协议进行数据传输,使得 I/O 性能不再成为瓶颈。

数据库节点采用和 MySQL 完全兼容的设计。主节点和只读节点之间采用 Active-Active 的 Failover 方式,提供 DB 的高可用服务。同时 ,DB Server 之间仅需同步 Redo log 相关的元数据信息。

  1. SQL Nodes
  2. 管理客户端连接、解析 SQL 请求,、分析执行计划并执行和管理事务隔离级别
  3. 一主多读
  4. 主库和只读松耦合
  5. 主库和只读通信少
  6. 快速 Failover
  7. 引入内核中的一些特性
    Query result cache
    Query plan cache
    Online DDL

SQL Replication

只读节点在本地 buffer pool 中维护数据页的多个版本

  • 减少从存储的远端读取数据页

主库交互

  • MVCC: 同步主库当前活跃事务列表
  • 页失效: 接收主库页失效列表

高速网络下的 RDMA 协议

部署 RoCE RDMA 以减少网络延迟并增加带宽。在单个 AZ 中,Taurus 可以利用高速网络(RDMA)来获得更新和读取的低延迟存储 I/O,这对于低客户端连接方案非常有用。

存储抽象层 (SAL)

存储抽象层 (SAL) 是逻辑层,将数据存储和 SQL 前端、事务、查询执行等进行隔离。由一组容量和处理能力按需扩展的分片节点组成,SAL 将所有 SQL 节点需要的数据页按分片管理和横向扩展。随着数据库规模的增长,可用资源(存储、内存)随着分片创建按比例增长。数据处理本地化,数据密集型操作是在存储节点上按分片服务执行。

Taurus Storage

Taurus 存储基于华为云存储 DFV 持久层。DFV 持久层集群包括多个存储节点。每个存储节点包含多个 SSD 设备和适应 SSD 介质的 append 存储服务进程。 DFV 持久层为 SQL 节点提供存储接口。

Taurus 采用日志化方式处理 SQL 节点数据,即通常表述的“日志即数据”。数据组织采用面向 SSD 重新设计的 Append 模式,显著减少系统写放大,减少存储时延。同时,在 Append 模式下,数据回滚和回档变得非常快速。

Taurus 核心竞争力

成本更低

与传统 RDS for MySQL 相比,只有一份存储。添加只读节点时,只需添加计算节点,无需额外购买存储。只读节点越多,节省的存储成本越多。

扩展性、可靠性更高

  • 横向扩展更快。Taurus 采用共享存储,只需添加计算节点,无论多大数据量,只需 5 分钟左右,并且支持 15 个只读.
  • 纵向扩展更快。容器化部署,规格变更更快。
  • 主从倒换时间更快。 消除了复制延迟,RTO 有保证。
  • 数据库 Crash 恢复更快。
  • 性能更强

软硬结合,基于硬件:Hi1822 卸载,NVMe SSD,RDMA,同时内核进行优化:去掉 double write,Query Cache/Plan Cache 优化,Innodb Lock Management 优化,Audit Plugin 效率优化,性能达到原生 MySQL 的 7 倍。

备份恢复更快

专为 Taurus 引擎定制的分布式存储系统,极大提升数据备份、恢复性能

  • 强大的数据快照处理能力。AppendOnly vs. WriteInPlace,数据天然按多时间点多副本存储,快照秒级生成,支持海量快照。
  • 任意时间点快速回滚。基于底层存储系统的多时间点特性,不需增量日志回放,可直接实现按时间点回滚。
  • 并行高速备份、恢复。备份及恢复逻辑下沉到各存储节点,本地访问数据并直接与第三方存储系统交互,高并发高性能。
  • 快速实例恢复。通过异步数据拷贝 + 按需实时数据加载机制, Taurus 实例可在数分钟内达到完整功能可用。

总结

通过以上介绍不难发现,Taurus 的共享存储架构将数据持久化放入新一代存储中,充分保障数据强一致性和 0 丢失;采用软硬件结合,充分利用 RDMA 网络、NVME SSD 等硬件优势,正是这些关键技术的整合创新,才使得 Taurus 的性能有了质的飞跃。

性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】的更多相关文章

  1. java使用原生MySQL实现数据的增删改查以及数据库连接池技术

    一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: <dependency> <groupId> ...

  2. MySQL 8.0新增特性详解【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  3. 性能优化之MySQL调优篇

    MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作 ...

  4. Forrester:华为云容器是容器混合云最佳选择

    近日,国际权威咨询机构Forrester发布<The Forrester New WaveTM: Public Cloud Enterprise Container Platforms, Q3 ...

  5. 不服跑个分:ARM鲲鹏云服务器实战评测——华为云鲲鹏KC1实例 vs. 阿里云G5实例【华为云技术分享】

    原文链接:https://m.ithome.com/html/444828.htm 今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主 ...

  6. 揭秘丨7分钟看懂华为云鲲鹏Redis背后的自研技术【华为云技术分享】

    2019年5月,华为云发布全球首个基于自研ARM架构的分布式缓存鲲鹏Redis,搭载华为LibOS+华为编译器+安全容器引擎三项黑科技,在保证Redis强劲高性能外,还降低客户30%的使用成本,真正实 ...

  7. 友盟+U-APM应用性能报告:Android崩溃率达0.32%,OPPO 、华为、VIVO 崩溃表现良好

    ​随着信息技术高速发展,移动互联几乎已成为了一种生活方式的代名词,在全民上网的数字热潮中,如何能最大程度保障产品服务的稳定性,提供良好的用户体验,是当前企业都需要思考和亟待解决的问题.App的应用性能 ...

  8. MySql(十):MySQL性能调优——MySQL Server性能优化

    本章主要通过针对MySQL Server( mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优 ...

  9. [转帖]华为鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例

    鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例 https://m.ithome.com/html/444828.htm 2019-09-12 15:25IT之家 (阿迷) 今年一月份 ...

随机推荐

  1. m96-97 lsc nc赛

    这一次 lsc 再一次一道题都没AC,看来lsc已经凉了! 出了分,旁边的_LH大喊了一声 “woc,lsc,你真是太垃圾!”...........“好吧!” 我确实很垃圾!(大佬这次都没考,所以我更 ...

  2. 最适合Java开发者的一本书和一软件

    一书-<Java编程思想> 一软件-IntelliJ IDEA Java自学是否可以成功,答案显而易见,可以. 自学Java关键看自己是否有毅力.是否有恒心. 自学Java 自学Java不 ...

  3. win7 安装php插件imagick

        win7 安装php插件imagick  <h2>安装步骤:</h2><h2><a name="t1"></a> ...

  4. nyoj 46-最少乘法次数 (递推)

    46-最少乘法次数 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:5 submit:18 题目描述: 给你一个非零整数,让你求这个数的n次方,每次相 ...

  5. JQury自动切换图片

    [标签]Jquery图片自动切换<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  6. Elasticsearch系列---分布式架构机制讲解

    概要 本篇主要介绍Elasticsearch的数据索引时的分片机制,集群发现机制,primary shard与replica shard是如何分工合作的,如何对集群扩容,以及集群的容错机制. 分片机制 ...

  7. RHEL7.2 安装Eclipse-oxygen Hadoop开发环境

    1 Eclipse-oxygen下载地址 http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/re ...

  8. iOS UIView x Android View

  9. 程序员修神之路--kubernetes是微服务发展的必然产物

    菜菜哥,我昨天又请假出去面试了 战况如何呀? 多数面试题回答的还行,但是最后让我介绍微服务和kubernetes的时候,挂了 话说微服务和kubernetes内容确实挺多的 那你给我大体介绍一下呗 可 ...

  10. deepin安装pip

    sudo apt install python3-venv python3-pip  升级最新版 pip3 install --upgrade pip 更新完以后就报错网上的解决办法没有好使的 退回版 ...