分布式一致性:两阶段提交

分布式一致性:两阶段提交

一致性

一致性是指数据库中的信息是一致的,不矛盾的。

假如一个表示朋友关系的table有两个字段user_idfriend_id,如果有[1,2],那么必须有[2,1]。但是如果table中没有[2,1],可以认为这个table中的数据是不一致的。

又例如银行系统中用户A给用户B转账10¥,这种情况下,可以肯定A、B的资金总和是不变的。转账过程有两步,第1步是从A的账户中扣除10¥,第2步是在B的账户中增加10¥。如果在第1步后由于系统故障,第2步没有执行。此时A、B的资金总和发生变化,认为出现了不一致。这个用事务可以解决。

分布式一致性

分布式系统的一致性问题总是伴随数据复制而生, 数据复制技术在提高分布式系统的可用性、可靠性和性能的同时,却带来了不一致问题。 理想情况下, 多个副本应该是应用透明的, 从外界看来多副本如同单副本, 而事实上维护一致性非常困难。试想一下, 写入新数据时, 某副本所在的服务器宕机,或者突然发生了网络错误, 此时该如何处理? 是继续重试等待故障消失呢,还是放弃写入故障副本? 若继续重试写入, 则导致系统不可用,影响业务; 而放弃写入则副本数据不同步,产生了差异, 会不会对应用会造成影响? 这似乎是个两难问题, 看似无法抉择。 幸好一致性问题并不是非黑即白的二选一问题, 业界早就定义了多套适合于各种应用场景的一致性模型:强一致性、弱一致性、最终一致性。

这里说一下两阶段提交协议。

例如现在数据库A、B、C分别部署在3台主机上,这三个数据库要保持数据的一致性。

两阶段提交协议分为准备和提交两个阶段。

例如现在A要执行一个事务了,它先问问B和C能否执行该事务,而B和C先把这个事务执行一下看行不行。这是第一阶段。

如果B和C都可以执行该事务,那么A、B、C均提交该事务。如果B或者C告知A无法执行该事务,则回滚。这是第二阶段。


另外还有一个三阶段提交,见下面的资料。

资料

两阶段提交协议
分布式一致性
维基百科-二阶段提交
维基百科-三阶段提交
Three-phase commit protocol
Two-phase commit protocol

分布式事务设计-两段式提交
分布式事务设计-三段式提交

《改变未来的九大算法》 第八章

转载于:https://my.oschina.net/letiantian/blog/524843

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109269.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • finalize方法的使用[通俗易懂]

    finalize方法的使用[通俗易懂]《JAVA编程思想》:Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。         (1).对象不一定会被回收。      (2).垃圾回收不是析构函数。      (3).垃圾回收只与内存有关。      (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。有时当撤消…

    2026年1月24日
    6
  • jeesit1.27使用(2)-图片处理

    jeesit1.27使用(2)-图片处理 解决问题:字典使用使用对象:初级开发人员,项目时间紧张没有空钻研源码需要马上学会使用。1.配置表时选择文件上传。 2.生成代码,不敷述了 3.修改form.jsp代码 将type中的files改为images。4.修改list.jsp。…

    2025年6月7日
    1
  • android sdk manager安装,Android SDK Manager安装过程

    android sdk manager安装,Android SDK Manager安装过程1、首先要下载安装JavaJDK,下载地址:http://pan.baidu.com/share/link?shareid=7368&uk=2148507123然后在下载最新的AndroidSDK4.1文件,下载地址:http://dl.google.com/android/android-sdk_r20-windows.zip或:http://pan.baidu.com/share…

    2022年7月21日
    22
  • Java学习之Spring框架入门篇

    Java学习之Spring框架入门篇0x00前言最近在学SSM的三大框架,上篇文章,已经更新了Mybatis的相关内容,那么这篇文章就来写写Spring的入门。0x01Spring概述S

    2021年12月12日
    44
  • 知识图谱赵军学习笔记(九)–知识推理

    知识图谱赵军学习笔记(九)–知识推理知识图谱中的推理任务知识推理是人工智能应用迈向更高级认知智能的重要技术。包括知识补全和知识问答。知识补全面向知识库或者知识图谱的事实补全如图谱中给出了出生地但没有国籍,即可以通过推理的方法把实体或关系预测出来。称为链接预测。它是利用已知知识预测未知的隐含知识,利于完善现有知识图谱。包含两个评测任务:三元组分类判断是否正确比如首都(北京,中国)首都(成都,中国)是错的,二分…

    2022年5月22日
    41
  • 自动化测试之超厉害自动化录制工具介绍

    自动化测试之超厉害自动化录制工具介绍

    2021年9月17日
    153

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号