分布式锁-----秒杀系统

简介: 分布式锁-----秒杀系统

分布式锁-----秒杀系统

1.ZK

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.apache.curator.retry.ExponentialBackoffRetry;
public class TestZK {
  //定义共享资源
  private static int NUMBER = 10;
  private static void getNumber(){
    System.out.println("*********业务方法开始*********");
    System.out.println("当前值:"+NUMBER);
    NUMBER--;
    try {
      Thread.sleep(2000);
    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    System.out.println("*********业务方法结束*********");
  }
  public static void main(String[] args) {
    //定义retrypolicy 重试策略
    RetryPolicy policy = new ExponentialBackoffRetry(1000,   //等待的时间
                                                 10);//重试的测试
    //定义ZK的客户端
    CuratorFramework client = CuratorFrameworkFactory.builder()
                          .connectString("192.168.56.111:2181")
                          .retryPolicy(policy)
                          .build();
    client.start();
    //定义锁
    final InterProcessMutex lock = new InterProcessMutex(client,"/mylock");
    for(int i=0;i<10;i++){
      new Thread(new Runnable() {
        public void run() {
          try {
            //请求锁
            lock.acquire();
            // 访问业务方法
            getNumber();            
          } catch (Exception e) {
            e.printStackTrace();
          }finally{
            try {
              lock.release();
            } catch (Exception e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
        }
      }).start();
    }
  }
}

 

2.Redis


相关文章
|
缓存 NoSQL Redis
Redis高并发场景下秒杀超卖解决
Redis高并发场景下秒杀超卖解决
409 0
|
缓存 NoSQL 关系型数据库
面试必问:Redis 如何实现库存扣减操作?
面试必问:Redis 如何实现库存扣减操作?
1394 7
面试必问:Redis 如何实现库存扣减操作?
|
NoSQL druid Java
在Redis中秒杀场景下超时与超卖问题的解决方案
在Redis中秒杀场景下超时与超卖问题的解决方案
600 0
|
3月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
5月前
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
126 0
|
6月前
|
SQL 缓存 关系型数据库
秒杀系统之一致性
秒杀系统之一致性
97 0
|
6月前
|
NoSQL Java 数据库
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
308 0
|
6月前
|
NoSQL 算法 Java
【Redis】4、全局唯一 ID生成、单机(非分布式)情况下的秒杀和一人一单
【Redis】4、全局唯一 ID生成、单机(非分布式)情况下的秒杀和一人一单
214 0
|
6月前
|
NoSQL 安全 Redis
解决秒杀系统库存超卖问题:乐观锁与Redis分布式锁的应用
解决秒杀系统库存超卖问题:乐观锁与Redis分布式锁的应用
1891 0
|
消息中间件 缓存 NoSQL
谷粒商城----缓存与分布式锁
谷粒商城----缓存与分布式锁