8号码库
8号码库

暂无菜单项

首页/社区/广场/源码分享/
打开 MD 链接

分享一个自己手写的高并发限流中间件,Go 写的,附完整思路

老码农阿伟
发布于 4周前更新于 3周前
20

高并发限流架构图

最近做网关项目,QPS 一上来就被打挂,索性自己撸了个限流中间件。核心用的是令牌桶算法,单机每秒放 N 个令牌,桶满就拒绝。

关键代码片段(简化版):

func (l *Limiter) Allow() bool {
  now := time.Now().UnixNano()
  tokens := l.tokens + float64(now-l.last)/int64(l.rate)
  if tokens > l.cap { tokens = l.cap }
  if tokens >= 1 {
    l.tokens, l.last = tokens-1, now
    return true
  }
  return false
}

目前压测单机 8w QPS 没问题。完整思路和 benchmark 我整理在仓库里了,欢迎来拍砖~

0 / 600
细中粗
7 讨论
热门最新
总结
作者分享网关项目限流中间件实现,并欢迎评论拍砖。
maoku
M

收藏了,跳转统计那块打算用 ClickHouse 还是直接落 MySQL?想参考下思路。

8/27
maoku
M

令牌桶方案在高并发下确实稳,请问热点 key 的限流计数是怎么防 Redis 抖动的?

8/27
maoku
M

测试username作者-naicha_bjt

8/28
maoku
M

测试username作者-awei_laoma

8/28
maoku
M

测试username作者-dajian66

8/28
maoku
M

沙发!跟着抄作业。

8/25
评论者

沙发!这篇教程太及时了,正好在搭短链系统,跟着抄作业。

8/25
热门帖子
  • 8号码库社区版规与发帖指引(新人必读)

    8
    置顶
    8/27326 浏览
  • 半夜两点还在调源码,我劝你这几个瞬间别硬刚

    3
    9/13531 浏览
  • WordPress 源码手动安装与性能优化全流程

    6
    9/34.7K 浏览
  • 宝塔面板从零部署网站源码:LNMP 环境一键搭建全流程

    5
    9/3510 浏览
  • 前端项目源码构建与部署:Vue/React + Nginx 静态托管与 SSR

    3
    9/3375 浏览
  • Docker 容器化源码部署:Dockerfile 与 Compose 编排实战

    5
    9/3773 浏览
  • Node.js 项目源码部署实战:PM2 进程守护 + Nginx 反向代理

    3
    9/3597 浏览
  • 从源码部署 Java Spring Boot:打包 Jar 包 + systemd 守护

    3
    9/3638 浏览
  • 半小时上线个人博客/知识库:通用部署流程(附流程图)

    2
    8/252.4K 浏览
  • 自己搭轻量网盘:Cloudreve 开箱即用(附架构图)

    5
    8/28463 浏览
8号码库
8号码库
首页
源码下载
交流社区
网址导航
版权所有 8号码库
隐私政策常见问题联系我们
捐赠❤️