分布式事务核心理论

YOLOv5改进之---EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU 本文主要针对yolov5的iou损失函数进行改进,主要涵盖EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU这几种损失 阅读详情

背景介绍

公司系统最近完善了微服务架构,以前单实例主从mysql进行了多实例拆分,根据业务分摊主库压力。基于微服务架构设计功能,总是绕不开分布式事务的问题,针对各种分布式事务解决方案进行了详细调研,这一篇文章,主要介绍一下分布式事务理论基础,有了这些理论才能结合业务选择合适的方案。(ps:最佳实践是,通过合理设计尽量避免分布式事务,本地事务才是最高效、最稳定的)

CAP理论和BASE理论

CAP理论

一致性(Consistency) 、可用性(Availability) 、分区容错性(Partition tolerance)

BASE理论

基本可用(Basically Available)、软状态(Soft state)、最终一致性(Eventually consistent)

关于CAP理论和BASE理论的文章太多了,这里不做详细介绍。
读到这里,读者至少需要搞清楚几个问题?

  1. CAP理论和BASE理论的关系
  2. CAP理论和分布式事务有什么关系
  3. BASE理论和分布式事务有什么关系

一句话概括:分布式事务无法同时满足CAP,BASE理论是对CAP中一致性和可用性权衡的结果。我们不都舍弃,找一个折中 的办法。 不能同时拥有,也不想放弃任何一个。那就一个区一半吧。

刚性事务和柔性事务

刚性事务:遵循ACID原则,强一致性。
柔性事务:遵循BASE理论,最终一致性;与刚性事务不同,柔性事务允许一定时间内,不同节点的数据不一致,但要求最终一致。

DTP模型(刚性事务)

XA、2PC、两阶段提交事务都是DTP模型。
DTP模型(Distributed Transaction Processing Reference Model) 是X/Open 组织定义的一套分布式事务的标准。
X/Open DTP 定义了三个组件: AP,TM,RM。
AP(Application Program):应用程序,我们的业务代码。
RM(Resource Manager):资源管理器,这里可以理解为一个DBMS系统,或者消息服务器管理系统,应用程序通过资源管理器对资源进行控制。资源必须实现XA定义的接口。
TM(Transaction Manager):事务管理器,负责协调和管理事务,提供给AP应用程序编程接口(TX协议)以及管理资源管理器
DTP模型分为两个阶段:准备阶段、提交阶段
开源实现方式:Atomikos
在这里插入图片描述
在这里插入图片描述

最大努力通知(柔性事务)

最简单的一种柔性事务,适用于一些最终一致性时间敏感度低的业务,且被动方处理结果不影响主动方的处理结果。典型的使用场景:如银行通知、商户通知等。
在这里插入图片描述

可靠消息最终一致性(柔性事务)

基于Rocket MQ事务消息,实现可靠消息最终一致性。引入rocketMq,中间环节较多,时效性差。
在这里插入图片描述

TCC模式(柔性事务)

TCC(Try-Confirm-Cancel)两阶段补偿型。开发难度大,每个子事务需要开发三个接口(Try、Confirm、Cancel),性能高。
在这里插入图片描述

主流的分布式事务框架

后面的文档会对主流框架,挨个说明对比。
基于mybatis plus和shardingsphere实现以下方案:

  • Atomikos使用
  • Seata使用
  • Servicecomb-pack使用

参考文章:
https://blog.youkuaiyun.com/liaomin416100569/article/details/78651525
https://www.jianshu.com/p/d70df89665b9

基于STM32L4XX 、HAL库的TMP144YFFR数字温度传感器驱动应用C语言程序设计 define TMP144_ADDRESS 0x00 // 默认为全局地址,用于单器件或MDA命令。#define TMP144_CMD_READ_TEMP 0x00 // 读取温度寄存器命令。if (temp_raw & 0x800) { // 判断第11位(符号位) 阅读详情

相关推荐

从零到一:OptimizePI Pre-layout PDN前仿真实战指南

本文详细介绍了如何使用OptimizePI进行电源完整性(PDN)前仿真,从软件安装配置到元器件建模、去耦电容配置及仿真参数设置,提供了实战技巧和常见问题排查指南。通过OptimizePI的Pre-layout仿真,工程师可以在PCB布局前优化电源分配网络,显著提升设计效率并降低成本。

weixin_28304023的博客 508

分布式事务简介

什么是分布式事务 分布式事务实现方式

