消息队列+更新DB极易引发的DB并发修改bug

背景

我们在生产系统中和其他系统进行交互时一般都会通过消息队列来解耦生产者和消费者,然后通过每个使用方消费消息队列的消息的方式来完成消息的消费,并且一般来说我们消费消息后极有可能会操作DB,不过这种方式如果处理不够仔细,很容易发生DB并发更新导致的数据覆盖

问题复现

在这里插入图片描述

解决方案:

1.对于DB的同一条记录的操作需要有先后顺序,这就要求对于同一个mid的消息消费要串行,而不能并行,所以这就要求生产者发送消息到消息队列时需要按照mid进行partition分区,这样同一个mid只会在一个分区中,而kafka的消息消费是分区有序的,这个问题就可以解决掉了

2.对于DB的并发更新使用加乐观锁(版本号)或者悲观锁的方式来达到串行更新DB记录的效果

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[攻防世界]-Web:fileclude解析

查看网页 代码审计: file_get_contents($file2):读取文件内容并将内容返回 解法一payload: ?file1php://filter/readconvert.base64-encode/resourceflag.php&file2data://text/plain,hello%20ctf 解法二payload:

AI新工具(20240229) Ideogram 1.0先进的文本转图像模型发布;search2ai让 LLM API 支持联网搜索

1: LTX Studio LTX Studio开放测试,用户可以通过输入文本来生成超过25秒的微电影视频 LTX Studio是由著名AI平台Lightricks推出的生成式AI电影制作平台。用户可以通过输入文本来生成超过25秒的微电影视频,并且可以对视频的镜头切换、角色、场景一致性、…

C++的晨曦之旅:开启编程的新篇章

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 一、 命名空间 在 C/C 中,变量、函数和后面要学到的类都是大量存在的&#xff0…

继电保护测试仪

武汉凯迪正大继电保护测试仪主要特点 1.满足现场试验要求。本仪器具有标准的四相电压,三相电流输出,既可对传统的各种继电器及保护装置进行试验,也可对现代各种微机保护进行各种试验,特别是对变压器差功保护和备自投装…

南方电网的能源棋局上,蔚来换电扮演什么角色?

2 月 26 日,南网储能科技与蔚来能源签署协议,将充换电站、储能站、可调负载等聚合资源连接到虚拟电厂平台,推动换电站作为分布式储能在虚拟电厂项目上的应用。 蔚来换电站是国内首个智慧微电网型分布式换电设施,可透过换电订单预…

【递归搜索回溯专栏】前言与本专栏介绍

本专栏内容为:递归,搜索与回溯算法专栏。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:递归搜索回溯专栏 🚚代码仓库:小小unicorn的代…

【YOLO v5 v7 v8 小目标改进】ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统动态卷积

ODConv:在卷积核所有维度(数量、空间、输入、输出)上应用注意力机制来优化传统的动态卷积 提出背景传统动态卷积全维动态卷积效果 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 论文:https://openreview.net/pdf?idDmpCfq6Mg…

LeetCode54题:螺旋矩阵(python3)

路径的长度即为矩阵中的元素数量,当路径的长度达到矩阵中的元素数量时即为完整路径,将该路径返回。 循环打印: “从左向右、从上向下、从右向左、从下向上” 四个方向循环打印。 class Solution:def spiralOrder(self, matrix: List[List[i…

计算机网络_2.2物理层下面的传输媒体

2.2物理层下面的传输媒体 一、传输媒体的分类二、导向型传输媒体1、同轴电缆2、双绞线3、光纤(1)光纤通信原理(2)光纤组成(4)多模光纤与单模光纤对比(5)光纤的波长与规格&#xff08…

AttributeError: ‘list‘ object has no attribute ‘view‘

问题描述 训练yolov9的时候遇到了下面的问题。 In loss_tal.py: pred_distri, pred_scores torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split( (self.reg_max * 4, self.nc), 1) The error is as follows: AttributeError: list …

NLP - 神经网络与反向传播

使用神经网络进行命名实体识别(二值词窗分类) 根据上下文窗口 建立词向量 通过一个神经网络层,通过一个逻辑分类器,得到这个概率是属于特定实体词的预测概率。 另一个分类器来比较说明 这个词是哪个实体类型(比较概率…

赵本山与高秀敏夫妇本想找范伟要那1200元电视机垫款,却不好意思向范伟开口--小品《面子》(中1)的台词

赵本山与高秀敏夫妇本想找范伟要那1200元电视机垫款,却不好意思向范伟开口 --小品《面子》(中1)的台词 表演者:赵本山 高秀敏 范伟 (接上) 高秀敏:咱俩抓紧提事啊 赵本山:不着急…

Python 迭代器和生成器的妙用

本文将探讨python的迭代器和生成器在实际场景中的一些巧妙用法。掌握迭代器和生成器的使用,能够让开发者在解决实际问题时更加得心应手。 Python 迭代器的妙用 Python 的迭代器是一个实现了迭代器协议的对象,它包含方法 __iter__() 和 __next__()。迭代…

实现任意系统下载office文件的域控

一.背景 最近用户提出需求:某个系统A下载的excel文档需要进行权限控制,比如只能下载文档的用户(即文档owner)查看或者编辑,其他人想要查看或者编辑,需要文档owner进行手动设置,当然也可以手动取…

初识C语言—指针

.h 头文件(函数的声明,类型的声明,头文件的包含) .c 源文件(函数实现) 浮点数的四舍五入,不能用你肉眼看到的数值来计算,因为浮点数在内存中有可能不能精确保存。 内存&#xff1a…

ICML23 - Synthetic Data for Model Selection

前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 本文关注的问题为:是否可以使用合成数据(Synthetic Data)用于模型选择?即不…

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网…

MySQL 外键约束 多表联查 联合查询

外键约束 外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 有一张学生表和班级表,学生表通过班级表的ID引用到该班级,从而进行关联,而通过外键约束可以保证数据的一致性完整性。 如学生ID18关联到课程ID1号…

瑞吉苍穹外卖如何拓展?已经经过不同公司多轮面试。项目中会问到哪些问题?以及问题如何解决?

别催了,别催了,先收藏吧。 作者大大正在加班加点完成。 文章会尽快发布,关注收藏,尽请期待。 想要加入并查阅作者的知识库可以联系作者 不要白嫖,通过后,附上关注和收藏截图。 已有众多小伙伴加入 目前…

MySql安全加固:可信IP地址访问控制 设置密码复杂度

MySql安全加固:可信IP地址访问控制 & 设置密码复杂度 1.1 可信IP地址访问控制1.2 设置密码复杂度 💖The Begin💖点点关注,收藏不迷路💖 1.1 可信IP地址访问控制 当您在创建用户时使用’%作为主机部分,…