当前位置: 首页 > wzjs >正文

网站提升流量网页设计网站开发教程

网站提升流量,网页设计网站开发教程,怎样在内网建设一个网站,推广网站的文案基于setnx实现的分布式锁存在下面的问题: 不可重入问题:同一个线程无法获取同一把锁 可重入就是指同一个线程可以多次获取同一把锁。 举例说明: 方法a调用方法b,在方法a重要先获取锁,然后执行业务,去调…

基于setnx实现的分布式锁存在下面的问题:

  • 不可重入问题:同一个线程无法获取同一把锁

可重入就是指同一个线程可以多次获取同一把锁。

举例说明:

方法a调用方法b,在方法a重要先获取锁,然后执行业务,去调用方法b,然后方法b也需要获取同一把锁,在这种情况下,如果锁是不可重入的,方法a中获取锁之后,方法b就无法获取锁,只能等待方法a中锁的释放,但锁无法释放,因为方法a的业务没有完成,于是就会出现死锁的情况。

在这种场景下,我们要求的锁是可重入锁。

  • 不可重试问题:获取锁只尝试一次就返回false,没有重试机制。

在许多业务中,不能说获取锁失败后直接返回,不去重试,如果获取锁失败,等待一段时间后再去重试,如果成功了,在去执行业务。

在大多数业务中要求的锁是可重试的锁。

  • 超时释放问题:锁超时释放虽然是可以避免死锁,但如果是业务执行耗时较长,也会导致锁释放,存在安全隐患。

  • 主从一致性问题:如果redis提供了主从集群,主从同步存在延迟,当主宕机时,如果从并未同步主从的锁数据,则会出现并发安全问题

拓展知识:主从模式可以理解为读写模式,写操作在主节点上执行,读操作在从节点上执行,主从数据会去进行同步,保证主从之间的数据是一致的,提高整个服务的并发能力和高可用性,如果主节点宕机,我们还可以从节点中选出一个作为新的主节点,增强了集群的可用性。

但是主从之间的数据同步是有延迟的,所以在极端情况下,可能会发生:

在高并发多线程场景中,其中一个线程在主节点中获取了锁,获取锁是写操作,在主节点完成,倘若在主节点尚未同步给从节点时,主节点服务宕机,此时会去选择一个新的从节点作为主节点,但主节点并未数据同步,从节点上并没有锁的标识,即:这时其他线程就可以趁虚而入,拿到锁,执行业务。就会出现并发同步问题,因为不止一个线程才能拿到锁。

这种情况概率较低,因为主从之间的数据同步中的延迟较低,往往是在毫秒级别或者更低。

以上的四个问题,要么发生概率极低,要么就是不一定有这样的需求。

这些都是功能上的拓展,并不是说必须实现。

但如果业务中有要求,那么就必须要实现,但是这些问题解决方案十分复杂,不建议自己定义去实现,可以尝试寻找前辈留下的方法。

Redisson

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。他不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包括各种分布式锁的实现。

Redisson是一个在redis基础上实现的一个分布式工具的集合,在分布式系统下用到的绝大多数工具都在其中,包括分布式锁

image-20250609131011278

官方文档:Redisson

关于分布式锁文档:锁和同步器 - Redisson 参考指南

Redisson入门

1.引入依赖:

 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.49.0</version></dependency>

2.配置Redisson客户端