qq_38571892的博客 530

微信小程序测试号开发后上传按钮灰色?三步快速切换正式AppID

本文详细解析了微信小程序测试号开发后上传按钮灰色的原因,并提供了三步快速切换正式AppID的解决方案。通过注册正式小程序账号、修改项目配置和重新编译上传,开发者可以轻松解决上传按钮不可用的问题,确保小程序顺利上线。

weixin_29291185的博客 1576

浅析分布式事务

分布式事务的概念讲解以及常用解决方案

孤山之王 603

Sentinel--哨兵系列数据下载地址及流程更新【202310】

哨兵系列数据下载地址及流程更新。哨兵系列卫星作为哥白尼计划的一部分,主要目标便是对地球的观测任务。哥白尼计划由三部分组成:空间部分(哨兵系列太空任务与其他太空机构任务)、测量部分(提供海洋、大陆表面和大气信息的陆基和机载数据收集网络)、数据管理与全球共享。

twg666的博客 3万+

光耦CTR参数实战:如何避免误触发与功耗陷阱(附计算公式)

本文深入解析光耦CTR参数在电路设计中的关键作用,探讨如何平衡误触发风险与功耗表现。通过TLP521、PC817等常见型号的实测数据对比,提供不同工作状态下的选型策略和计算公式,帮助工程师优化设计,提升系统稳定性和能效。

2a4s6d8f0g的博客 323

面试官:聊一下分布式事务!

你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起精进!编辑:业余草推荐:https://www.xttblog.com/?p=5160概要在...

xmt1139057136的专栏 2万+

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3109

分布式事务的核心思想

数据库事务的传播性(7)和隔离级别4(): https://www.cnblogs.com/WJ-163/p/6023054.html CAP理论与BASE理论: 支付项目: 同步回调:即向支付宝发送支付请求后,支付宝处理完成后,直接以重定向的形式返回。 异步回调:蚂蚁课堂向支付宝发送请求时,会将异步回调地址也传给支付宝,支付宝支付完成后,支付宝会通过后台的方式调用蚂蚁课堂的...

weixin_33968104的博客 209

DCMM评估报告模板样例

这篇DCMM评估报告对某数据管理公司2020年的数据管理能力进行了全面分析。报告显示,该公司在数据战略方面取得初步进展,但在数据治理和数据架构方面仍存在明显不足,包括缺乏有效治理流程、数据质量监控不足,以及数据标准化和转换灵活性不足等问题。评估报告提出了针对性改进建议,包括完善数据战略、建立治理流程、加强质量监控和提升数据转换灵活性等,为提升数据管理成熟度提供了重要指导。

cdfunlove的博客 166

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2361

漫画:什么是分布式事务?

点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!—————  第二天  —————————————————假如没有分布式事务在一系列微服务系统当中,假如不存在分布式事务,会发生什么呢?让我们以互联网中常用的交易业务为例子:上图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库。在交易系统的业务逻辑中,一个商品在下单之前需要先调用库存服务,进行扣除库存,再调用订

程序员小灰的博客 11万+

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 497

【Java分布式事务核心原理】:深入剖析CAP理论与BASE模型的实战应用

深入掌握Java分布式事务核心原理,解析CAP理论与BASE模型在微服务场景下的实战应用。涵盖两阶段提交、事务消息等关键方案,提升系统一致性与可用性,值得收藏。

DebugLoom的博客 1000

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

分布式事务核心理论:CAP与BASE

C(Consistency)一致性:所有节点同时看到相同数据A(Availability)可用性:每个请求都能获得响应P(Partition Tolerance)分区容忍性:网络故障时系统仍能运作理解CAP与BASE理论是设计分布式系统的基石。实际应用中需要:明确业务优先级合理选择一致性级别设计有效的补偿机制建立完善的监控体系随着分布式技术的发展,新的理论如PBS(概率有界过时)正在兴起,但CAP与BASE仍然是构建可靠分布式系统的核心指导思想。

yyueshen的专栏 954

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【分布式系统三大核心难题:BASE理论、分布式事务与接口幂等性实战解析】

电商系统是典型的分布式系统,涉及用户管理商品管理订单处理库存管理支付系统等多个微服务。在高并发场景下,如何保证系统的一致性、可用性和性能是架构设计的核心挑战。BASE理论为分布式系统提供了一种柔性设计思路,通过基本可用、软状态和最终一致性三大要素,在保证系统可用的前提下实现数据一致性。分布式事务解决方案各有适用场景,2PC适用于强一致性需求,TCC和Saga适用于柔性事务,基于消息的方案适合高并发场景。接口幂等性。

