package
module
Version:
v0.0.0-...-4d53ac5
Opens a new window with list of versions in this module.
Published: Mar 24, 2025
License: MIT
Opens a new window with license information.
Imports: 0
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
- 游戏服务器引擎
- 分布式事件队列模型(Event Queue Model)
项目初始化
- go mod init github.com/75912001/xcore
- 清理依赖
- 检查依赖
安装包
代码测试工具
代码检测工具
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.57.1 (未使用)
- go get -u golang.org/x/lint/golint (未使用)
- go install honnef.co/go/tools/cmd/staticcheck@v0.4.7 (未使用)
- go get honnef.co/go/tools/cmd/staticcheck@latest (未使用)
- go install google.golang.org/protobuf/cmd/protoc-gen-go@latest(未使用)
git 提交标签
- [feat]: 新功能(feature)
- [fix]: 修复问题(bug fix)
- [docs]: 文档的变更
- [style]: 代码样式的变更(不影响代码运行的变动)
- [refactor]: 重构代码
- [test]: 添加或修改测试
- [chore]: 构建过程或辅助工具的变动
功能模块
- module
- moduleData 数据
- moduleLogic 逻辑
- moduleControl 控制块
服务资源
- ${groupID}.${serverName}.${serverID}.exe
- groupID: 服务组ID
- serverName: 服务名称
- serverID: 服务ID
服务类型
- system 系统保留 lib/error/system.code.go [错误码 0x0,0xffff]
- login 1 [错误码 0x10000,0x1ffff] [消息码 0x10000,0x1ffff]
- gateway 2 [错误码 0x20000,0x2ffff] [消息码 0x20000,0x2ffff]
- logic 3 [错误码 0x30000,0x3ffff] [消息码 0x30000,0x3ffff]
- room 4 [错误码 0x40000,0x4ffff] [消息码 0x40000,0x4ffff]
端口占用
- 端口计算公式: [3 * 10000 + ${service.type}*100 + ${service.id}]
- login 30101
- gateway 30201
- logic 30301
- room 30401
错误码
业务错误码: [0x10000,0x1fffffff]
消息码
业务消息码: [0x10000,0x1fffffff]
google protobuf gen:
protoc-gen-go.v1.34.2.windows.amd64.zip
ETCD
etcd-v3.5.15-windows-amd64.zip
目录结构
-
impl[todo menglc]
- bin 执行目录 [todo menglc]
- e.g.: 1.gateway.1.bench.yaml gateway 服务基础配置(group:1,name:gateway,id:1)
- log 日志目录
- build: 构建 [todo menglc]
- groupID: 组ID [ todo 测试脚本的可用性, windows下的脚本是否可用, linux下的脚本是否可用]
- bench: 服务基础配置 [todo menglc]
login.bench.json.tpl login 配置模板
gateway.bench.json.tpl gateway 配置模板
logic.bench.json.tpl logic 配置模板
- script: 脚本 [todo menglc]
- build.sh 构建脚本 [todo menglc]
- common: 公共模块 [todo menglc]
- db_async: 异步数据库 [todo menglc]
- service: 服务 [todo menglc]
common.go 公共模块 [todo menglc]
- protobuf: protobuf
- service: 服务 [todo menglc]
- gateway: 网关服务 [todo menglc]
- 功能
- 接受客户端的连接
- TCP
- 用户连接
- 超过一定时间未登录断开连接
- 心跳检测 [todo menglc]
- 客户端发送心跳包,服务端接收心跳包,如果超过一定时间未收到心跳包,进入连接-灰度。
- 连接-灰度 [todo menglc]
- 设置灰度时间,超过灰度时间,释放用户数据 [todo menglc]
- 灰度时间内,将发送给用户的数据,缓存到待发送队列中 [todo menglc]
- 限制连接数 [todo menglc]
- 负载均衡 [todo menglc]
- 调度算法:根据策略(如轮询、最少连接、源地址散列等)将请求分配给后端服务器。
- [] 后端服务器池:包含多个后端服务器,用于处理实际请求。 [todo menglc]
- [] 健康检查:定期检查后端服务器的健康状态,确保只将请求分发给健康的服务器。 [todo menglc]
- [] 配置管理:允许管理员动态地添加、删除或修改后端服务器配置。[todo menglc]
- logic: 逻辑服务 [todo menglc]
- main: 服务入口 [todo menglc]
-
scripts: 脚本[todo menglc]
-
temp: 临时文件
-
tools: 工具[todo menglc]
使用 windows
编译
部署 [todo menglc]
- 部署
- 启动 etcd
- 启动 gateway
- /impl/bin/start.1.gateway.1.sh
- 启动 login
- /impl/bin/start.1.login.1.sh
- 启动 client.simulator
- tools/client.simulator/client.simulator.exe
[todo menglc]
执行脚本
创建 login
服务
ETCD
gateway 负载均衡服务
- 通过 ETCD 获取本 Group 的 gateway 信息 [todo menglc]
- 用户向负载均衡服务获取一个可用的 gateway 地址 [todo menglc]
gateway: 用户网关
- 本 Group 的 gateway 之间的路由 [todo menglc]
- gateway 路由功能放在配置文件中 [todo menglc]
- 用户 ---TCP---> gateway [todo menglc]
- gateway 心跳检测,断开超时未登录的用户 [todo menglc]
- gateway ---TCP---> login [todo menglc]
- gateway 将消息转发到 login, login 处理消息后,将消息返回给 gateway, gateway 将消息返回给客户端 [todo menglc]
- gateway ---TCP---> logic [todo menglc]
- gateway 将消息转发到 logic, logic 处理消息后,将消息返回给 gateway, gateway 将消息返回给客户端 [todo menglc]
login: 登录 [todo menglc]
logic: 逻辑 [todo menglc]
gateway 将消息转发到logic,logic处理消息后,将消息返回给gateway,gateway将消息返回给客户端
gateway 与 logic 之间通过tcp连接
gateway 增加心跳检测,超时未登录断开连接
gateway 路由功能放在配置文件中
[todo menglc]
所有向总线 channel 发送消息的地方都需要加入 switch case 语句,处理channel full 的情况
Documentation
¶
Source Files
¶
Click to show internal directories.
Click to hide internal directories.