有两种方式:

  • 利用Java配置方式实现:

     @Configurationpublic class RedisConfig {@Beanpublic RedissonClient  redissonClient() {//配置类Config config = new Config();//添加REdis地址,这里添加了单点的地址,也可以使用config.userClusterServers()添加集群地址config.useSingleServer().setAddress("redis://127.0.0.1:6379");//创建客户端return Redisson.create(config);}}

  • 利用配置文件和springboot去整合实现。springboot官方也提供了一个关于REdisson的起步依赖

但是这种方式不推荐使用,因为会去替代spring官方提供的对于redis的配置与实现。因此建议使用第一种方案。

3.使用Redisson的分布式锁

 @Configurationpublic class RedisConfig {@Beanpublic RedissonClient  redissonClient() {//配置类Config config = new Config();//添加REdis地址,这里添加了单点的地址,也可以使用config.userClusterServers()添加集群地址config.useSingleServer().setAddress("redis://127.0.0.1:6379");//创建客户端return Redisson.create(config);}}

案例展示:

 private final RedissonClient redissonClient;...//创建锁对象,锁的范围缩小到每个用户,避免锁的粒度太大,提升并发效率RLock lock = redissonClient.getLock("lock:order:" + userId);​//获取锁,参数waitTime默认值为-1,代表不等待获取锁失败则立即返回,不重试。 leaseTime参数为锁自动释放时间,默认值为30s,boolean isLock = lock.tryLock();//判断是否获取锁成功if (!isLock) {//获取锁失败,返回错误或者重试return Result.fail("不允许重复下单");}//利用实现类自调用,防止事务自调用问题//第二种方法:创建代理对象,利用代理对象调用方法,防止事务自调用问题try {IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy();return proxy.createVoucherOrder(voucherId, seckillVoucher);}finally {//释放锁lock.unlock();}

进行测试,添加订单成功。

现在利用Jmeter进行并发测试:

image-20250609155507740

显示只有一个线程成功。

检查数据库:

image-20250609155558806

测试成功,没有并发安全问题。

以上就是Redisson的快速入门。

希望对大家有所帮助


文章转载自:

http://9SSCzqvW.Ltzkk.cn
http://9xYsOnip.Ltzkk.cn
http://FK9Pe7lb.Ltzkk.cn
http://Ujkzu3kV.Ltzkk.cn
http://kUkbl0nC.Ltzkk.cn
http://LNSmWDYL.Ltzkk.cn
http://P9WQQqbe.Ltzkk.cn
http://hvUM0hGh.Ltzkk.cn
http://4QiMPy5f.Ltzkk.cn
http://eZVNvzTs.Ltzkk.cn
http://eh3MN61s.Ltzkk.cn
http://qDd4ZzUE.Ltzkk.cn
http://mfU2qflh.Ltzkk.cn
http://r8LvAPwo.Ltzkk.cn
http://HIaV6PpK.Ltzkk.cn
http://9ssg25RW.Ltzkk.cn
http://YlzQ0foc.Ltzkk.cn
http://JkW4sr3M.Ltzkk.cn
http://AQX1hZye.Ltzkk.cn
http://d0so29Xq.Ltzkk.cn
http://GGElmURt.Ltzkk.cn
http://j5xtFPUA.Ltzkk.cn
http://YsveH2FI.Ltzkk.cn
http://BtO7jIZ0.Ltzkk.cn
http://QLDuQHiq.Ltzkk.cn
http://dc3RxoGP.Ltzkk.cn
http://PIt61ba4.Ltzkk.cn
http://Kwbtca6l.Ltzkk.cn
http://r60Ok6FC.Ltzkk.cn
http://bP2XrOuz.Ltzkk.cn
http://www.dtcms.com/wzjs/771255.html

相关文章:

  • 备案域名租用英文seo如何优化
  • 百度seo整站优化公司韩城做网站
  • 属于网站建设过程规划酷播wordpress视频插件
  • 有哪些做短租的网站好宝安中心医院怎么样
  • 网站建设平台策划大图网 网站
  • 阿克苏网站建设优化linux下wordpress
  • 阿里云企业建站教程惠州网站建设哪家强
  • 东莞专业网站设计咨询上海骏域网站建设专家
  • 同安建设局网站wordpress图片存储
  • 做电影网站采集什么意思邢台学校网站建设费用
  • 男的和女的做那种短视频网站如何制作网站要钱吗
  • 网页设计与制作考试2020aso优化教程
  • 盐山做网站的wordpress固定
  • 网站推广基本方法是电子商务营销师
  • 化妆品网站建设的策划哈尔滨网页案例分析
  • 杭州比较好的软装设计公司seo搜索引擎优化公司
  • 金站网.营销型网站营销型网站内容
  • 郑州金水区做网站公司正规东莞网站建设
  • 网站建设捌金手指花总二六wordpress翻页按钮颜色
  • 专业网站运营托管百度快照怎么做
  • 好的app设计网站有哪些seo服务工程
  • wpsppt网站链接怎么做网站设计流程大致分为几个阶段
  • uc酷站中的美图网站网站超市源码
  • dw怎么做网站后台企业综合信息管理系统
  • 沈阳定制网站开发公司手机端网站设计
  • 进出口贸易网站制作门户网站指的是什么
  • 建设银行个人网银没有弹出网站商品展示类网站源码
  • 网站打不开怎么处理廊坊短视频优化
  • 设计素材网站会员电商网站模版
  • 网站建设廴金手指花总壹陆网站设计的工具