akka实现文件服务器,GitHub - JaceyRx/JGameServer: 基于Netty 与 Akka 实现的分布式游戏服务器后端...

概览

game.png

模块组织结构

JGameServer

├── game-common --基础公共模块

├── game-db --基础数据库操作模块

├── game-gm-server --Gm服务器模块:作为各服务器的注册中心、提供服务器管理功能

├── game-gateway-server --网关服务器模块:用于请求转发与权限控制,支持分布式部署

├── game-logic-server --逻辑服务器模块:主要游戏业务功能所在处,支持分布式部署

├── game-chat-server --聊天服务器模块:用于聊天数据处理,支持分布式部署

└── game-battle-server --对战服务器模块:对战相关请求处理,支持分布式部署

执行流程

客户端通过 HTTP 请求从GM服务器获取空闲Gateway服务器连接地址

客户端连接网关服务器,长连接由gateway网关服务器维护

Gateway服务器接收客户端请求后,根据协议的不同通过Akka Remote 发送给其他业务服务器处理

协议说明

----------------消息协议格式---------------------

packetLength | rpcNum | errorCode | body

int int int byte[]

协议由四部分组成,前三部分为协议头,用于描述消息,第四部分为消息主体

第一部分:packetLength 4字节 int 类型 用于描述这个数据包的长度

第二部分:rpcNum 4字节 int 类型 用于描述当前消息的协议类型

第三部分:errorCode 4字节 int 类型 用于描述消息的错误类型

第四部分:body n字节 byte[] 类型 用于存储经protobuf序列化过的消息主体

快速开始

1. git clone https://github.com/JaceyRx/JGameServer.git

2. 创建名为 jgame_server 的 Mysql 数据库,并导入 doc/sql 目录下的.sql文件

3. 分别修改各 Server 模块的下的 config.properties (修改gm服务器所在服务器IP与当前服务器IP)

4. 分别修改各 Server 模块的下的 application.yml (修改Mysql的连接地址信息)

5. 分别修改各 Server 模块的下的 redis.properties (修改Redis的连接地址信息)

6. [首次运行]-到 release/ 目录下 运行 build-first-build.bat 首次启动编译脚本

7. 运行 release/ 目录下的 build-server-module.bat 脚本,编译各Server模块

8. 运行 release/ 目录下的 onekey run.bat 脚本,一键启动各服务器

TODO List

独立的登录服务器

独立的注册中心

Gm后台管理Web界面

事件驱动模型的实现

Tips

1. 开发环境是 JDK1.8 高于或低于该版本JDK可能会无法运行

2. 请使用IDEA 打开项目

测试客户端地址

ec12a6659e4667b59b3f5c5345e56ca6.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值