050、事务设计之Percolator事务模型

Percolator 背景

在这里插入图片描述

  • Bigtable: 大表打散每行到各个节点,每一行作为一个kv。
  • 解决的问题
    一个事务涉及的行在多个节点,如何用单行对一个事务进行控制,实现原子性。

快照隔离级别(snapshot )

在这里插入图片描述
白色点:代表事务开始时间
黑色点:代表事务结束时间

事务2是不能看到事务1的修改(事务2的开始时间是早于事务1的提交时间)
事务3的开始时间是晚于事务1和事务2的提交时间,所以都能看到。

快照隔离级别类似可重复读,事务能读到的数据都是事务开始那一刻能看到的数据。

分布式时钟

分布式时钟: 给事务分配时间标识
在这里插入图片描述

Percolator 事务执行流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
primary key: 选择任一一行作为主行,这里不是说主键
在这里插入图片描述
prewrite
其它行也加锁(但这个锁的内容是指向主行),所以真正的锁只有一把在主行上。
如果此时其它行 无法加这个锁,则表示其他行正在被其它事务写入,则此时当前这个事务会报错,把指向的主行上面的锁也清掉。 (相当于整个分布式事务直接回滚)
在这里插入图片描述

Percolator 案例

  • 修改数据
    在这里插入图片描述
  • prewrite
    在这里插入图片描述
  • 提交主行

在这里插入图片描述

  • 主行提交完毕,提交其它行
    在这里插入图片描述
    如果主行提交完成,其它行提交异常(数据库down了),其实是不影响事务的一致性。因为重新发起事务后,发现上面有个锁(记录主锁信息)发现主锁已经清理,则此时会将lock当中的信息清掉,保持其他行已提交。

优缺点

  • 优点
    • 实现简单
    • 基于单行的事务基础上,实现了跨行事务
    • 去中心化的锁管理
  • 缺点
    • 需要管理中心化的版本号
    • 网络交互较多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/38844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring:Bean生命周期

