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

news2024/10/7 10:14:17

Percolator 背景

在这里插入图片描述

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

快照隔离级别(snapshot )

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

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

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

分布式时钟

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

Percolator 事务执行流程

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

Percolator 案例

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

在这里插入图片描述

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

优缺点

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.Net5 mvc项目UseBrowserLink插件功能失效的原因

前期基于.Net Framework创建的Web项目,使用了BrowserLink插件协助前端开发,功能一直都比较稳定,后来项目迁到.Net5 ,发现BrowserLink 已经失去了从浏览器定位到项目源代码的功能,希望在后面的版本还能继续支持此版本&a…

分区类型ID一键变身!快速改变分区类型ID的简单方法

分区类型ID是什么? 想要改变分区类型ID,先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型,实际上有5种分区类型:主分区、可扩展固件接口(EFI)、扩展分区、逻辑分区和Microsoft保留分…

gitbash2.41安装教程——2023.07

文章目录 1、下载安装包2、安装 1、下载安装包 进入官网下载,官网链接 上面有多种系统可以选择,我是windows,点击windows进行下载 这里可以直接下载最新版本的git 2.41.0 64位。 下载可能有点慢,耐心等待。 2、安装 下载完…

什么是云应用程序?

应用程序优先的云服务的日益普及导致应用程序与云服务的融合程度比以前更深。应用程序和云之间的运行时边界正在从虚拟机转移到容器和函数。集成边界正在从仅访问数据库和消息代理转向应用程序的机械部分混合并在云中运行的边界。在这个最终架构中,应用程序是“云绑…

02 QPushButton的基本使用

Tips: 在使用控件的时候如果没有智能提示,可能是没有包含头文件 在运行时,报【invalid use of xxx】可能是没有包含相关头文件 如果出现中文乱码:设置编译器的编码格式为UTF-8 本节主要包含创建一个按钮控件、显示按钮、设置按钮的父窗口、设…

【java】【基础2】程序流程控制

目录 一、最经典的三种执行顺序 二、分支结构 2.1 if 2.2 switch 2.3 if与switch区别 三、循环结构 3.1 for循环 3.2 while循环 3.3 do-while循环 3.4 三种循环区别 3.5 补充知识:死循环 3.6 补充知识:循环嵌套 四、跳转关键字:br…

轮廓提取demo

note 步骤: 1.滤波(使用高斯核对原图卷积) 2.取梯度(使用sobel核对步骤1之后的图卷积得到x,y两个方向的梯度分量) 3.合成梯度图(x,y两个方向的梯度分量相加) 4.取梯度平方和矩阵(x*x y*y) 5.取八邻域掩膜(3x3矩阵) 6.根据掩膜,合成梯度图&#x…

AIC8800 WIFI调试记录

问题:AIC8800 USB 接口WIFI模块无法识别 现象: 上层:WIFI打不开 驱动层:usb无法识别到AIC8800模块 A133P:/ $ lsusb Bus 001 Device 001: ID 1d6b:0002 Bus 001 Device 002: ID 1a40:0101 Bus 002 Device 001: ID 1d6b:0001 Bus…

postgresql regular lock常规锁申请与释放 内幕 以及fastpath快速申请优化的取舍

​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 定义 每种常规锁都需要定义几个要素,它由结构体 Lo…

MySQL中这14个小玩意,让人眼前一亮!!!

前言 我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中…

跨境电商市场迎来发展新机遇,如何利用IPIDEA扩大市场份额

根据Adobe Analytics的数据,美国消费者在亚马逊Prime Day期间花费了127亿美元,同比增长6.1%,创下历史新高。这一数据表明,亚马逊的会员日促销活动,持续吸引着消费者的关注和购买欲。跨境电商的迅速发展为普通商家提供了…

不得不会的软件测试bug分析定位技巧

目录 1.web前端 2.web后端 3.性能测试 身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。 也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果…

正则表达式与文本处理器

文本处理器三剑客:grep(查找) sed awk 正则表达式:由一类特殊字符以及文本字符所编写的一种模式,处理文本当中的内容 其中的一些字符不表示字符的字面含义,这些字符表示控制或者通配的功能 通配符&…

PageHelper分页失效,只能查出第一页

PageHelper分页失效&#xff0c;只能查出第一页 1. 现象2. 原因3. PageHelper工作原理 1. 现象 分页代码如下&#xff1a; int pageId Constants.ONE;boolean isHasNextPage;do {PageHelper.startPage(pageId, Constants.DEFAULT_PAGE_SIZE);List<String> projectIdLi…

python发送邮件yagmail库

yagmail库发送邮件简洁&#xff0c;代码量少 多次测试文件发送只能接收到表、文档、pdf、ppt import yagmaildef send_yagmail(sender, send_password, addressee, hostsmtp.qq.com, port465):yag yagmail.SMTP(sender, send_password, host, port)img_url https://img2.bai…

kali密码攻击之在线攻击hydra

hydra与hydra-graphical 1.介绍 Hydra是一款非常强大的暴力破解工具&#xff0c;它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具&#xff0c;主要目的是&#xff1a;展示安全研究人员从远程获取一个系统认证权限 支持以下协议爆破&#xff1…

Redis实战案例21-消息队列

1. 基于JVM的阻塞队列的局限 JVM内存限制问题&#xff0c;大量订单出现时&#xff0c;可能会超过JVM阻塞队列上限&#xff1b;阻塞队列并不能持久化&#xff0c;因为内存不能持久化&#xff0c;出现异常或者宕机之类的故障时&#xff0c;出现数据丢失&#xff1b; 所以引出消息…

Linux内核的任务:

硬件与软件之间的中间层&#xff1a;内核在技术层面上充当硬件和软件之间的中间层&#xff0c;负责将应用程序的请求传递给硬件&#xff0c;并处理硬件设备和组件的寻址和操作。 应用程序的接口&#xff1a;对于应用程序来说&#xff0c;内核是它们与硬件之间的接口。应用程序通…

基于 chinese-roberta-wwm-ext 微调训练 6 分类情感分析模型

一、模型和数据集介绍 1.1 预训练模型 chinese-roberta-wwm-ext 是基于 RoBERTa 架构下开发&#xff0c;其中 wwm 代表 Whole Word Masking&#xff0c;即对整个词进行掩码处理&#xff0c;通过这种方式&#xff0c;模型能够更好地理解上下文和语义关联&#xff0c;提高中文文…

NAS 问题处理记录

在解决自动配网的过程中&#xff0c;突然NAS不给力&#xff0c;偏偏这个时间找事情。上面这两个问题&#xff0c;说不复杂也不复杂&#xff0c;主要是自己在完全远程处理&#xff0c;很多不方便。当然少不了师弟的助攻&#xff0c;很感谢我的师弟帮忙&#xff0c;实验室的网络不…