用于保证分布式数据库事务原子性的两阶段提交[Two-phase commit]

网友投稿 563 2023-04-06

用于保证分布式数据库事务原子性的两阶段提交[Two-phase commit]

用于保证分布式数据库事务原子性的两阶段提交[Two-phase commit]

帮大家翻译一下,非专业人员,错误之处请大家谅解:

简介:

二阶段提交协议是事务处理、数据库和计算机网络中的一种原子性提交协议。 它是一种分布式算法,用于协调所有参与同一个分布式原子性事物的进程(提交或忽略事务)。此协议进程,网络节点,通信等失效的情况下仍然能保证事物原子性,所以它被广泛地使用。然而,它无法容忍所有可能的失败的配置,并且偶尔为获得正确结果而需要人为介入。为容纳从失败中恢复,此协议的参与者用日志记录协议状态。这种经常缓慢但挽救错误的日志记录被用于协议的恢复性存储过程。许多不同的协议的主要不同点在于日志记录策略和恢复机制。尽管恢复性存储过程经常有意被频繁的使用,但是它是二阶段提交协议的本质部分!许多可能的失败场景在这协议中都被考虑了进去。

协议使用的环境:

一个节点作为协调者[主站],其余的网络节点作为队列[cohorts]

协议的几点假设:

前两点必须严格遵守,否则数据可能丢失,最后一点不必严则遵守,因为网络会被重新路由:

2.永远没有节点崩溃

3.预写式日志中的数据绝不会丢失或因为崩溃而损坏

4.任意两节点都能互相通信

缺点:

如果协调者[主站]永久性失效的话,一些队列[cohorts]就不能解决其事务。

基本算法:

提交请求阶段[投票阶段]:    1.协调者给所有cohorts发送一个Commit请求,然后等待所有cohorts的回复    2.当cohorts收到Commit请求时,执行事务。每一个cohort在undo log和redo log中各写入一条信息    3.如果事务执行成功,则cohort返回一条同意[agreement]的信息,反之,则返回忽略[abort]信息

提交阶段[完成阶段]:    投票成功:如果所有的cohorts都返回同意的信息        1.协调者发送一个Commit请求给所有的cohort.        2.每个cohort完成操作,释放事务的资源和锁        3.每个cohort发送确认[acknowledgment]信息给协调者        4.当协调者收到所有cohort的确认信息后,完成事务    投票失败:如果任何cohort返回不同意信息        1.协调者发送一个Rollback请求给所有的cohort.        2.每个cohort通过undo log取消事物,释放事物的资源和锁        3.每个cohort发送确认[acknowledgment]信息给协调者        4.当协调者收到所有cohort的确认信息后,取消事务

参考文献:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分布式数据库设计知识点
下一篇:一脸懵逼学习HBase---基于HDFS实现的。(Hadoop的数据库,分布式的,大数据量的,随机的,实时的,非关系型数据库)
相关文章