首页
学习
活动
专区
工具
TVP
发布

面试-TCC事务

分布式事务是面试经常被问到的一个问题,今天我们分析一下TCC事务 首先我们看一个场景,如下图 有个订单服务生成订单的时候,会调用库存服务,积分服务,仓储服务的接口,库存服务会进行扣减库存,积分服务进行增加积分...T(try):一般就是锁定某个资源,设定一个预备类的状态,冻结部分数据,如下图 C(commit),当try阶段都执行成功,这里就是真正进行提交完成,如下图 C(cancel),当try阶段库存失败...,这里就进行回滚的操作,如下图 以上就是TCC事务的基本操作, 事务中的每一个接口由原来的一个接口,变成了三个接口,分别是try接口,comfirm接口,cancel接口 先是调用所有服务的try...接口 如果try都正常,TCC事务就进行Confirm接口 如果try某个的服务有异常,TCC事务就会进行回滚操作,调用cancel接口 其中我们可以发现,如果订单服务挂了,然后重启,那么之前没有执行完的事务如何处理...其实这里TCC框架会记录分布式事务的活动日志,可在磁盘的日志文件中记录,也可以记录到数据库,保存各个事务的运行阶段和状态 还有就是当cancel和comfirm执行失败,TCC框架也会根据日志记录和状态进行不断尝试

29330
您找到你想要的搜索结果了吗?
是的
没有找到

事务 - TCC模式

TCC于BASE相比,增加了业务检查和撤销事务的功能。...同时,TCC将2PC数据库层面的动作提升到了服务层面,不同的是TCC的所有动作都是一个本地事务,每个本地事务都在动作完成后commit到数据库: Try相当于2PC的Commit request phase...不过TCC在处理这种情况相比2PC具有一些优势,因为TCC是在服务层面的,当出现这种问题的时候可以很容易通过日志、业务数据排查出来,然后人工介入,而2PC完全是数据库底层的。...对于ACID的保证 TCC对于ACID的保证: A,正常情况下保证 C,在某个时间点,会出现A库和B库的数据违反一致性要求的情况,但是最终是一致的 I,在某个时间点,A事务能够读到B事务部分提交的结果...D,和本地事务一样,只要commit则数据被持久 实现TCC时的注意事项 实现TCC需要关注以下几个方面: TCC模式在于服务层面而非数据库层面 TCC模式依赖于各服务正确实现Try、Confirm、Cancel

62420

Hmily实现TCC事务控制

目标 通过本案例的学习,掌握Hmily实现TCC事务控制的方法,掌握TCC事务控制的思想。 Hmily介绍 Hmily是一个高性能分布式事务TCC开源框架。...基于Java语言来开发(JDK1.8),支持Dubbo,Spring Cloud等RPC框架进行分布式事务。...幂等: 通过前面介绍已经了解到,为了保证TCC二阶段提交重试机制不会引发数据不一致,要求 TCC 的二阶段 Try、Confirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源。.../dtx-tcc-demo-bank1 银行1,操作张三账户, 连接数据库bank1 dtx/dtx-tcc-demo/dtx-tcc-demo-bank2 银行2,操作李四账户,连接数据库bank2...两个测试工程如下: dtx/dtx-tcc-demo/dtx-tcc-demo-bank1 银行1,操作张三账户,连接数据库bank1 dtx/dtx-tcc-demo/dtx-tcc-demo-bank2

18020

C语言 | 为什么学C语言

C语言的重要性 C语言是所有高级语言的前辈,C++,C#,Java ,都是由C语言演变过来的,包括现在很火的python,第一个Python编译器诞生,它是用C语言实现的。...所有大学理科专业的必修课程都是C语言,就算你将来不从事开发, 期末考试总不能挂科吧,除了C语言,小林不知道还有哪一门课这么普及。...我们常用的操作系统windows、linux、unix是C语言开发的,如果你想当黑客必须学C语言,你去黑别人电脑的是不是绕不操作系统。 如果你想入职阿里、腾讯这样的大厂,必须学C语言,为什么呢?...C语言应用领域 操作系统:windows、linux、unix 数据库:Oracle和sql server 一些驱动程序 wps、photoshop 嵌入式开发 C语言特点 C语言简洁,灵活,有37个关键字...C语言数据类型极其丰富。 C语言程序执行效率很高,可以直接操作内存。 C语言学习目标 掌握C语言的语法规则,数组、循环、函数、指针等。 要学会一些算法,比如冒泡排序、快速排序、递归等。

11.2K42

C语言笔记---(1)初识C语言

C语言简介 C语言的历史 1972年,贝尔实验室,1972年,丹尼斯·里奇和布莱恩·柯林汉(Brian Kernighan)在B语言的基础上重新设计了一种新语言,这种新语言取代了B语言,所以称为C语言...C语言的源代码可以在任意架构的处理器上使用。 C语言的特点 1.语言简洁灵活 C语言是现有程序设计语言中规模最小的语言之一,C语言的关键字仅仅只有32个,控制语句也只有9个。...C语言是完全模块化和结构化的语言C语言对于输入和输出的处理也是通过函数调用来实现的。...C语言的版本 在C语言的发展史上,有过许多不同的版本。...这本书被C语言开发者们称为“K&R”,很多年来被当作C语言的非正式的标准说明。人们称这个版本的C语言为“K&R C”。

7K10

C语言C语言数组和指针

---- 友情提醒:本文可能是全csdn最详细的指针内容了,希望你能用心读下去 前言 接下来的讲解部分是指针的进阶,包含多种指针以及对应的数组,这部分章节对我们来说很重要,也是c语言中的重点模块儿,重要性不言而喻...(c/c++会把常量字符串储存到单独的一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针的定义 1.数组指针嘛...我们直接大白话给他翻译成通俗易懂的语言。怎么样就是回调函数呢?就比如你现在有一个可以实现两数之和功能的函数Add,你明明可以在main函数里面直接调用这个函数,给他传上两个整数的参数,让他返回和的值。

46.8K20

扫码

加入 开发者社群

领取 专属20元代金券

Get大咖技术交流圈

扫码加入开发者社群

相关产品

  • 智慧会务

    智慧会务

    腾讯云智慧会务可以广泛运用于商务会议、行业论坛、企业年会、路演、演讲等诸多场景,通过小程序或者H5的能力,结合人脸识别、电子名片、同声传译、视频直播等技术,实现会议组织的在线化、数字化、无纸化。

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券