从零实现短链服务的完整实战:短码生成与冲突处理、Redis 缓存穿透与击穿(singleflight)、异步点击统计、两层缓存、wrk 压测定位瓶颈。含 2C1.8G 机器实测数据:无缓存 1200 QPS → 加 Redis 28000 → 加本地 LRU 56000。
Go 环境搭建与工具链 起步的渐进式学习路线:第一步:环境与第一批代码 → 第二步:语言核心 → 第三步:工程能力 → 第四步:框架与选型 → 随用随查。
Go 的框架生态和前几年不一样了:net/http 在 1.22 之后支持了路径参数与方法匹配,很多原来必须上框架的场景现在不必了。本文先分清 HTTP 路由框架、微服务框架与标准库三类东西,再逐个说明 Gin、Echo、Fiber、Chi、go-zero、Kratos 的定位与代价,最后给出不确定时直接选 Gin 的兜底建议。
Kratos 是 B 站开源的微服务框架。和 go-zero 同属「微服务全家桶」,但路线不同:Kratos 以 gRPC 和 proto 为核心,HTTP 是附属;go-zero 以 .api 文件生成 HTTP 服务为主。
go-zero 是国内的微服务框架,核心不是「写 HTTP 接口」,而是用代码生成把一套微服务骨架搭起来:.api 文件描述接口,goctl 生成 handler / logic / model 三层代码,配套限流、熔断、缓存、链路追踪。
Fiber 是基于 fasthttp 的 Go Web 框架,API 风格照搬 Express。它的卖点只有一个:快。
Echo 是 Go 的 HTTP 框架,和 Gin 定位最接近但 API 设计更统一。核心特点是中间件接口规范、参数绑定和校验做得整齐。
阅读准备:掌握 Go 函数、结构体、接口和错误返回;知道 HTTP 请求的方法、路径、状态码与 JSON 各承担什么。
前置:函数和方法、控制结构。完成本章后,应能回答三个问题:调用者如何识别失败,失败以后资源如何清理,外部用户最终看到什么。
前置:函数和方法、控制结构。本章用标准库完成“启动任务 → 传递结果 → 等待结束 → 取消任务 → 保护共享状态”。先单独保存并运行每个程序,再组合成 worker pool;不要把几个 main 函数放在同一个文件。