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

广州网站建设 易企建站公司网页制作软件序列号

广州网站建设 易企建站公司,网页制作软件序列号,sql2008做查询网站,邢台百姓网免费发布信息查询什么是幂等性 幂等是一个数学上的概念,在软件行业里指的是多次相同的请求只会有一次修改,哪些情况下会导致幂等性问题呢? 消息队列,为了保证消息不丢失,会有重发机制,有重发就会有重复消费的问题&#xff1…

什么是幂等性

幂等是一个数学上的概念,在软件行业里指的是多次相同的请求只会有一次修改,哪些情况下会导致幂等性问题呢?

  1. 消息队列,为了保证消息不丢失,会有重发机制,有重发就会有重复消费的问题;
  2. 微服务,服务之间的调用会有失败的情况,也会有重发机制,
  3. 表单重复提交,前端的提交按钮在短时间内连续点击多次,就会有多个相同的请求同时打到后端;

解决方案

1、分布式锁 + 唯一索引

索引可以是全局的唯一uuid,也可以是一个自增唯一的数字,

  1. 在处理业务逻辑时进行上锁操作,
  2. 先在表中查询这个唯一索引是否已存在,若已存在则表示该请求已处理过,不需要再次处理,
  3. 若唯一索引不存在,则表示该请求未被处理过,进行处理,
  4. 处理完成后保存这个唯一索引到表中,证明这个请求是已被处理过的,
  5. 解锁

2、token机制(防止重复提交)

原理上通过session token来实现的(也可以通过redis来实现)。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。
下次客户端提交请求时,Token会随着表单一起提交到服务器端。

服务器端第一次验证相同过后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。

3、mysql 数据库的唯一索引

对于数据库插入类的场景,比如创建订单时,需要前端传入一个唯一的订单号,后端在存储这个订单号时肯定是加了唯一索引的,所以,在多次插入同一个订单时就会触发数据库的唯一约束异常;从而避免一次点击创建多次的问题。

4、redis set nx命令

redis的 set nx命令是保证了原子性的,只要有一个客户set key成功了之后,其他的客户端就不能在set这个key了,set nx可以解决mq的重复消费问题,在接收到mq的消息时,把这个消息通过set nx写入到redis里面,一旦这个消息被消费过,就不会被再次消费

5、状态机

状态机可以理解为是一个流程引擎,因为状态机的状态只会向前变更,所以,多次修改同一条数据的时候,一旦状态发生了改变,那么对这条数据修改造成的影响只会发生一次,这就是状态机的特性;

6、去重表

跟第一个(分布式锁 + 唯一索引)的方式类似,将已处理过的请求存储到一个表中,下次在处理时先查询这个表,判断是否已经处理过,若已经处理过,则不在处理

7、乐观锁

乐观锁——乐观锁只是在更新数据那一刻锁表,其他时间不锁表,所以相对于悲观锁,效率更高。乐观锁的实现方式多种多样可以通过version或者其他状态条件。

http://www.dtcms.com/a/503639.html

相关文章:

  • 斯坦福大学 | CS336 | 从零开始构建语言模型 | Spring 2025 | 笔记 | Lecture 5: GPUs
  • 做淘宝需要的网站手机网站建设平台
  • 密码学和分布式账本
  • Web后端登录认证(会话技术)
  • 网络安全 | SSL/TLS 证书文件格式详解:PEM、CRT、CER、DER、PKI、PKCS12
  • uploads-labs靶场通关(2)
  • wordpress 企业建站小程序模板源码免费
  • Linux中页表缓存初始化pgtable_cache_init函数的实现
  • 量子计算机会普及个人使用吗?
  • 嵌入式入门:APP+BSP+HAL 三层分级架构浅析
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 19--测试框架Pytest基础 3--前后置操作应用
  • 面试面试面试
  • 北京响应式的网站下载了模板如何做网站
  • 中山企业营销型网站制作wordpress亲你迷路了
  • 个人做电影网站有什么风险南山最专业的网站建设
  • 「用Python来学微积分」4. 极坐标方程与参数方程
  • 第六章 路由基础
  • P1049 装箱问题 题解(四种方法)附DP和DFS的对比
  • Windows下Vscode连接到WSL的方法
  • R语言系列入门教程:什么是R语言?与传统编程语言有什么区别?
  • 商务网站建设的主流程网页设计排版作品分析
  • Altium Designer(AD24)原理图菜单栏详细介绍
  • 【JavaWeb学习】关于mysql-connector-j版本过高引起的问题
  • Eudemon1000E-F_V600R024C00SPC100
  • 建设工程资质录入是在那个网站机械类网站模板
  • 手机网站建站用哪个软件好字体样式 网站
  • ESMO中国之声丨徐兵河教授:芦康沙妥珠单抗再奏ADC中国之声,HR阳性HER2阴性晚期乳腺癌迎来CDK4/6抑制剂治疗后新希望
  • 模板网站禁止右键wordpress描述代码
  • pyhton(大厂笔试/面试)最长子序列(哈希-回溯-中等)含源码(二十三)
  • 做淘宝浏览单的网站菏泽外贸网站建设公司