m0_64006292的博客 1123

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

架构视角下的分布式事务(一):核心理论与强一致性方案

本文系统介绍了微服务架构下的分布式事务解决方案。首先阐述了分布式事务的定义、产生背景和核心难点,分析了跨库、跨服务等典型应用场景。然后基于CAP理论,将分布式事务分为强一致性(CP)和最终一致性(AP)两大流派。详细讲解了2PC协议的实现流程及其同步阻塞、单点故障等核心缺陷,并简要提及3PC的改进思路。最后总结了不同场景下的技术选型建议,为分布式系统设计提供参考。

love___me的博客 1569

Java最全Java 并发编程:核心理论,java面试分布式事务

最后,附一张自己面试前准备的脑图:面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典Step3:刷题既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。以下是我私藏的面试题库:很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应

2401_84584854的博客 977

ShardingSphere分库分表核心原理精讲第四节 分布式事务理论、数据脱敏和编排治理

09 分布式事务:如何使用强一致性事务与柔性事务? 你好,欢迎进入第 09 课时的学习。今天,我们将介绍一个分布式环境下的重要主题,即分布式事务。在介绍 ShardingSphere 中的具体应用方式之前,我们有必要对分布式事务的基本概念做简要介绍。 如何理解分布式事务? 在传统的关系型数据库中,事务是一个标准组件,几乎所有成熟的关系型数据库都提供了对本地事务的原生支持。本地事务提供了 ACID 事务特性。基于本地事务,为了保证数据的一致性,我们先开启一个事务后,才可以执行数据操作,最后提交或回滚就可以了

fegus的博客 826

分布式事务基础理论和解决方案解析

什么是事务? 事务可以看成是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 (比如一次交易看成是一次大的活动,里面包含两个小的活动:交钱、交货。此时不能只交钱、也不能只交货) 什么是本地事务? 本地事务指的是数据库和应用在同一台服务器上,此时我们通常借助数据库本身提供的ACID四大事务特性来解决事务。 什么是分布式事务? 随着互联网的发展,软件系统由原来的单体应用转变为分布式应用。如下图所示的阶段演变: 分布式事务是指在分布式系统下,多个服务之间通过网络远程调用来完成一个事务。

cjh的博客 1054

分布式事务的概述及其解决方案

分布式理论以及解决方案实战

一起交流,一起进步 1051

分布式事务以及背后的思考CAP理论和BASE理论

分布式事务 在单机数据库中,我们很容易能够实现一套满足ACID特性的事务处理系统,在在分布式数据库中,数据分散在各台不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑。 分布式事务是指事务的参与者、支持事务的机器、资源服务器以及事务管理器分别位于分布式系统的不同节点上,通常一个分布式事务中会涉及对多个数据源或业务系统的操作。 可以想象一下典型的分布式事务场景: 例子:一个跨银行的转账操作设计调用两个异地的银行服务,其中一个是本地银行提供的取款服务,另一个则是目标银行提供的存款服务,这两个

crossroads10的博客 294

seata-理论基础

seaga-理论基础

程序员码小跳 5060

【微服务架构】SpringCloud Alibaba(九):Seata使用和源码分析(数据库事务ACID、分布式事务典型场景、基础理论、协议)

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 4万+

分布式事务

1、什么是事务 介绍分布式事务之前,先介绍什么是事务。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。 简单地说,事务提供一种“ 要么什么都不做,要么做全套(All or Nothing)”机制。 数据库事务的ACID属性 事务是基于数据进行操作...

hxyascx的博客 459

分布式事务 Seata 教程 - 分布式事务之CAP、BASE理论

在设计分布式事务时,开发者需要根据具体的应用场景来权衡 CAP 定律中的三个属性。在大多数情况下,选择最终一致性(BASE 理论)是一种常见的做法,因为它允许系统在面对网络分区等挑战时保持可用性,并在适当的时候达到一致性。Seata 通过 AT 模式和 XA 模式提供了不同的策略来处理分布式事务,以适应不同的业务需求。

qq_33240556的博客 618
上一篇: Mac本地部署Rancher和Kubernetes
下一篇: Sharding-JDBC多数据源动态切换
鲫鱼哥
博客等级 码龄10年 18粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值