聊聊分布式
本专栏记录一些分布式相关的内容,如分布式锁,分布式事务,分布式id生成等相关技术与实现;
IT云清
技术专家,团队主管,Apache Seata Committer,公众号:java4all
展开
-
分布式系统理论基础 - 一致性、2PC和3PC
引言狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作。广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]:What is a distributed systeme. Distribution is in the eye of the beholder.To the user sitting at the keybo...转载 2020-04-09 19:37:08 · 490 阅读 · 0 评论 -
seata中事务隔离性与锁分析
1.官方说法官方的文章中,有这么一段话:全局事务的隔离性是建立在分支事务的本地隔离级别基础之上的。在数据库本地隔离级别 读已提交 或以上的前提下,Fescar 设计了由事务协调器维护的 全局写排他锁,来保证事务间的 写隔离,将全局事务默认定义在 读未提交 的隔离级别上。我们对隔离级别的共识是:微服务场景产生的分布式事务,绝大部分应用在 读已提交 的隔离级别下工作是没有问题的。而实际上,这...原创 2019-10-24 20:34:14 · 4821 阅读 · 6 评论 -
深入分析分布式系统中互斥性与幂等性问题
本文来源:tech.meituan.com前言随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较...转载 2019-06-05 08:00:00 · 620 阅读 · 0 评论 -
你真的了解ACID,BASE,CAP这些名词吗?
图片来源:pexels网站java4all原创,欢迎关注摘要:本文主要讲解ACID,BASE,CAP等相关理论知识,尤其对CAP理论做了非常详尽的分析。1.ACID特性数...原创 2019-06-04 08:00:00 · 414 阅读 · 0 评论 -
分布式事务-02:2PC 二阶段提交协议实现过程及原理
图片来源:pexels网站java4all原创,欢迎关注摘要:本文主要讲解分布式事务中二阶段提交协议(2pc)相关基础概念,原理及详细的执行过程。1.理论基础二阶段提交(...原创 2019-06-03 08:00:00 · 1967 阅读 · 0 评论 -
分布式事务-01:分布式事务产生原因及相关概念
图片来源:pixabay.comjava4all原创,欢迎关注摘要:本文主要介绍应用的架构演进,分布式事务产生的原因,以及分布式事务相关的概念。本文目录:架构演进分布式事...原创 2019-05-21 08:00:00 · 1976 阅读 · 0 评论 -
分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用
分布式跨库查询时,可以尝试使用federated引擎,来创建远程表的映射,方便查询。1.开启引擎查询数据库是否支持SHOW ENGINES;有,说明支持,但是没有开启,开启一下:配置文件添加:federated,如下:[mysqld]federated## Remove leading # and set to the amount of RAM for the most i...原创 2019-03-20 11:38:15 · 2314 阅读 · 4 评论 -
分布式事务系列--是选TCC还是SAGA
byteTCC框架,支持两种模式,一种是TCC模式,一种是SAGA模式,二者如何选择,是一个取舍问题,没有完美方案。1.TCC模式这种模式下,我们需要操作的目标字段,都要添加一个相关的冻结字段,try操作是操作冻结字段,cc操作时,将冻结的数值更新到目标字段。示例如下: <!--try逻辑--> <update id="increaseMoney"> ...原创 2019-03-15 14:05:25 · 10881 阅读 · 4 评论 -
分布式事务系列--SpringCloud整合byteTCC框架0.5.x版本2
6.tcc业务逻辑编写在使用tcc框架处理分布式事务时,需要我们自己来编写tcc业务代码。这里演示一个简单的加钱的操作。一个tcc操作,分为try,confirm,cancel三个操作。根据创建的company表,可以看到公司表有一个money金额字段,还有个frozen字段,在业务简单时,我们可以借助这个字段来实现tcc;如果业务复杂,修改多个字段时,我们可以不要这个字段,tcc的每一步,...原创 2019-02-22 14:51:55 · 2869 阅读 · 4 评论 -
分布式事务系列--SpringCloud整合byteTCC框架0.5.x版本1
这里详细记录下,SpringCloud框架整合byteTCC分布式事务框架的过程。版本信息1.SpringCloud2.SpringBoot3.byteTCC1.创建company-server项目创建一个SpringBoo web项目,先贴下完整的项目结构:2.引入byteTCC依赖SpringCloud其他依赖这里不做展示,仅展示byteTCC的依赖: <!--by...原创 2019-02-15 10:29:07 · 3212 阅读 · 5 评论 -
分布式事务系列--SpringCloud整合byteTCC框架0.4.x版本
本文详细记录下,SpringCloud框架整合byteTCC分布式事务框架的过程。这里只展示,一个是springboot项目,引入byteTCC必备的基础步骤,不包括tcc的业务逻辑过程。请优先确定项目使用的springboot和springcloud版本,然后选择对应的byteTCC版本进行整合,0.4.x和0.5.x整合差异较大。总体而言,spring boot 1.x得用0.4.x的版本,0...原创 2019-02-19 11:40:15 · 2611 阅读 · 0 评论 -
分布式锁系列--04关于分布式锁的选型分析02-Redlock的实现原理
上一文分布式锁系列–03关于分布式锁的选型分析01中,我们看到了单节点的redis分布式锁在failover时产生了无法解决的安全问题,因此,Redis的作者antirez提出了一种新的基于redis的分布式锁的算法Redlock,它基于N个完全独立的Redis节点(通常情况下N可以设置成5)。1.Redlock获取锁Redlock获取锁的原理如下:1.获取当前时间(毫秒数): t1。2....原创 2019-02-18 21:11:42 · 1931 阅读 · 2 评论 -
分布式锁系列--03关于分布式锁的选型分析01
本文分析,在分布式系统中,使用redis实现分布式锁,会遇到什么问题。关于分布式锁概念和redis分布式锁的具体实现,可参考前面的2篇文章。本文重点在于,对分布式锁技术选型的分析。1.redis锁单节点实现常规的,使用redis做分布式锁,主要实现如下:1.1加锁 /** * 加锁 * * @param lockName 锁名,对应被争用的共享资源 * @para...原创 2019-02-16 17:25:08 · 791 阅读 · 0 评论 -
分布式锁系列--02Redis实现分布式锁
本文讲述,如何使用redis来实现分布式锁。这种实现方式,满足了分布式锁系列–01分布式锁入门介绍一文中,分布式锁约束的前三条:互斥性,安全性,对称性。因为是单机版本,所有无法满足第四条。自己编码来实第四点,是比较麻烦的,后面会介绍如何使用开源的Redisson框架来实现分布式锁。实现原理有一个redis服务实例,在分布式系统中,所有需要获取锁的客户端,都需要访问这个redis实例:如果锁不...原创 2018-12-11 11:03:14 · 821 阅读 · 0 评论 -
分布式锁系列--01分布式锁入门介绍
本系列主要介绍分布式锁相关内容及实现。本文主要介绍以下内容:1.分布式锁是什么2.分布式锁约束3.分布式锁实现方式1.分布式锁是什么分布式锁,是控制分布式系统中访问共享资源的一种方式,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。在单机应用的时候,如果需要对某一个共...原创 2018-12-11 09:05:49 · 650 阅读 · 0 评论 -
Redission分布式锁加锁原理源码解析
1.获取锁这里是我们自己实现,调用redission的方法,获取锁,然后加锁。lock.lock(expireTime, timeUnit)是关键,我们追进去。 /** * 获取锁,如果没有主动调用unlock解锁,expireTime后会自动释放 * @param lockKey * @param expireTime 如果没有调用unlock解锁,ex...原创 2019-08-29 14:12:45 · 1900 阅读 · 0 评论 -
seata tcc模式下的一个性能问题
本文解释Seata中,AT模式和MT模式下的一个一阶段的区别。根据两阶段行为模式的不同,Seata将分支事务划分为2种:Automatic (Branch) Transaction ModeManual (Branch) Transaction Mode1.AT模式AT 模式基于 支持本地 ACID 事务 的 关系型数据库:一阶段 prepare 行为:在本地事务中,一并提交业务数...原创 2019-09-03 13:50:56 · 5702 阅读 · 3 评论 -
Seata 事务分组
Seata 事务分组:1.什么是事务分组?A:事务分组是 Seata 的资源逻辑,类似于服务实例。service { #vgroup->rgroup vgroup_mapping.fsp_tx_group = "default" #only support single node default.grouplist = "127.0.0.1:8091" #degra...原创 2019-09-11 16:26:28 · 5551 阅读 · 3 评论