![](https://img-blog.csdnimg.cn/33dbd0e53fb74daa88b6de738a9b8917.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
分布式解决方案
文章平均质量分 82
分布式解决方案相关
欲无缘
Java后端开发 陆续分享后端分布式、中间件、 服务器运维、云原生、前端、移动开发、大数据等相关知识。
展开
-
seata分布式事务AT模式原理解析
本地事务提交前,先拿到该记录的全局锁,本地提交释放本地锁。本地事务提交前,尝试拿该记录的全局锁,tx1 全局提交前,该记录的全局锁被 tx1 持有,tx2 需要重试等待全局锁。RM写表的过程,Seata会拦截业务SQL,首先解析SQL语义,在业务数据被更新前,将其保存成before image,然后执行业务SQL,在业务数据更新之后,再将其保存成after image,最后生成行锁。分支的回滚会一直重试,直到 tx2 的全局锁等锁超时,放弃全局锁并回滚本地事务释放本地锁,tx1 的分支回滚最终成功。原创 2022-12-14 16:32:24 · 779 阅读 · 0 评论 -
SpringBoot整合nacos + seata实现分布式事务
创建一个名为seata-demo的springBoot父工程添加maven依赖。在seata-demo下新建一个名为stock-service的服务。在seata-demo工程下创建订单工程order-service。yml只需要修改服务端口号和服务名以及mysql连接数据库即可。在seata-demo服务下新建一个biz-service服务。pom文件与自启动类注解与order服务一致。yml需要修改端口号服务名与mysql数据库。使用Feign调用Order和Stock服务。原创 2022-12-14 15:02:32 · 1498 阅读 · 0 评论 -
全局异常处理导致seata分布式事务无法回滚问题
假设服务A调用服务B, 服务B发生异常,由于全局异常处理的存在(@ControllerAdvice), seata 无法拦截到B服务的异常,从而导致分布式事务未生效。微服务场景下,配置了统一全局异常处理,导致seata在AT模式下无法正常回滚问题。程序代码各自判断RPC响应码是否正常,再抛出异常。本篇文章使用AOP切面解决。RPC接口不配置全局异常。原创 2022-12-08 16:52:17 · 1858 阅读 · 0 评论 -
Linux安装最新版本seata-server1.5.2(详细教程)
这一步我们主要是修改seata的存储方式,我们选择Mysql数据库 找到store.db相关配置配置数据库连接信息 将store.file。将下载好得seata-server-15.2.zip上传到linux的指定目录/usr/local/softwore。修改application.yml配置文件,设置seata的配置为nacos,服务注册中心为nacos。修改seata/script/config-center下的config.txt文件配置。启动完成会注册到 nacos 中。登录nocas控制台。原创 2022-12-01 09:45:40 · 1746 阅读 · 0 评论 -
分布式事务基础(分布式事务协议&解决方案)
事务是由一条或多条操作数据库的SQL组成的一个不可分割的工作单元,这些操作要么全部执行成功,要么全部失败。随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。CAP原则又叫CAP定理,同时又被称作布鲁尔定理(Brewer’s theorem),指的是在一个分布式系统中,不可能同时满足以下三点。原创 2022-11-26 15:07:10 · 467 阅读 · 0 评论 -
分布式全局唯一 ID生成器(百度UidGenerator)
UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器。它是分布式的,并克服了雪花算法的并发限制。单个实例的QPS能超过6000000。需要的环境:JDK8+,MySQL(用于分配WorkerId)原创 2022-11-25 16:06:44 · 5447 阅读 · 0 评论 -
Mysql分库分表概念与实践(映射关系表&基因法以及扩容方案)
将一个库的数据拆分到多个相同的库中,访问的时候访问一个库把一个表的数据放到多个表中,操作对应的某个表就行本文主要描述了我们进行水平分库分表设计时的一些常见方案。我们在进行分库分表设计时,可以选择例如范围分表,Hash 分表,路由表,或者一致性 Hash 分表等各种方案。进行选择时需要充分考虑到后续的扩容可持续性,最大数据偏斜率等因素。原创 2022-11-24 17:04:55 · 1317 阅读 · 0 评论 -
分布式锁的三种实现方式Redis、Mysql、zookeeper/etcd(尚硅谷分布式锁配套资料)
在应用开发中,特别是web工程开发,通常都是并发编程,不是多进程就是多线程。这种场景下极易出现线程并发性安全问题,此时不得不使用锁来解决问题。在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下,如何保证不同进程、不同服务、不同机器的线程安全问题,jdk并没有给我们提供既有的解决方案。此时,我们就必须借助于相关技术手动实现了。目前主流的实现有以下方式原创 2022-11-17 12:56:23 · 939 阅读 · 0 评论