摘要:
Consumer事务修补 internal/mq/consumer.go 里的 CreateOrder 手动调用了 tx.Begin() 如果在 Update 或 Create 时发生了 panic,程序直接崩溃或被 recovery 捕获,tx.Rollback() 将永远不会被执行,导致数据库连 阅读全文
posted @ 2026-04-17 17:48
Chuan81
阅读(13)
评论(0)
推荐(0)
摘要:
实现 项目的初衷是用于学习后端项目框架,但一个完整的商城项目还是需要支付流程 所以我在这里选择了模拟支付回调的方法来进行实现,实际应用这个项目的时候千万不能留下模拟回调的API 在真正的企业项目应用场景,需要在这部分加入真实的电子支付(微信/支付宝)SDK以及支付密钥等配置 流程设计 支付回调接口 阅读全文
posted @ 2026-04-17 17:47
Chuan81
阅读(29)
评论(0)
推荐(0)
摘要:
Go在1.21更新中,为标准库引入了slog,我们可以利用slog简单实现日志组件 一. slog初始化 cmd/secgo-mall/main.go // ... 原代码 ... import ( "os" "log/slog" // ... 原代码 ... ) func main() { // 阅读全文
posted @ 2026-04-17 17:47
Chuan81
阅读(9)
评论(0)
推荐(0)
摘要:
当前系统的问题: 一个用户可以对同一个秒杀活动无限次抢购 恶意用户可以高频访问接口耗尽资源 Redis Lua 只保证库存不超卖,不限制用户请求次数 设计方案:Redis + 滑动窗口算法 在 Redis 中记录每个用户在所有秒杀活动下的访问次数,超过限制则拒绝。 Key 格式:ratelimit: 阅读全文
posted @ 2026-04-17 17:46
Chuan81
阅读(7)
评论(0)
推荐(0)
摘要:
在先前我们写了一些在设计中需要管理员权限的API接口,但并没有实现权限组 本章我们将通过实现RBAC权限模型来对用户进行鉴权 一.Role字段 model/user.go我们为User结构体添加成员Role // User 对应数据库中的 user 表 type User struct { Uid 阅读全文
posted @ 2026-04-17 17:46
Chuan81
阅读(19)
评论(0)
推荐(0)
摘要:
测试前准备 1. MySQL 已启动,数据库 secgo_mall 已创建 2. Redis 已启动(redis-server 或 Docker) 3. 服务已启动:go run cmd/secgo-mall/main.go 4. 安装Postman与ab/hey,并了解如何操作(这里选用hey) 阅读全文
posted @ 2026-04-17 17:45
Chuan81
阅读(34)
评论(0)
推荐(0)
摘要:
当前抢购成功后,Redis 库存已扣减,但 MySQL 中没有真正生成订单(order表)。 需要通过消息队列异步创建订单,实现削峰填谷。 为此,我们先安装RabbitMQ依赖 go get -u github.com/rabbitmq/amqp091-go 注: 事先安装RabbitMQ 一. C 阅读全文
posted @ 2026-04-17 17:39
Chuan81
阅读(13)
评论(0)
推荐(0)
摘要:
在模型与缓存就绪之后,我们便可以着手商品与秒杀核心的实现 一. Repository层-商品与活动相关逻辑 repository/product.go 和 repository/seckill.go package repository import ( "github.com/Chuan81/se 阅读全文
posted @ 2026-04-17 17:38
Chuan81
阅读(19)
评论(0)
推荐(0)
摘要:
项目引入 Redis 的必要性 库存超卖问题真是面试必问了 1) 库存超卖问题的根本原因 在高并发场景下,假设库存只剩 1 件,同时有 1000 个请求到达: 请求A:SELECT stock FROM seckill WHERE id = 1 → stock = 1 ✓ 请求B:SELECT st 阅读全文
posted @ 2026-04-17 17:37
Chuan81
阅读(19)
评论(0)
推荐(0)
摘要:
阶段回顾 User (已完成) ↓ JWT (已完成) ↓ 商品/秒杀/订单 ← 当前阶段 ↓ Redis 库存预热 ← 依赖 Seckill.Stock ↓ RabbitMQ 异步下单 ← 依赖 Order 创建 ↓ 秒杀接口 ← 需要 UserId 鉴权 想要完成秒杀,首先要确定哪个用户在抢,我 阅读全文
posted @ 2026-04-17 17:36
Chuan81
阅读(23)
评论(0)
推荐(0)

浙公网安备 33010602011771号