线程模型
- 多个线程对应同一个数据队列
- 每个线程对应一个数据队列,可以让一类操作全部放到同一个线程
- 单线程
gateserver
- 客户端所有交互都与gateserver进行
- 可以做成永久,与具体游戏项目无关
dbserver
- 处理数据存储和读取
- 使用rocksdb进行封装
- 采用事务操作:要么全部成功,要么全部撤销
- db底层已经在key级别加锁了
- db服务器可以封装成类似于redis的永久性,不需要新代码维护。(PS:难点是合服,可以考虑提供统一接口,由外部实现这些接口)
gameserver
- 处理玩家私有逻辑,可考虑分线,部署多个gameserver
- 同一个玩家的所有在操作在同一个线程进行
- 线程模型:多线程,每个线程一个数据队列。同一个玩家的交互全在同一个线程进行
deliveryserver
- 处理玩家公共逻辑:帮派、好友等等
- 线程模型:单线程,开发维护简单
logserver
- 所有其他服务器的日志发到logserver,由logserver写文件