分布式事务对于两阶段提交的错误处理

2022-01-12 00:00:00 数据库 分布式 错误 提交 阶段

一、背景


笔者和团队在昆仑分布式数据库中的两阶段提交方式,可以成功避免经典的两阶段提交算法的缺陷。


而在此分布式事务处理两阶段提交机制和原理上,笔者和团队增强其容灾能力和错误处理能力,可以做到任意时刻昆仑数据库集群的任意节点宕机或者网络故障、超时等都不会导致集群管理的数据发生不一致或者丢失等错误。


本文会详述分布式事务对于两阶段提交算法的错误处理原理和机制及延时损耗~


二、昆仑数据库如何对两阶段提交算法错误处理?


在生产环境的分布式数据库集群的工作场景中,通常只有不到0.01%的分布式事务提交会发生错误,但是我们仍然需要处理所有可能发生的错误。

因为哪怕执行了100亿笔事务,只要有1笔发生了提交错误,都会导致用户数据出错。

数据库系统就是要确保事务永远正确地提交,ACID保障始终成立,没有例外。

这对于分布式数据库系统来说,会比单机数据库更加复杂,因为可能的错误来源更多(多个计算节点和多个存储节点,及其之间的网络连接)。

这也是为什么数据库系统的设计和实现会如此复杂,而分布式数据库系统的设计和实现更加复杂

下面,我们就看一下昆仑分布式数据库集群如何处理分布式事务提交过程中发生的错误。我们分别讲述两阶段提交的每个阶段的错误处理,以及批量写入commit log的错误处理。


2.1 阶段错误处理

相关文章