黑马点评04集群下的并发安全

实战篇-08.优惠券秒杀-集群下的线程并发安全问题_哔哩哔哩_bilibili

为了应对高并发,需要把项目部署到多个机器构成集群,所以需要配置nginx。

 

1.如何模拟集群

通过idea的ctrl + d修改配置,实现多个tomcat运行模拟集群

然后在nginx上配置节点,8080/api 会代理到backend,然后backend配置了各个节点的信息(upstream)

实现轮询节点达到负载均衡。

2.集群引出了新的并发问题

前文在单节点情况下实现了并发安全,但是如果一个用户发两个秒杀请求,分别被nginx分配到两个节点上,那么你一个节点上的用户锁(以用户id作为监视器),不能在不同的节点上生效,这样还是锁不住同一用户的多个秒杀行为,然后还是不能保证一人一单。所以就需要分布式锁。

原因:

        前文的intern()函数为什么呢即使你new了只要内容相同就会返回相同的地址呢?因为他会从字符串常量池里去找这个字符串的地址,无论你来几次,返回的都是常量池里那个字符串的地址,所以是一样的。不管你哪个线程都是在一个tomcat上运行的,只有一个jvm就只有一个常量池。

        而集群部署的时候,不同服务器有自己的tomcat,那么每个服务器都有独立的jvm,所以常量池也不一样。所以无法保证intern()返回值相同,也就无法保证两个服务器上的锁监视器是同一个,也就锁不住同一个用户。

只能保证一个jvm内部锁住同一个用户,不能保证所有的jvm都锁住一个用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277429.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【产品经理】产品专业化提升路径

产品专业化就是上山寻路,梳理一套作为产品经理的工作方法。本文作者从设计方法、三基座、专业强化、优秀产品拆解、零代码这五个方面,对产品经理的产品专业化进行了总结归纳,一起来看一下吧。 产品专业化就是上山寻路,梳理一套作为…

MySQL——表的约束

目录 一.表的约束 二.空属性 ​编辑三.默认值 四.列描述 五.主键 1.主键 2.符合主键 六.自增长 七.唯一键 八.外键 一.表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性&…

linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行

sed系列文章 linux常用命令(9):sed命令(编辑/替换/删除文本)linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行linux sed批量修改替换文件中的内容/sed特殊字符 文章目录 sed系列文章一、sed删除1.1、sed删除某一行内容/删除最后一行1.2、sed删除多行…

Maven进阶篇超详细笔记

Maven进阶篇详细笔记,源码可见下载链接 大家阅读时可善用目录功能,可以提高大家的阅读效率 下载地址:Maven笔记项目源码 分模块开发 分模块开发的意义 将原始模块查分成若干个子模块,方便模块间的相互调用,接口共享 …

EasyExcel读取Excel数据(含多种方式)

目录 EasyExcel简介 使用EasyExcel进行读数据 引入依赖: EasyExcel提供了两种读取模式 使用 监听器 读取模式 1.创建一个实体类 2.创建监听器 代码 使用 同步读 读取模式 1.创建一个实体类 2.代码 添加导入数据库的逻辑 其实官方文档讲得很清楚&#xff…

为什么需要Bootloader

目录 一、Bootloader简介二、所需知识点一、Bootloader简介 Bootloader,又称为引导程序,对操作系统非常重要,是计算机和汽车控制器的一个关键组成部分。然而,因为它往往在后台发挥作用,它经常被忽视。其主要用于软件更新。但ECU的软件更新方式有很多,比如通过JTAG调试更…

C++_构造函数与析构函数

目录 1、构造函数的写法 1.2 构造函数优化写法 2、默认构造函数与默认成员函数 2.1 默认成员函数对不同类型的处理 3、对内置类型的补丁 4、析构函数 4.1 析构函数的写法 5、默认析构函数 6、初始化列表 6.1 初始化列表的写法 6.2 初始化列表的作用 6.3 回顾与总结 …

SpringBoot基础使用及对其他项目进行整合

目录 一、简介 1-讲述 2-特点 二、创建配置 1.创建 2.配置 3.代码生成 三、项目整合 每篇一获 一、简介 1-讲述 众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称…

深入了解空号检测API:提升通信效率的关键

引言 随着通信技术的不断发展,人们对于通信效率的要求也越来越高。在通信过程中,空号检测是一个非常重要的环节,它可以帮助我们避免无效的通信,提高通信效率。而空号检测API则是实现空号检测功能的重要工具。 空号检测API 空号…

人工智能多模态:看、听、说,智能感知的全方位融合

导言 人工智能多模态技术是指通过整合视觉、听觉、语言等多个感知模态的信息,实现对丰富、多样化数据的理解与处理。本文将深入研究人工智能多模态的技术原理、应用场景以及对未来感知智能的影响。 1. 简介 人工智能多模态技术通过整合多个感知模态的信息&#xff…

安恒明御安全网关 aaa_local_web_preview文件上传漏洞复现

0x01 产品简介 明御安全网关秉持安全可视、简单有效的理念,以资产为视角,构建全流程防御的下一代安全防护体系,并融合传统防火墙、入侵检测、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。 0x02 漏洞概述 明御安全网关在…

【信息学奥赛】拼在起跑线上,想入道就别落下自己!

编程无难事,只怕有心人,学就是了! 文章目录 1 信息学奥赛简介2 信息学竞赛的经验回顾3 优秀参考图书推荐《信息学奥赛一本通关》4 高质量技术圈开放 1 信息学奥赛简介 信息学奥赛,作为全国中学生学科奥林匹克“五大学科竞赛”之一…