homjay
123 天前
小白总结了下,大佬们是这个意思吗
1:
场景:秒杀系统(新起专门处理秒杀请求的服务,独立部署,减少对主站的影响)
流程:前端 -> 网关(nginx) -> 后端 -> 缓存(redis) -> 数据库(mysql)
原则:
1 、限流:前端选择性向后端发送真正请求(根据时间戳取余,用户会多次点击)、nginx (网关限流 1 分钟最多请求 10000 次)
2 、过程:
1 、2024-07-15 12:00 开启秒杀活动
2 、2024-07-15 11:30 秒杀服务从 mysql 读取数据,写入到 redis 缓存(预热准备)
3 、2024-07-15 12:00 时间到达
4 、(小王)请求发送 -> 后端判断用户是否符合参加活动 -> 开启 redis 锁 -> 从 redis 读取数据 -> 实现业务逻辑(库存相减...) -> 更新 reids 里面的值
5 、秒杀活动持续 1 分钟
6 、2024-07-15 12:01 时间结束
7 、2024-07-15 12:01 将 redis 数据回写到 mysql
2:
线上 Redis 内存满了,应该如何处理?
方案:
1 、判断是否有未设置过期时间(TTL)的 key
2 、内存淘汰策略
3 、添加监控
3:
你认为解决高并发问题的本质是什么
本质:
1 、系统同时处理大量请求,确保响应时间可接受且系统资源不被耗尽
方案:
1 、系统同时处理大量请求 => 减少请求(限流)
2 、系统资源不被耗尽 => 加强系统资源 => 花钱升级服务器
3 、系统资源不被耗尽 => 耗时的任务 => 减少耗时时间 => (旁路缓存,不经常更新数据,原来从 mysql 读取,优化为从 redis 读取)