当前位置: 首页 > 知识库问答 >
问题:

Java并发计数器体系结构设计

甄鹏云
2023-03-14

具有以下商业案例:

电子邮件促销活动表示,第一个点击链接的1_000_000用户将获得奖金。用户在访问网页时会立即看到奖金或“对不起”消息

问题:如何设计此解决方案?

  • 选项1:独石。原子整数。CAS问题可以在这里发生吗?或者1_000_000不是在这种情况下引起问题的金额吗?能做到这一点的数字是多少

共有1个答案

施晗日
2023-03-14

>

MySql:有一个名为“选择更新”的功能,可以帮助你实现你想要的。每当有人点击链接时,你都要在MySql中选择更新,看看奖金是否仍然可用。如果是,则在同一事务中在DB中进行更新。同时,所有其他并行读写将被阻止。因此,您可以进行端到端的完全原子操作。

Redis不会工作,因为即使INCR是原子的,从Redis读取值、执行业务逻辑和更新Redis中的值的整个流程也不会是原子的。E、 g.假设Redis中的用户数为999\u 999,2个用户同时点击链接。应用程序检查计数,它低于阈值1\u 000\u 000,这意味着两个用户都有资格享受折扣,您最终都会给两个用户提供折扣。

 类似资料:
  • 问题内容: 设想 我正在建立一个包含一系列不同表的数据库。这些由COMMENTS表,BLOGS表和ARTICLES表组成。我希望能够向每个表中添加新项目,并使用0到5个标签对其进行标记,以帮助用户更轻松地搜索相关的特定信息。 有关建筑的初步想法 我最初的想法是拥有一个集中的TAGS表。该表将使用TagID字段和TagName字段列出所有可用标签。由于每个项目可以有很多标签,并且每个标签可以有很多项

  • 我想学习使用英特尔的Haswell CPU微架构的并行编程。关于在ASM/C/C++/(任何其他langs)中使用SIMD:SSE4.2,AVX2?。你能推荐书籍,教程,网络资源,课程吗?

  • 这就是我需要在Java中实现它的问题: 汽车可以是汽油车或柴油车,混合动力汽车可以插上汽油或柴油,但不能同时插上汽油和柴油。此外,混合动力汽车能够在完全不使用汽油或柴油的情况下依靠电力运行,并且仅在运行时决定是否选择电力或其他燃料来源(汽油或柴油,视情况而定)。 在这里,我需要牢记OOP概念来实现,例如,当应该调用汽油类型的汽油模式混合动力汽车方法时,以及如果应该调用其柴油机类运行方法时。 我对O

  • 本章主要内容 设计无锁并发数据结构 无锁结构中内存管理技术 对无锁数据结构设计的简单指导 上一章中,我们了解了在设计并发数据结构时会遇到的问题,根据指导意见指引,确定设计的安全性。对一些通用数据结构进行检查,并查看使用互斥锁对共享数据进行保护的实现例子。第一组例子就是使用单个互斥量来保护整个数据结构,但之后的例子就会使用多个锁来保护数据结构的不同部分,并且允许对数据结构进行更高级别的并发访问。 互

  • 多任务 在上古时代,CPU 资源十分昂贵,如果让 CPU 只能运行一个程序,那么当 CPU 空闲下来(例如等待 I/O 时),CPU 就空闲下来了。为了让 CPU 得到更好的利用,人们编写了一个监控程序,如果发现某个程序暂时无须使用 CPU 时,监控程序就把另外的正在等待 CPU 资源的程序启动起来,以充分利用 CPU 资源。这种方法被称为 多道程序(Multiprogramming)。 对于多道

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表