棋牌游戏Server结构

    特定通信过程
    
    服务器间的交互
    
    服务器与数据库交互
    
    播放服务器
    
    
    现有GAMESEVER 战斗器的负载是多少
    
    数以万计的战斗者负载平衡
    
    
    如何创建一个房间,哪些服务器分配,多少业务服务器创建一个房间,哪些服务器区分
    
    游戏玩家
    
    战斗机只支持像扑克牌和逻辑这样的操作。
    
    
    服务器类型划分
    
    客户端只在接口和接口之间建立连接,并与每个服务器交互。
    
    连接到服务器和业务服务器
    
    
    消息同步
    
    如何同步每一个客户,如何应对更大的压力
    
    
    网络同步机制
    
    
    
    服务器结构简介
    
    1网络通信
    
    2业务逻辑
    
    3数据存储
    
    
    现有服务器及其职责
    
    1管理者
    
    2 AuthServer单点服务器,登录验证
    
    3个游戏玩家
    
    4集群服务器
    
    5活动服务器
    
    6推送服务器推送服务器
    
    7重放服务器
    
    8战斗机多点服务器战斗服
    
    9接口服务器多点服务器网关
    
    为什么我们需要这么多服务器在一台服务器上拥有多个角色
    
    
    网络通信
    
    通信数据协议使用protobuf生成消息管理协议的定义,生成客户端使用的协议文件。
    
    协议配置文件
    
    雷斯
    
    线程池
    
    业务线程池,对于每个业务任务,根据任务的密钥,分配给不同的任务组,异步执行多个任务组,同步执行同一个任务组
    
    
    网络处理
    
    服务器之间以及客户端与网关之间的通信是基于netty框架的TCP通信,它处理连接的建立和断开、传入和传出数据处理。
    
    连接
    
    1逻辑连接,内部存储网络实际上是流水线信息和访问连接点信息(ip等)并发送消息
    
    2作为客户端接口连接,处理协议加密逻辑
    
    通道处理程序
    
    NETY对包进行编码和解码,压缩和解压缩分组,对定制协议进行编码和加密。
    
    汉德勒分为输入流处理处理器、输出流处理处理器和混合处理器。
    
    服务器主要添加了处理器23,这是NETY自己的。
    
    1haproxydecoder网关服务器专用,因为网关前有高防御机器,客户端消息是高防御转发,IP消息的消息是高拷贝机器的ip,透明代码,对客户端的访问实际上是IP。
    
    2长场基础框架处理粘性问题
    
    什么叫粘袋
    
    3 LythFieldPrpEnter附加数据长度,2字节
    
    4 SnabyFrAMEDCODEC压缩/解压
    
    5消息处理器协议分析
    
    客户端接口
    
    字节字节4字节
    消息类型加密类型对象服务器ID协议IDCALBACK协议
    
    接口>服务器
    字节4字节4字节4字节
    消息类型播放器IDCONNITION ID播放器IP协议IDCALBACK PROFL
    
    服务器>接口
    字节4字节4字节
    消息类型连接ID协议IDCALBACK协议
    
    服务器服务器
    字节4字节
    消息类型协议IDCALBACK协议
    
    
    
    
    业务逻辑
    
    网关协议加密
    
    协议加密
    
    C协议的通信内容被加密,加密阶段在C与接口之间,加密原理由客户端发起,当客户端发起的协议被加密时,服务器的响应也被加密,反之亦然。
    
    在客户端与服务器建立连接之后,服务器向客户端返回加密算法类型和加密密钥
    
    当客户端发送的协议未被加密或者加密类型与服务器推送的类型相同时,对协议进行解密,并处理业务逻辑。
    
    3心跳包,客户端不发送加密。
    
    4客户端发送的协议未加密,因此服务器发送的协议未加密。
    
    流程图
    
    
    
    
    协议涉及
    
    SYN
    
    类型加密类型
    
    密钥加密密钥
    
    外部接口描述
    
    客户端建立连接后,将加密信息发送给客户端。
    
    
    
    数据存储ZDB
    
    利马仕官方网
    
    http://www. Limax项目
    
    死锁综述
    
    晁珊2017.11
    现象:由于战斗记录缓存较少,在峰值期间大量的查询战斗记录请求导致缓存失效,并且缓存的线程池拒绝执行错误
    原因:当请求非常密集时,触发RU缓存的前一个请求尚未被执行,而下一个请求再次触发缓存,导致多个线程同时执行任务,在极端情况下导致线程拒绝执行新任务。
    限制:数据缓冲区的数量应该合理设置,以避免频繁缓存缓存。
    
    贵阳2017.11
    现象:在俱乐部声明发布之后,MySQL查询从前一天的1000/秒猛增到2000/秒。
    问题:通过GMT后台向俱乐部添加默认数据,以避免每次查询都使用MySQL
    原因:当MySQL键中不存在select时,将始终执行SQL操作。如果查询非常频繁,将导致MySQL查询的急剧增加。
    限制:在查询数据时,评估查询发生的频率,如果非常频繁,请考虑缺少密钥。
    
    晁珊线记录的17/12/01损失
    性能:贵阳和贵阳的损失数是20~30,而Chaoshan的损失是200。
    原因:与贵阳相比,贵阳在查询作战记录时使用select获取读取锁,没有删除过时的作战记录。
    FIX:同步贵阳代码(查询读取锁,不删除记录;重放数据被分割成新表)。
    
    17/12/19零游戏服务器死锁
    锁:
    持久全球1
    运行时间全球2
    所有领域3
    
    A2:登录(旧用户)
    一百二十三
    D: RoomStateRecordTask(非ZDB锁)
    三十二
    1。首先出现A2 D。
    2。然后A2。
    
    
    17  12 / 20零俱乐部进程消失
    性能:为了解决昨天清晨的死锁问题,临时决定在0打开和关闭白名单以避免死锁,结果在俱乐部服务器进程消失后剩下一分钟
    
    原因:
    使用读锁修改数据,ZDB磁盘是使用读锁访问存储数据,生成要写入数据库的数据,列表数据被修改异常,导致ZDB崩溃。
    
    其他常见情况:
    1。锁序列不一致导致服务器死锁。
    2。自定义ReNeTrtOnLoad锁在业务中,嵌套死锁由调用ZDB锁定期间锁定持有造成的。
    三。列表数据遍历通过访问ZDB锁引起的顺序不一致。
    4。默认设置缓存号和10240条记录。
    5。当用键0查询表中的数据时,即使表中不存在记录,也仍然可以查询数据。
    6。使用LRU缓存表,而不是并发模式(导致内存增长和服务器崩溃)

猜你喜欢

转载自www.cnblogs.com/h5qipaiyuanma/p/9779969.html