NettyGameServer 开源项目教程
项目介绍
NettyGameServer 是一个使用 Netty4 实现的手机游戏分布式服务器。它支持 TCP、UDP、HTTP 和 WebSocket 连接,并采用 Protobuf 自定义协议栈进行网络通信。该项目还支持 RPC 远程调用,使用 MyBatis3 进行数据库存储和分库分表,支持异步 MySQL 存储,并在数据库保存时同步更新 Redis 缓存。此外,它还使用 ExcelToCode 工程将 Excel 数据生成 Java 类和 JSON 数据字典,减少了数据字典部分的代码。
项目快速启动
环境准备
- Java 8 或更高版本
- Maven
- MySQL
- Redis
克隆项目
git clone https://github.com/jwpttcg66/NettyGameServer.git
cd NettyGameServer
配置数据库
编辑 src/main/resources/application.properties
文件,配置 MySQL 和 Redis 连接信息。
spring.datasource.url=jdbc:mysql://localhost:3306/netty_game_server
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.redis.host=localhost
spring.redis.port=6379
编译和运行
mvn clean install
java -jar target/netty-game-server.jar
应用案例和最佳实践
应用案例
NettyGameServer 已被多个手机游戏项目采用,特别是在需要高性能和低延迟的游戏场景中表现出色。例如,某大型多人在线角色扮演游戏(MMORPG)使用该服务器框架实现了稳定的服务器架构,支持了数万同时在线用户。
最佳实践
- 性能优化:使用异步事件全局服务和事件分片技术,确保事件逻辑的均衡异步执行。
- 缓存策略:在数据库保存时同步更新 Redis 缓存,减少数据库访问压力。
- 代码生成:利用 ExcelToCode 工程自动生成数据字典,减少手动编写代码的工作量。
典型生态项目
GameExecutor
GameExecutor 是一个用于增加游戏内异步事件全局服务的工程,支持事件分片,确保事件逻辑的均衡异步执行。
ExcelToCode
ExcelToCode 工程用于将 Excel 数据生成 Java 类和 JSON 数据字典,减少数据字典部分的代码编写工作。
RedisGameTransaction
RedisGameTransaction 是一个事务处理模块,用于在游戏服务器中处理复杂的事务逻辑,确保数据的一致性和完整性。
通过以上模块的组合使用,NettyGameServer 提供了一个完整且高效的游戏服务器解决方案。