Bean 生命周期生命周期 Bean 生命周期是 bean 对象从创建到销毁的整个过程。 简单的 Bean 生命周期的过程: 1.实例化(调用构造方法对 bean 进行实例化) 2.依赖注入(调用 set 方法对 bean 进行赋值) 3.初始化(手动配置 xml 文件中 bean 标签的 init-method 属性值,来指…

C语言小项目——通讯录高阶(文件管理版)

通讯录初阶: 点这里 通讯录中阶: 点这里 文件管理版本改进之处通讯录初始化退出通讯录并保存 完整代码contact.hcontact.ctest.c 文件管理版本改进之处 通讯录初始化 contact.c 退出通讯录并保存 test.c contact.c contact.h 完整代码 contact.h #pragma once#include&l…

Android应用启动全流程分析(源码深度剖析)

作者:努比亚技术团队 源码来源:努比亚技术团队 1.前言 从用户手指点击桌面上的应用图标到屏幕上显示出应用主Activity界面而完成应用启动,快的话往往都不需要一秒钟,但是这整个过程却是十分复杂的,其中涉及了Android系…

【Win10系统下载Python3】

Python3官网:https://www.python.org/downloads/windows/ 注

基于springboot的微信小程序宠物领养医院系统(源代码+数据库+10000字论文)085

基于springboot的微信小程序宠物领养医院系统(源代码数据库10000字论文)085 一、系统介绍 本项目有网页版和小程序端 本系统分为管理员、医生、用户三种角色 用户角色包含以下功能: 登录、注册、宠物领养、医生在线咨询、查看挂号、个人中心、密码修改、宠物寄…

线性表的链式存储结构以及顺序表和链表的比较

2.2线性表的链式存储结构 **链式存储结构:**结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。 线性表的链式表示又称为非顺序映像或链式映像 这组存储单元既可以是连续的,也可以是不连续的,甚至是零散…

Python机器学习、数据统计分析在医疗中的应用

Python机器学习在医疗诊断领域的应用 随着人工智能技术的不断发展,机器学习已经在医疗领域的诊断治疗、预防等方面展现出强大的潜力。Python 作为一种广泛应用于机器学习的语言,在医疗领域也已经被广泛使用。本文将探讨 Python 机器学习在医疗领域的应用…

apache ozone详细介绍

Ozone是哪路神 Apache Ozone https://github.com/apache/ozone Ozone是Apache软件基金会下的一个项目,其定位是:一个用户大数据分析和云原生应用、具有高扩展性、强一致性的分布式Key-Value对象存储。 HDFS是业界默认的大数据存储系统,在业…

零钱兑换 II(力扣)动态规划 JAVA

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 示例…

git下载源码及环境搭建之前端(三)

学习目标: vue 新项目的 前端环境搭建 vue 项目在 使用 Visual Studio Code 开发前端项目环境的搭建及 相关文件的配置 操作步骤: 前端: 下图所示为开发时前端所用的编辑器 注意:在配置时 有时候 localhost 可能 不太好用&…

AN OVERVIEW OF LANGUAGE MODELS RECENT DEVELOPMENTS AND OUTLOOK

LLM系列相关文章,针对《AN OVERVIEW OF LANGUAGE MODELS: RECENT DEVELOPMENTS AND OUTLOOK》的翻译。 语言模型综述:近年来的发展与展望 摘要1 引言2 语言模型的类型2.1 结构化LM2.2 双向LM2.3 置换LM 3 语言单元3.1 字符3.2 单词和子单词3.2.1 基于统…

JVM——类加载和垃圾回收

目录 前言 JVM简介 JVM内存区域划分 JVM的类加载机制 1.加载 双亲委派模型 2.验证 验证选项 3.准备 4.解析 5.初始化 触发类加载 JVM的垃圾回收策略 GC 一:找 谁是垃圾 1.引用计数 2.可达性分析 (这个方案是Java采取的方案&#x…

金融数据库的战场,太平洋保险和OceanBase打了场胜仗

点击关注 文丨刘雨琦 “数据库的国产替代,必须经过严格的考虑,保证不会出错,所以大多数企业的领导层选择按兵不动或者简单扩容。因为不换就不会错,选了很久如果选错,还可能会出现重大事故。” 某银行数据库技术人员…

【Vue】day02-Vue基础入门

目录 day02 一、今日学习目标 1.指令补充 2.computed计算属性 3.watch侦听器 4.综合案例 (演示) 二、指令修饰符 1.什么是指令修饰符? 2.按键修饰符 3.v-model修饰符 4.事件修饰符 三、v-bind对样式控制的增强-操作class 1.语法…

AI时代图像安全“黑科技”如何助力人工智能与科技发展?

〇、前言 7月7日下午,2023世界人工智能大会(WAIC)“聚焦大模型时代AIGC新浪潮—可信AI”论坛在上海世博中心红厅举行。人工智能等技术前沿领域的著名专家与学者、投资人和领军创业者汇聚一堂,共同探索中国科技创新的驱动力量。 在…

【Git】Git 拉取的快速方法(含项目示例)

文章目录 一、问题的提出二、问题的尝试解决 一、问题的提出 在我们之前的拉取中,速度可能比较慢,例如,我们要拉取CLIP的项目。 (ldm) rootI1385efcc2300601b29:/hy-tmp/latent-diffusion# pip install githttps://github.com/openai/CLIP.…

JavaWeb课程设计项目实战(02)——搭建开发环境

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 友情提示 1、 假若你的设备已有可用的Java开发基础环境,则无需重新搭建 2、 假若你需重新搭建Java开发,请务必彻底卸载之前的环境 3、 请尽量保证与…

吴恩达ML2022-用于手写数字识别的神经网络

1 用到的包 导入在这个分配过程中需要的所有包。 Numpy 是使用 Python 进行科学计算的基本软件包。Matplotlib 是在 Python 中绘制图形的流行库。tensorflow是一种流行的机器学习平台。 import numpy as np import tensorflow as tf from tensorflow.keras.models import Se…

文心一言 VS 讯飞星火 VS chatgpt (59)-- 算法导论6.4 3题

文心一言 VS 讯飞星火 VS chatgpt (59)-- 算法导论6.4 3题 三、对于一个按升序排列的包含 n 个元素的有序数组 A 来说,HEAPSORT 的时间复杂度是多少?如果 A 是降序呢? 文心一言: 对于一个按升序排列的包含 n 个元素的有序数组…

windows下mingw 编译boost-1.78.0

1.mingw环境设置 添加C:\cygwin64\bin 到环境变量,cmd运行检查是否安装成功 打开cmd,验证: 2.boost下载&编译 下载:Boost Downloads 如果基于msvc编译器编译,可直接下载安装库:Boost C Libraries -…
最新文章