LEARNING PATH 03

快,是设计出来的

用并发安全的订单模块,连接 Go 性能工具与真实业务复杂度。

1. 数据所有权

Store 返回订单副本,调用者不能绕过锁修改内部 slice。32 个 shard 把全局锁拆开,不同订单可并行访问;读路径使用 RWMutex。分片数量要用真实 key 分布验证。

2. 业务不变量

Service 校验客户、数量、价格和订单上限;金额用整数分避免浮点误差。业务正确性优先于微优化。

3. 幂等与并发

重试 POST 携带 Idempotency-Key。临界区把“检查键、写订单、发布键”作为一个原子步骤,避免并发相同请求产生两个订单。示例为进程内实现;生产必须将幂等键与订单放进同一数据库事务。

4. 性能闭环

go test -race ./...
go test -bench=. -benchmem ./internal/order
go test -cpuprofile cpu.out ./...

race 找竞争,benchmark 看耗时与分配,profile 找热点。HTTP 层还设置 body 上限与 timeout,防止资源耗尽。

5. 进阶

增加库存预占防超卖;用有界 worker pool 做背压;持久化幂等键;传播 context 取消;加入指标。开始 Quiz →