# MinecraftGatewayforGo **Repository Path**: hi1/minecraft-gatewayfor-go ## Basic Information - **Project Name**: MinecraftGatewayforGo - **Description**: 一个基于Go开发的MC服务器网关系统(Bedrock) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-13 - **Last Updated**: 2026-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Minecraft Bedrock Load Balancer v2.0 > 生产级 UDP L4 负���均衡网关 | 高性能 | 零拷贝 | 10k+ 并发 一个专为 Minecraft Bedrock Edition 设计的高性能 UDP 负载均衡网关。纯转发设计,不解析协议,提供亚毫秒级转发延迟。 ## 核心特性 | 特性 | 说明 | |------|------| | **纯 UDP 转发** | L4 层转发,零协议解析,不干扰游戏数据包 | | **高性能架构** | Worker Pool + sync.Map + 对象池,支持 10k+ 并发 | | **智能负载均衡** | 最少连接 / IP Hash / 轮询 / 加权 | | **会话保持** | Sticky Sessions,同一玩家始终连接同一后端 | | **零拷贝优化** | 对象池复用,预分配缓冲区,最小化 GC 压力 | | **Prometheus 指标** | 内置 /metrics 端点,支持监控集成 | | **优��关闭** | 信号处理,连接排空,零数据丢失 | ## 架构设计 ``` 客户端 → 负载均衡器 → 后端服务器池 ↓ [Worker Pool] [Session Pool] [Balancer] ``` ## 快速开始 ### 1. 配置后端服务器 编辑 `config.yaml`: ```yaml # 监听配置 listen: host: "0.0.0.0" port: 19132 # 后端服务器 backends: - name: "server-1" host: "127.0.0.1" port: 19133 weight: 1 - name: "server-2" host: "127.0.0.1" port: 19134 weight: 1 # 负载均衡策略 load_balance: strategy: "least-conn" # least-conn, ip-hash, round-robin, weighted ``` ### 2. 启动负载均衡器 ```bash # 使用默认配置 ./mclb.exe # 或指定配置文件 ./mclb.exe -config /path/to/config.yaml ``` ### 3. 客户端连接 在 Minecraft Bedrock 中连接:`负载均衡器IP:19132` ## 负载均衡策略 | 策略 | 说明 | 适用场景 | |------|------|---------| | `least-conn` | 最少连接优先 | 服务器性能相近,动态负载均衡 | | `ip-hash` | 基于 IP 哈希 | 需要会话保持,但禁用 session 时 | | `round-robin` | 轮询 | 简单平均分配 | | `weighted` | 加权轮询 | 服务器性能不同,按权重分配 | ## 性能基准 | 指标 | 数值 | |------|------| | 并发连接 | 10,000+ | | 转发延迟 | P99 < 1ms | | 吞吐量 | 1M+ packets/sec | | 内存占用 | ~200MB (10k 连接) | ## 项目结构 ``` Go-2/ ├── cmd/mclb/ # 主程序入口 ├── internal/ │ ├── balancer/ # 负载均衡器 │ ├── session/ # 会话管理(sync.Map) │ ├── forwarder/ # UDP 转发器(Worker Pool) │ ├── config/ # 配置管理 │ └── metrics/ # Prometheus 指标 ├── config.yaml └── README.md ``` ## 性能优化要点 ### 1. 零拷贝设计 - 对象池复用 Packet 结构 - 预分配缓冲区 - 避免每包创建 goroutine ### 2. 无锁并发 - sync.Map 实现会话查找 - atomic.Int64 统计计数 - RWMutex 保护热点数据 ### 3. Worker Pool - 固定数量 Worker - 通道传递任务 - 避免协程爆炸 ## Prometheus 指标 ```yaml metrics: enabled: true path: "/metrics" port: 9090 ``` 访问 `http://localhost:9090/metrics` 查看指标: ``` mclb_packets_total 1234567 mclb_bytes_total 543210123 mclb_active_sessions 847 ``` ## 压测建议 ```bash # 使用 iperf3 测试 UDP 吞吐 iperf3 -c localhost -u -p 19132 -b 1G -P 10 # 观察统计信息 curl http://localhost:9090/metrics ``` ## License MIT License