赞
踩
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保证他们之间的数据一致
我们都有光明的未来
祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。