Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GameServerGateway

游戏服务器网关,负责转发游戏客户端请求到后端游戏服务器。

功能特性

  • 多协议支持:TCP、UDP、HTTP、WebSocket
  • 负载均衡:加权轮询策略,支持后端权重配置
  • 健康检查:自动检测后端服务器状态
  • 连接管理:支持最大连接数限制
  • 认证:请求认证机制
  • 限流:请求频率限制(分片无锁设计)
  • 会话管理:游戏会话管理
  • 连接池:TCP/UDP 连接复用,减少连接开销
  • 高性能:零分配、并发安全

项目结构

GameServerGateway/
├── cmd/GameServerGateway/     # 程序入口
├── internal/
│   ├── app/                   # HTTP 服务应用
│   ├── auth/                  # 认证模块
│   ├── config/                # 配置管理
│   ├── gateway/               # 网关核心(TCP/UDP 代理)
│   ├── handler/               # HTTP 处理器
│   ├── middleware/            # HTTP 中间件
│   ├── ratelimit/             # 限流模块
│   ├── router/                # 路由与负载均衡
│   └── session/               # 会话管理
├── pkg/
│   ├── errors/                # 错误处理
│   ├── logger/                # 日志库
│   └── pool/                  # 连接池(TCP/UDP)
├── configs/                   # 配置文件
├── deployments/               # 部署配置
│   └── k8s/                   # Kubernetes 配置
├── tests/                     # 测试
│   └── unit/                  # 单元测试
├── go.mod
├── go.sum
└── Makefile

快速开始

环境要求

  • Go 1.21+

构建

make build

运行

# 默认配置
./bin/GameServerGateway

# 指定配置文件
./bin/GameServerGateway -config configs/config.yaml

测试

make test

配置说明

配置文件位于 configs/config.yaml,主要配置项:

server:
  # 运行模式: http, gateway, both
  mode: both
  port: 8080

  # 游戏网关配置
  gateway:
    tcp_enabled: true
    tcp_port: 9001
    udp_enabled: true
    udp_port: 9002
    ws_enabled: true
    ws_port: 9003
    max_conns: 50000

    # 后端游戏服务器列表
    backends:
      - id: "game-server-1"
        host: "192.168.139.180"
        port: 8090
        game_type: "poker"
        weight: 100
        healthy: true
        max_conns: 10000

    # 认证配置
    auth:
      enabled: true
      jwt_secret: "your_jwt_secret_key_here"
      token_expire: 360

    # 限流配置
    rate_limit:
      enabled: true
      per_conn_limit: 100

    # 会话配置
    session:
      timeout: 300
      heartbeat: 60

负载均衡

当前实现加权轮询 (Weighted Round Robin) 策略:

  • 根据后端 weight 配置分配请求权重
  • 支持 maxConns 限制后端最大连接数
  • 结合健康检查自动跳过不健康的后端

性能指标

指标 数值
连接池获取 ~70ns/op
限流分片查询 ~4ns/op
理论单机 QPS 50-100 万+
内存占用 低(连接复用)

基准测试:

go test -bench=. -benchmem -run=^$ ./tests/unit/...

About

游戏服务器网关

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages