c s具体通信流程
服务器间的交互
与数据库交互的服务器
玩法服务器
现有的gameserver/battleserver的负载有多少?
几万,battleserver负载均衡
创建一个房间是怎么分配到哪个服务器,有几个业务服务器,创建房间区分到哪个服务器上
gameserver
battleserver 仅仅支持打牌逻辑之类的操作
服务器类型的划分
客户端仅仅和interface之间建立连接 interface和各个服务器之间进行交互
连接服务器、业务服务器
消息的同步
怎么同步到各个客户端,压力比较大的情况怎么处理
netty同步机制
Server结构简述
1网络通信
2业务逻辑
3数据存储
现有的服务器及其职责
1 manageserver
2 authserver 单点服务器,登录验证
3 gameserver
4 clubserver
5 campaignserver
6 pushserver 推送服务器
7 replayserver
8 battleserver 多点服务器 战斗服
9 interfaceserver 多点服务器 网关
为啥要这么多服务器,是否可以一个服务器承担多个角色?
网络通信
通信数据协议使用protobuf进行定义 message管理协议的定义生成,生成客户端使用的协议文件
协议配置文件
req, res
ThreadPool
业务线程池,对于每一个业务任务,按照任务的key,分配到不同的任务组中,多个任务组异步执行,同一个任务组同步执行
网络处理
server之间的通信和客户端和网关之间的通信,都是基于netty框架建立的tcp通信,处理连接的建立和断开,传入和传出数据处理
connection
1 逻辑连接,内部存储netty真是管道信息和获取连接点信息(ip等)和发送消息
2 作为client-interface连接,处理协议加密逻辑
channelhandler
netty中进行报文的编码解码、报文数据压缩解压、自定义协议的编码和加密。
handler分为输入流处理handler、输出流处理handler以及混合handler
服务器主要添加了一下handler 2 3 是netty自带的
1 haproxydecoder 网关服务器专用,由于网关之前有一层高防机器,客户端的消息被高防转发,报文中的ip信息为是高仿机ip,实现透明代码,获取客户端真是ip
2 lengthfieldbasedframedecoder 处理黏包问题
啥叫黏包
3 lengthfieldprepender 附加数据长度,2字节