码迷,mamicode.com
首页 > 其他好文 > 详细

基于Redis的分布式资源锁

时间:2018-06-26 12:24:12      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:客户   别人   nbsp   代码实现   details   双11   负载均衡算法   log   zook   

随着双11,春运抢票这种业务的存在,分布式高并发成为了技术人员必须要面对的问题,那么如果保证数据的准确性呢?一般主流的方式就是加锁。

 

分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。

 

首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:

  1. 互斥性。在任意时刻,只有一个客户端能持有锁。
  2. 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。
  3. 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。
  4. 解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。

 

具体的代码实现请看这篇详细的文章:

http://www.cnblogs.com/0201zcr/p/5942748.html

 

推荐一篇电商秒杀的架构思路,这位作者写的太好了:

https://blog.csdn.net/bigtree_3721/article/details/72760538

 

秒杀架构划重点:

(1)将秒杀系统单独部署,甚至使用独立域名,防止秒杀系统崩溃影响正常业务

(2)页面内容静态化,读多写少的接口做好缓存

(3)将下单页面的Url作为随机数,在秒杀开始的时候才能得到

(4)前端控制请求发送

(5)采用最少连接的负载均衡算法

(6)拍下减库存比付款减库存用户体验更好一些

(7)数据库采用乐观锁(采用带版本号更新)

基于Redis的分布式资源锁

标签:客户   别人   nbsp   代码实现   details   双11   负载均衡算法   log   zook   

原文地址:https://www.cnblogs.com/pzyin/p/9228230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!