百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
G

go-push

> 编程语言
开源

千万级go弹幕推送服务器

1.0K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

千万级go弹幕推送服务器

go-push

golang实现的、可扩展的通用消息推送原型。

安装

已升级到golang1.13,基于gomod管理依赖。

  • 下载go-push
go get github.com/owenliang/go-push
  • 安装依赖
export GOPROXY=goproxy.io
go mod download
  • 编译gateway服务
cd gateway/cli && go build && cd -
  • 编译logic服务
cd logic/cli && go build && cd -

架构

  • gateway: 长连接网关
    • 海量长连接按BUCKET打散, 减小推送遍历的锁粒度
    • 按广播/房间粒度的消息前置合并, 减少编码CPU损耗, 减少系统网络调用, 巨幅提升吞吐
  • logic: 逻辑服务器
    • 本身无状态, 负责将推送消息分发到所有gateway节点
    • 对调用方暴露HTTP/1接口, 方便业务对接
    • 采用HTTP/2长连接RPC向gateway集群分发消息

潜在问题

  • 推送主要瓶颈是gateway层而不是内部通讯, 所以gateway和logic之间仍旧采用了小包通讯(对网卡有PPS压力), 同时logic为业务提供了批量推送接口来缓解特殊需求.

压测

环境

  • 16 vcore
  • client, logic, gateway deployed together

带宽

CPU占用

logic的推送API

  • 全员广播
curl http://localhost:7799/push/all -d 'items=[{"msg": "hi"},{"msg": "bye"}]'
  • 房间广播
curl http://localhost:7799/push/room -d 'room=default&items=[{"msg": "hi"},{"msg": "bye"}]'

gateway的websocekt协议

  • PING(客户端->服务端)
{"type": "PING", "data": {}}
  • PONG(服务端->客户端)
{"type": "PONG", "data": {}}
  • JOIN(客户端->服务端)
{"type": "JOIN", "data": {"room": "fengtimo"}}
  • LEAVE(客户端->服务端)
{"type": "LEAVE", "data": {"room": "fengtimo"}}
  • PUSH(服务端->客户端)
{"type": "PUSH", "data": {"items": [{"name": "go-push"}, {"age": "1"}]}}

加入社群

我的博客:

鱼儿的博客

Go微信群:

知识星球(独家知识):

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言