dcard backend intern homework 源码
dcard-后端-实习家庭作业 Dcard每天午夜都有大量使用者涌入抽卡,为了不让伺服器过载,请设计一个中间件: 限制每小时来自同一个IP的请求数量不得超过1000 在响应标头中加入剩余的请求数量(X-RateLimit-Remaining)以及速率限制归零的时间(X-RateLimit-Reset) 如果超过限制的话就回传429(请求过多) 可以使用各种资料库达成 去做 处理redis race condition版本 不处理redis race condition版本 限速策略 固定窗口以第一个请求往后一小时来划分窗口 移动窗口以最后一个请求往前推一小时来划分窗口 有惩罚机制的窗口吗? 例如:要求到达上限后,在速率限制重置前再送请求就延长10分钟 参考资料 HTTP的RateLimit标头字段