美文网首页
分布式锁及分布式事务

分布式锁及分布式事务

作者: 城市里永远的学习者 | 来源:发表于2018-12-24 12:36 被阅读0次

    分布式锁是解决并发时资源争抢的问题,分布式事务和本地事务是解决流程化提交问题。
    一、其中分布式锁实现:
    1.基于数据库锁实现,悲观锁和乐观锁
    悲观锁就是采用行锁,for update ,属于排他锁,其他任何写操作都要等当前操作完成,性能差,并发上来都要等操作完成,需要设置setAutoCommit
    乐观锁就是通过添加版本号,在update 时比较版本号方式更新 比如version,不被阻塞;
    2.基于redis实现
    setnx(key,expire),get(key),getset(key,newexpire)实现完整的分布式锁,并且可以通过注解来加锁
    3.基于zookeeper
    实际是基于paoxy
    二、分布式事务实现
    原则:优先使用本地事务,将操作优先在一个本地事务中完成,无法使用本地事务的采用分布式事务
    1.全局事务(DTP模型),基于2PC、3PC(两段和三段提交)实现,但由于同步阻塞,处理效率低,不适合大型网站分布式场景
    原则:ACID,刚性事务
    2pc:一阶段预提交,二阶段提交,都成功情况才会成功
    2.柔性事务
    原则:基本可用,最终一致,即BASE理论
    关于柔性事务,最主要的有以下三种类型:异步确保型、补偿型、最大努力通知型
    幂等性:参数列表对比,是否重复请求
    可补偿:保证原子性
    TCC操作:TCC位于业务服务层而非资源层
    TCC没有单独的准备(Prepare)阶段,Try操作兼备资源操作与准备能力 Try操作可以灵活选择业务资源的锁定粒度(以业务定粒度)
    TCC有较高开发成本

    相关文章

      网友评论

          本文标题:分布式锁及分布式事务

          本文链接:https://www.haomeiwen.com/subject/zeuakqtx.html