棋牌开发  

棋牌游戏开发之服务端设计

发布日期:2017-11-22

  棋牌游戏的服务端设计。这篇文章简单的概述单台服务器设计方案,此文章针对棋牌游戏开发入门的同学。

  开发背景: 1、斗地主,麻将等游戏的服务端

  2、使用golang作为开发语言

  存储方案:

  1、玩家数据存储在mysql中,登陆的时候拉取到redis,后续操作全都操作redis中的数据,redis中的数据按照需要定时同步到mysql。

福建快3官网  2、牌局热数据存储在进程内存,目前使用结构体存储,这个可能导致进程挂掉,所有玩家断线,且无法恢复牌局数据

  3、部分日志数据存储在文件中,如下注记录,玩家登陆记录,牌局记录等,主要用于数据分析

  协议:

  使用websocket,因为客户端用的是js,为了方便,选择websocket作为通讯协议。

  具体:

  1、游戏逻辑使用单协程模式,使用一个channel作为游戏逻辑的顺序执行控制,进而不在使用lock,使游戏控制清晰、不易出错。

  2、对于单个用户,开启一个收信息协程(使用websocket的,不需要新开),一个发信息协程(需要新开),这样充分利用cup的多核能力。

  3、游戏提供中心服,管理全局数据

  4、游戏提供socket管理,管理所有用户的连接数据

  5、游戏提供通知服,用户发送各种通知,及提供http服务

  6、游戏提供各种具体的游戏逻辑处理模块,用于控制和处理游戏操作。

  7、提供im模块,管理和转发各种聊天

  以上是简单的概括一下,具体的逻辑稍微复杂点,最近正在重构服务端,添加网关,防止逻辑服遭到攻击,

  把各个模块独立开来,防止一个模块出问题导致整个服务器挂掉。

以上又雪狼网络整理发布