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

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

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

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 Java
分布式锁有哪些应用场景和实现?
电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。
834 0
|
微服务
微服务迁移模式之Martin Flower绞杀者模式
绞杀者模式(Strangler Pattern)是一种非常流行的从单体系统向微服务迁移的策略,其主张通过用新服务替换特定功能来将单体系统逐步转换为微服务,一旦新服务已经能够代替原有旧有功能,就将原有功能组件绞杀(即彻底停用)。
2944 1
微服务迁移模式之Martin Flower绞杀者模式
|
9月前
|
缓存 Java 编译器
|
开发工具 git 开发者
git IDEA的分支合并时的冲突问题总结,merge和rebase的区别
冲突的处理需要开发者之间的充分沟通以及对项目历史的细致理解。选择Merge或Rebase取决于具体的工作流程和团队偏好,但最重要的是保持代码库的整洁与一致性。使用IDEA等工具可以提高处理合并冲突的效率,但手动解析冲突和理解操作背后的逻辑仍然是不可或缺的。最终目标是通过有效的版本控制实践,促进项目的顺利进行和团队协作的高效。
1326 0
|
Java 开发者 Spring
springboot @RequiredArgsConstructor @Lazy解决循环依赖的原理
【5月更文挑战第16天】在Spring Boot中,@RequiredArgsConstructor 和 @Lazy 是两个有用的注解,它们分别用于简化构造函数的生成和控制Bean的加载时间。下面详细解析这两个注解的概念、优缺点以及在实际应用中的示例。
1914 1
|
SQL 缓存 关系型数据库
为什么强烈推荐你使用单表查询?(续篇)
为什么强烈推荐你使用单表查询?(续篇)
为什么强烈推荐你使用单表查询?(续篇)
|
Unix Linux
grep不区分大小写搜索
grep不区分大小写搜索
901 2
|
运维 NoSQL Java
【Redis】6、Redisson 分布式锁的简单使用(可重入、重试机制...)
【Redis】6、Redisson 分布式锁的简单使用(可重入、重试机制...)
1017 1
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
26485 66
图解一致性哈希算法,看这一篇就够了!
|
消息中间件
分布式事务解决方案之一:MQ异步确保事务
分布式事务解决方案之一:MQ异步确保事务