首页 > 其他分享 >多主架构:VLDB技术论文《Taurus MM: bringing multi-master to the cloud》解读

多主架构:VLDB技术论文《Taurus MM: bringing multi-master to the cloud》解读

时间:2023-09-14 15:25:57浏览次数:38  
标签:multi 行锁 MM 数据库 VLDB 华为 Master 多主 节点

本文分享自华为云社区《多主创新,让云数据库性能更卓越》,作者: GaussDB 数据库。

华为《Taurus MM: bringing multi-master to the cloud》论文被国际数据库顶会VLDB 2023录用,这篇论文里讲述了符合云原生数据库特点的超燃技术。介绍了如何通过各种黑科技减少云原生数据库的网络消耗,进而提升云原生数据库的性能和稳定性。下面就让我们抽丝剥茧,细细品味技术的魅力,揭开华为云数据库多主技术的面纱。

说明:技术论文中的Taurus在华为云商用的产品名是GaussDB(for MySQL),是GaussDB(for MySQL)的云原生架构技术版本。

引言

现下,大型高性能数据库通常采用一写(主)多读(副本)这种标准部署方式来提高业务吞吐量。。然而,单主会导致单点故障,同时限制了写扩展性,也就是说带来了可用性和性能的双重挑战。而性能和可用性是衡量一个企业级数据库是否优秀最关键的两个方面。由此多主数据库应运而生。

多主数据库有Shared-nothing和Shared-storage两种架构。谷歌Spanner、亚马逊DynamoDB、CockroachDB、OceanBase及其他一些数据库采用了Shared-nothing架构。亚马逊Aurora多主数据库、Oracle RAC和IBM DB2 pureScale采用了Shared-storage架构。

对于Shared-nothing架构的多主,每个节点对一个小数据子集执行计算和存储。在高度分区的工作负载场景下,这类架构可以提供非常高的可扩展性。但在如下不均衡的工作负载场景中,其优势受限——节点数越多可能意味着节点间数据交换越多:

  • 数据无明显分区特征;
  • 工作负载随时间变化;
  • 存在热点数据场景。

同时,Shared-nothing架构使用分布式提交协议,信息同步多轮交换,降低了多主系统的性能。

对于传统的Shared-storage架构,计算层与存储层分离。这类架构由于其高度集成及密集网络通信的特点,需要高端和专用的网络硬件,更适用于对成本不敏感的线下数据中心部署,不适用于云原生数据库。云的最核心特点是通过多用户共享基础设施平摊成本(包括网络硬件)来实现高成本收益。

云数据库性能的关键是对共享网络的优化。华为云数据库多主(Multi-Master)专注于从消息的数量和大小两方面减少网络流量,这一目标的达成并不容易,很多公司尝试过,但目前还没有看到成功案例。

华为云数据库多主黑科技解析

那究竟如何实现多主上云呢?华为云数据库多主有哪些硬核技术突破呢?

通过对网络流量消耗进行分析和归类后,我们发现主要的网络消耗是由于主节点写页面、时钟同步和锁信息交互三个方面。华为云数据库在如上三个方面进行了探索和尝试,并取得了可喜成绩。下面详细讨论在每类开销上,华为云数据库是如何尽最大可能减少网络计算开销的。

减少直接页面写入带来的网络消耗

此问题已有解决方案——2020年SIGMOD会议上我们向会议研究团体介绍了华为云原生数据库单主解决方案:“Log As Database”(日志即数据库)。

简单说就是华为云数据库计算与存储分离,计算层包含一写(主)多读(副本)。计算层的作用是执行数据库的修改,主要功能有:接入连接、执行查询、管理事务以及生成WAL日志记录(日志用于描述对数据库页所做的修改)。事务更新时先生成日志记录,主节点将这些日志记录传送到存储层的Log Stores中进行存储,通过日志回放生成数据,从而无需通过网络执行整个数据页面的写入,节省了所需的网络带宽。详细见图1。

图1:华为云数据库组件及分层架构

cke_114.png

华为云数据库多主重用了一主多读架构中的思想,采用Shared-storage体系结构,所有Master之间共享日志存储和页面存储,继续沿用悲观并发控制,且引入了全局锁管理器GLM(Global Lock Manager)。

各Master维护自己的预写日志(WAL)。用户事务在单主上执行——没有分布式事务。日志记录写入执行事务的主机中。每个Master会定期将带有位置信息标识(哪个Master生成的)的新生成日志提交给所有其他Master。通过位置信息,各Master读取其他所有Master上生成的日志记录,并更新进自己的缓冲池页面中。详细如图2所示。

图2:华为云数据库多主组件及分层架构

cke_115.png

减少时钟同步带来的网络消耗

