kiboroy's blog

Mzone


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索

分布式锁全面总结(附Redisson源码解析)

发表于 2020-10-10

随着企业软件开发中微服务化不断发展,应用分布式部署如今已是家常便饭,而分布式锁更是个老生常谈的技术话题。笔者发现,目前网上关于分布式锁的文章都不够全面。真实生产环境实现分布式锁是有很多重要的细节点。笔者,参考了一系列文章以及公司本身的生产实践,阐述了分布式锁的实际应用中的要点(包含理论分析与代码实现)。

1、什么是分布式锁?为什么要用分布式锁?

  • 服务分布式部署之后,多个实例(Java进程)争抢共享资源(往往这种情况都是非幂等的操作),需要加锁控制,保证同一时间只有一个客户端对共享资源进行操作,保证数据一致。例如,商品秒杀时,没有正确对商品数量加锁进行并发控制的话,可能出现商品超卖。

  • 实现分布式锁需要同时满足四个条件:

    • 互斥,同一时刻只能有一个客户端获取到锁。
    • 不会发生死锁,一个客户端异常导致没有释放锁,其他客户端也要能获取到锁。
    • 解铃还须系铃人,加锁解锁必须是同一客户端,不能误解了别的客户端加的锁。
    • 具有容错性,大多数redis节点正常运行,客户端就能获取锁和解锁。
      阅读全文 »

判断两个日期间差多少个工作日(包含法定假日调休)及某一天是否为工作日(附python代码)

发表于 2019-05-07

项目中账单每月扣款要考虑到工作日和休息日,故需要判断某一天是否为工作日或休息日,以及两个出账日之间的工作日间隔。
而每年假日办公布的假期是会变化的,通过下面的代码可以灵活获取每年的工作日休息日情况,可以直接使用,或者将数据存入各类数据库以供查询。

阅读全文 »

2 日志
2 标签
© 2017 — 2021 kiboroy
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4