基于leaf多进程分布式游戏框架
站在巨人肩膀,核心部分基于leaf,一个经典开源游戏服务。但leaf为单进程多模块模型,无法进行分布式部署。本项目即在此基础上做了扩展,实现了多进程分布式部署,业务模型为本人之前做过的一个项目。定义为分布式框架,适用所有分区、分房间类游戏。
mango:https://github.com/GoldBaby5511/mango.git mango-client:https://github.com/GoldBaby5511/mango-client.git mango-user-center:https://github.com/GoldBaby5511/mango-user-center.git mango-admin:https://github.com/GoldBaby5511/mango-admin.git mango-admin-ui:https://github.com/GoldBaby5511/mango-admin-ui.git
采用网状拓扑结构,中心center服务负责服务治理,除了日志服之外,其他所有服务两两互联且向center服务注册管理。
启动:右键scripts\windows目录下Startup.bat已管理员身份运行,若无权限问题会依次编译并运行各个服务
创建:右键scripts\windows目录下CreateNewService.bat已管理员身份运行,输入新服务名,将会在cmd目录下创建对应新服务目录及模板源文件
清理:右键scripts\windows目录下Cleanup.bat已管理员身份运行,将删除cmd内各服务内生成的中间及log文件
chmod +x Cleanup.sh
chmod +x CreateNewService.sh
chmod +x Shutdown.sh
chmod +x Startup.sh
#执行命令,验证服务是否启动成功
ps -aux
#成功的话会有十个进程,类似如下,若有未启动成功进程,可转入cmd对应服务目录下查看日志
sanfeng 12248 15.3 0.7 1015440 29876 pts/1 Sl 11:41 0:02 ./logger -Type=1 -Id=1
sanfeng 12333 0.1 0.3 906492 11916 pts/1 Sl 11:41 0:00 ./center -Type=2 -Id=50
sanfeng 12417 1.1 0.6 1467784 23432 pts/1 Sl 11:41 0:00 ./config -Type=3 -Id=60
sanfeng 12507 18.4 7.4 1417264 286952 pts/1 Sl 11:41 0:02 ./gateway -Type=4 -Id=100
sanfeng 12593 4.9 0.5 1080816 20128 pts/1 Sl 11:41 0:00 ./lobby -Type=5 -Id=70
sanfeng 12673 2.7 0.4 990388 17028 pts/1 Sl 11:41 0:00 ./list -Type=6 -Id=80
sanfeng 12764 2.5 0.4 1055672 15468 pts/1 Sl 11:41 0:00 ./property -Type=7 -Id=90
sanfeng 12851 1.9 0.5 941548 21116 pts/1 Sl 11:41 0:00 ./table -Type=8 -Id=1000
sanfeng 12942 5.0 0.6 1146420 25668 pts/1 Sl 11:41 0:00 ./room -Type=9 -Id=2000
sanfeng 13025 20.3 10.9 1627632 421024 pts/1 Sl 11:41 0:02 ./robot -Type=10 -Id=3000
windows下可能存在权限问题,导致脚本运行失败,若出现该类情况则可手动编译运行。
.\logger -Type=1 -Id=1
.\center -Type=2 -Id=50
.\config -Type=3 -Id=60
.\gateway -Type=4 -Id=100
.\lobby -Type=5 -Id=70
.\list -Type=6 -Id=80
.\property -Type=7 -Id=90
.\table -Type=8 -Id=1000
.\room -Type=9 -Id=2000
.\robot -Type=10 -Id=3000
服务启动完成后,robot会默认创建1000用户模拟客户端行为,连接网关-->登录-->报名-->举手-->游戏。起始用户数量可配,robot-3000.json 文件 "机器人数量"字段
docker build --file ./build/package/Dockerfile.center --tag mango/center .
docker build --file ./build/package/Dockerfile.config --tag mango/config .
docker build --file ./build/package/Dockerfile.gateway --tag mango/gateway .
docker build --file ./build/package/Dockerfile.logger --tag mango/logger .
docker build --file ./build/package/Dockerfile.lobby --tag mango/lobby .
docker build --file ./build/package/Dockerfile.list --tag mango/list .
docker build --file ./build/package/Dockerfile.property --tag mango/property .
docker build --file ./build/package/Dockerfile.table --tag mango/table .
docker build --file ./build/package/Dockerfile.room --tag mango/room .
docker build --file ./build/package/Dockerfile.robot --tag mango/robot .
docker network create mango
docker run -d --name="logger" --network mango mango/logger
docker run -d --name="center" --network mango mango/center
docker run -d --name="config" --network mango mango/config
docker run -d --name="lobby" --network mango mango/lobby
docker run -d --name="list" --network mango mango/list
docker run -d --name="property" --network mango mango/property
docker run -d --name="table" --network mango mango/table
docker run -d --name="room" --network mango mango/room
docker run -d --name="robot" --network mango mango/robot
docker run -d -p 10100:10100 --name="gateway" --network mango mango/gateway
最终目的不仅是一套完整的服务框架,同时可以将是某些特定业务直接的解决方案。
mango(一):杂谈项目由来:https://blog.csdn.net/weixin_42780662/article/details/122006434
mango(二):架构:https://blog.csdn.net/weixin_42780662/article/details/122172058