多主数据库特有的第二个网络开销来源是时钟同步。在单主数据库上,事务时钟信息可以直接使用本地物理时钟。然而,在分布式系统中,不同节点上的物理时钟很难精确保持一致。而通过网络连接同步和获取时间戳,会带来无法容忍的时间延迟。因此,对于分布式数据库物理时钟这种方法不再适用。

这在业界不是一个新近才提出的问题。早在20世纪70年代,莱斯利·兰伯特就为了解决此问题,提出并发明了标量时钟(常称为逻辑时钟,或兰伯特时钟)。此标量时钟由一个数字组成时间戳,仅在消息交换期间进行不同计算机间的时钟同步。兰伯特时钟的算法简单而优雅,但要通过它创建数据库的分布式快照基本不可能,而分布式快照对分布式数据库的性能又是非常重要的。同时,逻辑时钟无法保存事务间的因果关系。简单说,就是假设

标签:multi,行锁,MM,数据库,VLDB,华为,Master,多主,节点
From: https://www.cnblogs.com/huaweiyun/p/17702565.html

相关文章

  • 工程管理之三:结合Commons Configuration和Maven进行工程配置管理
    本文源自目前公司中对一些项目的总结。实际问题:每个工程都会包含多套配置环境,包括开发环境,测试环境,沙盒环境以及生产环境,而每一套环境都对应着不同的配置参数。本文以一个非web工程举例,使用到了CommonsConfiguration+Maven管理配置,并包括一个完整的配置文件读取工具类。整理一下......
  • git revert如何撤销某次merge或commits?
    gitrevert撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交撤销commits bash复制代码gitrevert-n'commitid'撤销某次merge保留本分支内容,撤销'commitid'对应的内容 bash复制代码gitrevert-m1'commitid'......
  • [vite] Internal server error: URI malformed at decodeURI (<anonymous>) at viteTr
    前端访问地址:http://localhost:80前端项目启动,出现[vite]Internalservererror:URImalformedatdecodeURI()atviteTransformMiddleware(xxx_project/node_modules/vite/dist/node/chunks/dep-51c4f80a.js:59976:19)看看浏览器路径上是否带有未编码的字符,例如:/123%45......
  • CommandLineRunner - Spring Boot应用程序启动后执行
    在springboot启动的时候,有的时候需要做一些初始化或者预加载的事情。springboot给我们提供了这样一个接口CommandLineRunnerCommandLineRunner是一个接口,用于在SpringBoot应用程序启动后执行一些特定的任务或代码块。当应用程序启动完成后,SpringBoot会查找并执行实现了Comma......
  • 多主架构:VLDB技术论文《Taurus MM: bringing multi-master to the cloud》解读
    本文分享自华为云社区《多主创新,让云数据库性能更卓越》,作者:GaussDB数据库。华为《TaurusMM:bringingmulti-mastertothecloud》论文被国际数据库顶会VLDB2023录用,这篇论文里讲述了符合云原生数据库特点的超燃技术。介绍了如何通过各种黑科技减少云原生数据库的网络消耗,进......
  • Excel导出时文件中没有内容,表格是空的,并且后台抛出了下面的错误:No converter for [cla
    【问题描述】Excel导出时文件中没有内容,表格是空的,并且后台抛出了下面的错误:2023-09-1409:48:59.876WARN7---[http-nio-8096-exec-3].m.m.a.ExceptionHandlerExceptionResolver:Failurein@ExceptionHandlercom.cscecnf.common.exception.GlobalExceptionHandler#exce......
  • mmc-detail商详
    //934看代码抓入参和生产者[ItemDetailServiceImplqueryAppItemDetail][Maininput]ItemDetailServiceImpl.queryAppItemDetail找日志https://cc.alibaba-inc.com/resource?spm=a1znmd.11229699.page.30.52832889FLbXlF&identifier=public_my_managed找接口https://......
  • [LeetCode] 85. Maximal Rectangle_Hard tag: Dynamic Programming
    Givena rowsxcols binary matrix filledwith 0'sand 1's,findthelargestrectanglecontainingonly 1'sandreturn itsarea. Example1:Input:matrix=[["1","0","1","0","0"],["1&q......
  • visual studio community 2015 clodelens功能
    关于community版本中增加codelens功能,网上能搜索到不少安装ssdt后出现该功能的文章,之前我也是参照这些文章来安装codelens功能的,但前几天重装系统后,再次安装ssdt时codelens功能并没有像预期那样出现,经过一系列的折腾,发现是ssdt版本的问题,在最新版的ssdt(14.0.61712.50)中阉割......
  • Transformer-empowered Multi-scale Contextual Matching and Aggregation for
    Transformer-empoweredMulti-scaleContextualMatchingandAggregationforMulti-contrastMRISuper-resolution(阅读文献)10.12基于变压器的磁共振多对比度超分辨率多尺度背景匹配与聚合摘要:MRI可以显示相同解剖结构的多对比图像,使多对比超分辨率(SR)技术成为可能。和使用单一......