高并发幂等计数器【面试真题】
高并发幂等计数器【面试真题】
- 前言
- 版权
- 推荐
- 高并发幂等计数器
- 题目
- 初想
- 最后
前言
2023-8-30 12:07:45
公开发布于
2024-5-22 00:09:47
以下内容源自《【面试真题】》
仅供学习交流使用
版权
禁止其他平台发布时删除以下此话
本文首次发布于CSDN平台
作者是CSDN@日星月云
博客主页是https://blog.csdn.net/qq_51625007
禁止其他平台发布时删除以上此话
推荐
深入理解幂等性
https://zhuanlan.zhihu.com/p/432631103
https://blog.csdn.net/qq_44866828/article/details/132579831
高并发幂等计数器
题目
问题描述:
1.实现一个计数器服务
2.服务接收外部的 inc 请求,每个请求具有全局唯一 request id 和视频 id
3.因为网络和重试的原因,请求可能会重复的到达
4.时序上,多个重复的请求可能并发达到,两次重复请求之间的间隔不可预期
5.需要保证 at least once ,计数值不能丢失
6.可以依赖一些外部组件, mysql redis
初想
redis实现键是视频id 值set存储request id(UUID)
键是视频id 值是计数器可以使用redis事务,lua脚本
先查set存不存在request id,不存在计数器就自增;存在,不改变mysql实现数据表存储视频,和点赞数
mysql事务开启一个事务。检查MySQL表中是否存在对应视频ID的记录,如果存在则取出计数值。如果计数值为空,则插入一条新记录,并将计数值设置为1。如果计数值不为空,则更新该记录的计数值加1。提交事务。使用事务和唯一索引来保证计数值的一致性和幂等性。redis+mysql实现
redis做缓存,mysql做存储
一致性用延迟双删实现异步处理
redis分布式锁来保证操作的执行
mysql存储计数值
RocketMQ保证他们之间的数据一致
最后
我们都有光明的未来
祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦
相关文章:
高并发幂等计数器【面试真题】
高并发幂等计数器【面试真题】 前言版权推荐高并发幂等计数器题目初想 最后 前言 2023-8-30 12:07:45 公开发布于 2024-5-22 00:09:47 以下内容源自《【面试真题】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博…...
设计软件有哪些?建模和造型工具篇(3),渲染100邀请码1a12
这次我们接着介绍建模工具。 1、FloorGenerator FloorGenerator是由CG-Source开发的3ds Max插件,用于快速创建各种类型的地板和瓷砖。该插件提供了丰富的地板样式和布局选项,用户可以根据需要轻松创建木质地板、石板地板、砖瓦地板等不同风格的地面。F…...
无人机+EasyDSS互联网视频平台:构建秸秆焚烧监控的“天眼”系统
一、方案背景 在每年的夏收时节,秸秆禁烧成为各地政府面临的一项重要任务。随着夏收季节的结束,大量农作物秸秆的处理问题逐渐凸显。一方面农作物种植面积辽阔,禁烧区域面积较大,监管巡逻人员的数量有限,无法全面顾及…...
【UE5.1 角色练习】06-角色发射火球-part2
目录 效果 步骤 一、火球生命周期 二、添加可被伤害的NPC 三、添加冲量 在上一篇(【UE5.1 角色练习】06-角色发射火球-part1)基础上继续实现角色发射火球相关功能 效果 步骤 一、火球生命周期 为了防止火球没有命中任何物体而一直移动下去&#…...
多系统集成的项目周期为何普遍较长?
在现代企业的运营中,各种信息系统的集成已成为提升效率和竞争力的关键。然而,当工厂的ERP系统需要与MES、SRM、WMS、CRM等其他系统集成时,项目周期往往长达一年以上,这不仅耗费时间、人力和财力,还可能影响企业的正常运…...
【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题
【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1(更简单)解决方案2(更自由) 小结 🌈你好呀!我是 是Yu欸 …...
selenium 学习笔记(一)
pip的安装 新建一个txt curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 把上面的代码复制进去后,把后缀名改为.bat然后双击运行 当前目录会出现一个这个文件 然后在命令行pyhon get-pip.py等它下好就可以了selenium安装 需要安装到工程目…...
Nginx-04-Docker Nginx
Docker Nginx 实战 HTTP 服务 Nginx 的最大作用,就是搭建一个 Web Server。 有了容器,只要一行命令,服务器就架设好了,完全不用配置。 运行官方 image $ docker container run \-d \-p 8080:80 \--rm \--name mynginx \nginx…...
Rust一维Vec垂直方向拼接、水平方向拼接,多个二维Vec垂直方向拼接
1.在Rust中,拼接二维Vec通常意味着将多个一维Vec组合成一个二维Vec。假设你想要将多个Vec<T>拼接成一个Vec<Vec<T>>,你可以使用迭代器方法来实现。 下面是一个示例,演示如何将多个一维Vec拼接成一个二维Vec: …...
低代码与人工智能:改变软件开发的未来
引言 在当今快速发展的科技时代,软件开发行业也在不断地创新和演进。其中,低代码开发和人工智能技术是两个备受关注的领域,低代码开发通过简化开发流程和降低编码难度,使得软件开发变得更加高效和便捷,而人工智能技术…...
第三方软件检测机构要具备哪些资质要求?专业测试报告如何申请?
第三方软件检测机构是独立于软件开发商和用户之外的公正机构,负责对软件进行全面的检测和评估。其独立性保证了评测结果的客观性和公正性,有效避免了软件开发商对自身产品的主观偏见和误导。 要成为一家合格的第三方软件检测机构,需要具备一…...
快团团帮卖团长怎么对供货大团长进行评分?
都说帮卖“躺赚”? 一旦遇团不淑,惨遭不靠谱团长挖坑,售后拖延、发货慢、产品瑕疵…… 加上顾客夺命连环催,双面夹击,夹缝生存。供货团长靠不靠谱太重要了! 快团团供货团长评分系统上线! 帮卖团…...
双向带头链表实现
目录 一. 逻辑结构图解 1. 节点中存储的值 2.逻辑实现 二. 各种功能实现 1. 创建节点函数 2. 初始化哨兵位 3. 尾插 4. 头插 5. 尾删 6. 头删 7. 打印链表值 8. 查找数据,返回节点地址 9. 指定地址后插入节点 10. 删除指定地址节点 11. 销毁链表 三.…...
黑马python-面向对象程序设计
1.定义类 class 类名: 代码 ….. 注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯 2.self: self指调用该函数的对象 3.创建对象 对象名类() 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…...
pod容器基础概念
一 Pod基础概念: ①Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个 Pod代表着集群中运行的一个进程。一个pod包含一个或多个容器。如:应用容器/业务容器(淘 宝、京东、拼多多后台ÿ…...
AI日报:百度发布文心大模型学习机;Open-Sora 1.1可生成21秒视频;Canva可以自动剪辑视频了;超牛ComfyUI节点AnyNode来了
欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 1、百度文心…...
VUE3+TS+elementplus+Django+MySQL实现从数据库读取数据,显示在前端界面上
一、前言 前面通过VUE3和elementplus创建了一个table,VUE3TSelementplus创建table,纯前端的table,以及使用VUE3TSelementplus创建一个增加按钮,使用前端的静态数据,显示在表格中。今天通过从后端获取数据来显示在表格…...
用c++做贪吃蛇
由于蛇是由多块蛇身组成的,机构体数组或者链表来存储蛇 蛇在运行过程中,如果吃了食物,那么这块食物就可以看作是新的蛇头了, 数组存储 存储新蛇身,在数组的第一个位置插入一个元素。 链表 插入和删除元素效率很高&…...
【UE5.1 角色练习】08-传送技能
前言 在上一篇(【UE5.1 角色练习】07-AOE技能)基础上继续实现人物通过鼠标点击然后传送技能的功能。 效果 步骤 1. 首先需要显示鼠标光标,我们可以在玩家控制器中勾选“显示鼠标光标” 2. 在项目设置中添加一个操作映射,设置按…...
力扣283题:移动零(快慢指针)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: [0…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
