项目ai拷打

news/2025/10/17 8:35:44/文章来源:https://www.cnblogs.com/zkoko/p/19146934

模块一:高并发点赞 & 幂等性

  1. 问题:高并发点赞,方案怎么设计?

核心答案:

缓存层:使用Redis的SET,Key为article:likes:{文章ID},Value为用户ID。

优点:SADD天然幂等防重;SCARD O(1)复杂度快速计数;SREM快速取消点赞。

持久化:操作Redis后,发消息到RabbitMQ,由消费者异步写入/删除数据库。

  1. 问题:如何保证消息消费的幂等性,防止重复点赞?

核心答案:

创建幂等记录表:表里有一个唯一键 message_id。

利用数据库事务:在同一个事务里,先INSERT消息ID到幂等表,再执行真正的业务操作(如INSERT点赞记录)。

原理:如果消息重复,INSERT幂等表会因为唯一键冲突而失败,事务回滚,业务代码不执行,从而保证幂等。

  1. 问题:幂等记录表会无限增大,怎么办?

核心答案:

最佳方案:使用数据库分区表,按天或按周分区。

清理方式:定期DROP或TRUNCATE旧的分区,这是一个DDL操作,速度极快,系统开销小。

兜底方案:增加created_at时间戳字段,定期跑批DELETE删除过期记录。

模块二:两级缓存 & 分布式一致性
4. 问题:为什么需要 Caffeine + Redis 两级缓存?

核心答案:

极致性能:Caffeine是JVM堆内缓存,纳秒级响应,消除了网络开销。

为Redis减压:拦截大部分热点数据请求,保护Redis。

  1. 问题:如何保证分布式环境下,所有节点的Caffeine缓存数据一致?

核心答案:

兜底:Caffeine设置较短的过期时间(TTL),保证最终一致性。

主动通知:放弃不可靠的Redis Pub/Sub,使用RabbitMQ的Fanout广播交换机。

流程:数据更新后,发送一条“缓存淘汰”消息到Fanout交换机,所有应用实例都能收到,并删除自己的本地缓存。

  1. 问题:如何管理每个实例的RabbitMQ队列,避免“僵尸队列”和“重启找不到队列”的问题?

核心答案:

稳定命名:通过环境变量给每个实例一个固定的INSTANCE_ID,用它来拼接队列名。

持久化队列:队列声明为durable=true,保证重启后队列和消息不丢失。

自动清理:声明队列时设置x-expires参数(队列TTL),当实例永久下线,队列在超时后会被RabbitMQ自动删除。

模块三:数据同步 & 异常处理
7. 问题:为什么用Canal+MQ同步数据到ES,而不是直接用MySQL的LIKE?

核心答案:

性能:LIKE '%keyword'无法使用索引,会全表扫描,性能极差。

功能:ES基于倒排索引,专为全文检索设计,支持分词、相关度排序等高级功能,速度是毫秒级。

  1. 问题:Canal、MQ、消费端在数据同步链路中各自的角色是什么?

核心答案:

Canal:伪装成MySQL从库,拉取并解析binlog,将其转换成JSON。

RabbitMQ:作为缓冲层,解耦和削峰填谷,并提供可靠消息传输。

消费端:

数据转换:处理字段名等格式问题。

数据富化:根据binlog中的ID,关联查询其他服务或数据库,组合成一个完整的ES文档。

写入ES:调用ES API,建立索引。

  1. 问题:消费端在“数据富化”时调用下游服务失败,怎么办?

核心答案:

梯度延迟重试:将消息投递到不同的延迟队列(如1分钟、5分钟、10分钟),给下游服务恢复的时间。利用RabbitMQ的TTL + 死信交换机实现。

最终处理:达到最大重试次数后,将消息投递到最终死信队列。

人工介入:专门的消费者监听死信队列,通过邮件、钉钉等方式告警,通知人工处理。

  1. 问题:重试机制导致消息延迟,如何解决“旧的UPDATE覆盖新的DELETE”这种消息乱序问题? * 核心答案: 1. 放弃保证顺序:接受消息会乱序的现实。 2. 版本控制:在MySQL表中增加一个update_time或version字段,每次更新时都刷新它。 3. 乐观锁逻辑:消费端处理消息时,先从ES中读出当前文档的版本,然后与收到的消息中的版本进行比较。 4. 丢弃旧数据:只有当消息中的版本大于ES中已存的版本时,才执行更新。否则,直接丢弃这条过期的消息。

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

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

相关文章

混合(ZR 二十联测 A + MX 炼石 ABC)

100 + 100 + 25 + 20 = 245, Rank 2/6.第一次过 200 是因为放了 2 个 A .jpg混合(ZR 二十联测 A + MX 炼石 ABC) A:ZR 2025 NOIP 二十连测 Day 4 A B:MX 练石 2025 NOIP #11 A C:MX 练石 2025 NOIP #11 B D:MX 练…

Qt项目作品在苹果macos上编译运行效果/视频监控系统/物联网平台等

一、前言说明 在这十几年时间里,用Qt写过几十个项目,一百多个组件,几百个控件,最开始的时候并没有考虑跨平台的问题,后面有用户陆陆续续有其他平台的要求,所以后期写的代码,从一开始设计阶段就会考虑跨平台问题…

