先说这门课解决什么问题
写 Go 后端接口,迟早要面对两件事:一是限流,防止个别调用方把服务打挂;二是缓存,避免每次请求都去查库。这门课不讲大而全的架构,只盯住 Gin 框架下的两个具体场景:怎么自己手写一个令牌桶限流器,以及怎么手写一个带过期和容量上限的 LRU 缓存。重点不在调库,而在把算法落到 Gin 的中间件里,让接口能按 IP 或简单参数做限流,同时用一个自写的缓存把高频访问的数据挡在内存里。
适合什么基础,学完能独立做什么
这门课不适合零基础。默认你已经能写基本的 Gin 路由和处理器,看得懂 Go 的 struct、interface、goroutine 和 channel,但没怎么自己实现过中间件和算法。如果你只会调现成库、遇到要改限流策略就卡壳,这课就是帮你补上"自己造轮子"这一段。学完后你能独立做的事很明确:给任意一个 Gin 接口加一层限流装饰器,支持按 IP 或简单参数限流;自己写一个带最大数量限制和过期时间的 LRU 缓存,并把它接到限流逻辑里做计数。换句话说,以后遇到第三方库不满足需求时,你有能力照着算法思路自己撸一个能跑的版本,而不是等别人发版。
建议怎么看、资料怎么配合练
建议先看令牌桶那几讲,把最简单的桶结构、Gin 装饰器写法、协程处理速率这几步走通,重点理解为什么后面要换"更方便的方法"——这是很多新手容易忽略的工程取舍。看完限流部分先停一下,自己把按 IP 限流的版本跑起来,哪怕是无脑版也行。然后再进入 LRU 缓存部分,这部分顺序别跳:先看 Go 自带双向链表怎么用,再跟缓存结构定义、存取、末位淘汰、最大数量限制,最后才是过期机制上下两讲。缓存部分概念密度比限流高,建议每看完一讲就照着敲一遍,不要只读代码。最后那讲把 LRU 缓存和 IP 限流合在一起讲,是整门课的收口,建议当成一个小项目来写:先用自己写的缓存存 IP 计数,再接上限流中间件,跑通后回头对比第一版无脑 IP 限流,你会清楚看到缓存解决了什么问题。资料里的代码不要直接复制跑,按讲顺序自己实现一遍,遇到卡住再对照,这样学完才是你的东西。
本课程是系列课程,每个课程都是独立的。本篇的主题是以令牌桶算法为例在gin的背景下手撸一个限流功能,同时为了扩展令牌桶我们还需要手撸一个带过期机制的缓存(12课
课程目录
* 第1讲:开张课、最简单的令牌桶代码
* 第2讲:编写gin限流装饰器
* 第3讲:处理令牌速率--协程的方式
* 第4讲:处理令牌速率(2):更方便的方法
* 第5讲:扩展案例:支持简单参数限流
* 第6讲:基于IP限流(无脑版)
* 第7讲:LRU算法、go自带双向链表
* 第8讲:定义我们的缓存结构、基本存取
* 第9讲:LRU(3):封装缓存对象、末位淘汰
* 第10讲:LRU(4):限制缓存最大数量
* 第11讲:LRU缓存:实现缓存的过期(上)
* 第12讲:LRU缓存:实现缓存的过期(下)
* 第13讲:基于LRU缓存再看实现IP限流