电脑硬盘中的文件怎么搜索?电脑文件搜索太慢怎么办?

下载地址获取 https://pan.quark.cn/s/aa60321f9619 所以目录使用教程 双击直接打开 特点 搜索快,直接搜索就能用

实用指南:VMware挂载Kail Linux

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年靠谱的风机/离心风机/轴流风机生产企业排行榜-江苏中南鼓风机有限公司

江苏中南鼓风机有限公司是一家专业从事各类国标、特种及专用风机研发、生产和性能测试的制造企业。产品涵盖离心风机、轴流风机、锅炉风机、窑炉风机、高温风机以及防爆、密封、除尘等多功能风机,材质覆盖碳钢、不锈钢…

OpenCV基础操作与图像处理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:动态规划之买卖股票的最佳时机III和IV

实用指南:动态规划之买卖股票的最佳时机III和IV2025-10-17 08:11 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

2025年行业内游乐设施/过山车游乐设施权威榜单厂家-河北天鸿游乐设备

河北天鸿游乐设备有限责任公司位于河北省衡水市,是一家专注于大型主题游乐设施研发、制造、安装及销售的高新技术机构,尤其在旋转塔和过山车领域具有行业领先地位,拥有大型游乐设施A级生产许可证。 推荐指数:9.5/1…

机器学习技术助力美国西海岸地震预警系统升级

加州理工学院研究团队利用机器学习技术和云计算平台,构建能够实时处理地震数据的新型预警系统。该系统通过深度学习算法将地震事件检测能力提升3-5倍,并能更精准定位地下断层位置。机器学习技术助力美国西海岸地震预…

2025年口碑好的挤浆机/单螺旋挤浆机TOP品牌推荐厂家-滕州市建兴机械有限公司

滕州市建兴机械有限公司自2003年起专注于浆渣物料连续脱水、压榨及固液分离设备的研发与制造,积累二十余年技术经验,在行业内具备深厚的技术沉淀和生产能力。产品广泛应用于造纸制浆、生物质能源、食品加工、植物提取…

2025年市场课桌椅/钢塑课桌椅最新TOP排名厂家-江西华聚智能家具集团有限公司

江西华聚智能家具集团概况 江西华聚智能家具集团有限公司成立于2022年,前身为江西省南城县发华实业,位于江西省抚州市南城县株良镇古竹工业园区,占地超过8万平方米。集团专注于高端校具的研发、制造与服务,产品涵盖…

2025年口碑好的垃圾袋/医疗垃圾袋排名推荐生产厂家-厦门市万塑环保材料有限公司

本网10月16日讯 厦门市万塑环保材料有限公司成立于2000年,位于厦门市集美北部工业区,是福建省首批专注生物降解塑料袋生产的企业之一。主要产品包括竹纤维降解垃圾袋、宠物垃圾袋、双色提醒拾便袋、婴儿尿布桶垃圾袋…

实用指南:docker镜像和容器

实用指南:docker镜像和容器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

深入理解 PHP-FPM 的最佳配置

深入理解 PHP-FPM 的最佳配置 对大多数开发者来说,PHP-FPM 的配置并不是日常工作中需要深入研究的东西。这没什么问题,毕竟不是每个人都想或需要在服务器调优上花时间。 况且,现在有很多托管服务(宝塔, 1panel等)…

【GitHub每日速递 251017】95k star,程序员专属!超全做饭指南,涵盖千道美食做法与进阶秘籍

原文: https://mp.weixin.qq.com/s/1Jxssm-81SsuOQTi31fqKA 全球最大RSS网络RSSHub:聚合海量内容,开源社区超活跃! RSSHub 是一个将各类内容源转化为RSS订阅的工具。简单讲,它能让不支持RSS的网站也能生成RSS订阅链…

洛谷 P6715 [CCO 2018] Fun Palace (神秘DP)

模拟赛的神题。想了 4h 没有拼出任意一个多项式做法。 在赛后被同学指点了一下发现状态要这么设——设 \(f_{i,j}\) 表示考虑前 \(i\) 个房间,第 \(i\) 个房间所有时间内最大有 \(j\) 个人的情况下的最大总人数。 至于…

AT 随机做题 I

Randomly Problems Solving at AtCoder I 质量评分 \(\in[0,10]\),分为 \([0,4),[4,7),[7,10]\) 三个梯度,评分和难度弱相关。 上次更新:2025/10/16 注重思路。 [ABC 134 F] Permutation Oddness \(5\) 分。 排列计…

moni 32

事实是我好久没写模拟赛的总结了, 想了想这点东西当日记还是太糖了,(主要是不想写) 直接来吧,预估 \(100 + 100 + 65 + 0\),实际 \(100 + 0 + 65 + 0\)。 挂分原因,交错代码了。 故事是这样的。 我感觉我自己 T…

git 舍弃当前所有修改

在 Git 中,如果你想要舍弃当前所有未提交的修改(包括工作区和暂存区的更改) git reset --hard这会:重置暂存区(index) 重置工作区(working directory) 丢弃所有未提交的修改可选:同时清理未跟踪的文件(如新添…

2025.10.17——1蓝

提高+/省选- P3230 [HNOI2013] 比赛 补题,前天开的暑假集训题,看了题解后花了几天时间理解。很精妙的记忆化搜索。