当前位置:首页 > CN2资讯 > 正文内容

服务器部署逻辑架构 服务器逻辑开发

20小时前CN2资讯



系统层面

  • 通信协议一般是由服务器制定,有几个关键点:
    ①. 变量注明必须和可选字段(required or optional).
    ②. 协议注明请求,返回和推送时机,不要让其他协议阅读者猜测意图。
    ③. 涉及枚举定义一定要专门定义,不要直接在协议里面注释标明。
  • 日志:
    ①. 分类按照级别, debug, info, warn, error分文件夹存储.
    ②. 以小时为单位分文件存储, 每个文件大小限制在500m ~ 1g左右比较好.
    ③. 格式: [MODTAG] + 做了什么,结果如何 + 角色标识(uid + name + account …) + 关键变量以及变化
    [MODTAG] , dowhat, roleInfo, result, key_param_list.
    建议在每个函数开头给全局变量 LOGTAG赋上模块值,在日志函数中直接取这个LOGTAG做tag即可,减少写日志的麻烦。
    ④. 涉及多系统调用,日志要加上调用模块来源标识(src).
  • 为了使回调函数可以热更,注册回调函数的时候不要直接取函数地址,而是写成闭包的形式封装回调函数.(即需要触发回调时,再去寻找回调函数.)
  • 定时器回调,要用pcall或xpcall进行调用处理,以免出现因为报错导致定时器没删除,反复执行超时函数,或因为一个实体报错,导致共享同一定时器的其他处理实体(一个常见的例子就是场景处理)无法处理的问题.

  • 逻辑层面

  • 逻辑功能中,凡是 0->1(制造), 1->n(升级)状态可以合并公用的函数尽量公用,这样检查操作代码(checkOp)也只需要写一个即可。 然后对0->1, 1->n都可以进行同样操作, 也要放在一起去做。前期分开了,后面一定要做优化.
    原则: 分解函数,函数最简化,只做应该做的事情.
  • 先把后端的功能做好,涉及前端推送的问题,如果没想清楚先不纠结,不要混合开发,先标记为优化项(Todo),等自测完毕后再添加即可.
  • 每个功能开发完,一定要及时花上半天时间去检查优化, 效果最高. 优化顺序:
    ①. 逻辑正确性. (是否写错变量, 是否有死循环,循环发奖代码结束是否正确…)
    ②. 日志信息齐全.
    ③. 性能(做cache,算法优化).
  • 频发难找的小bug(例如数据修改后没同步到其他模块),可以在玩家对应模块的online函数执行时做一次数据修复.
  • gm指令不能只依赖于客户端发送,因为一旦客户端登录不上(最常见就是上线模块报错), 就没法发送(如热更文件修复bug,只能重启服务器). 至少要实现通过http携带gm指令到http服务器, 再转发到游戏服务器进行处理.
  • 打开界面获取信息功能,从效率上设计,可以都是客户端登录或打开界面时请求一次所有数据,之后的数据修改就由服务器主动推送.
  • 玩家上线处理函数设计. 上线处理函数会分布在各个功能模块实现,顺序原则:
    ①. 要把模块独立的放在前面, 依赖其他模块的函数放在后面.
    ②. 不要有模块间相互依赖的逻辑,否则要么报错,要么逻辑不正确.
  • 对于一个表存储所有事件,另一个做分类计数用的功能, 推荐用弱表实现。
  • 插件式开关开发模式,面向接口编程, 减少模块之间的耦合。
  • 防刷,先重置条件(记录表数据换到临时表),先扣,再做发奖逻辑.

  • 性能优化:

  • 做缓存. 目的: 减少cpu和io操作。 数据特征: ①. 大对象数据. ②.只读和读频率远远大于写.
  • 存储传输一致. 本地存储与数据传输的数据结构往往有差别,如能把定制成一样,可以空间换时间,避免传输时重建数据的开销。
  • 尽量不做排序加工操作,可以让客户端做则推给客户端,只要保证原始数据正确即可。
  • 一次推送,如发给客户端的数据量太大,可以在玩家上线时做一次推送,待数据有修改时再推送。

  • 代码整洁

  • 多层 if嵌套逻辑,可用临时变量记录符合条件的对象,提取出if嵌套逻辑,到下个处理过程中处理。
  • 过长函数拆分(100行以上), 过长文件拆分(1000行).
  • 特殊做法的函数要写好注释.
  • 重复代码剥离到一个函数.

    • 你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/23517.html

      分享给朋友:

      “服务器部署逻辑架构 服务器逻辑开发” 的相关文章

      CN2到底是什么?如何计算它?

      在全球互联网通信中,CN2(ChinaNetNextGeneration)是一个众所周知的名字。它是中国电信推出的高端IP虚拟专网(VPN)业务,主要服务于对网络质量要求较高的用户,如跨国企业、金融公司以及需要稳定、高速国际访问的个人用户。CN2的出现,为中国用户提供了更高质量的国际互联网连接,同时...

      VPS是什么?全面解析虚拟专用服务器的定义、用途与选择指南

      VPS的定义 VPS,全称Virtual Private Server,中文翻译为虚拟专用服务器。它是一种通过虚拟化技术将一台物理服务器分割成多个独立虚拟服务器的服务。每个VPS都拥有自己的操作系统、存储空间、内存和带宽,用户可以像使用独立服务器一样进行管理和配置。VPS的出现,为用户提供了一种介于...

      VPS CN2:提升网络性能的最佳选择

      在了解VPS CN2之前,我觉得有必要先简单说说VPS究竟是什么。VPS即虚拟专用服务器,是一种利用虚拟化技术将物理服务器划分成多个独立的虚拟服务器。每个VPS都能独立运行操作系统和应用软件,用户可以通过远程方式管理和使用。这给了我们极大的灵活性和自由度,让我可以随时根据需求扩大或缩小资源。 说到V...

      如何开启BBR查询并提升TCP网络性能

      BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种由Google开发的TCP拥塞控制算法,我对它的了解让我感到非常兴奋。BBR旨在通过精确的网络条件监测,以提高传输速度和稳定性。传统的拥塞控制算法往往依赖于丢包率的变化来调整传输速...

      如何使用 Linode Backups 保障数据安全与恢复

      在现代数字世界中,数据的安全性与可恢复性至关重要。Linode Backups 正是为此而生的一项服务。Linode Backups 是 Linode 提供的一项付费服务,旨在自动化用户数据的备份过程,能够让用户更加轻松地管理和恢复数据。对我来说,这项服务让人感到安心,尤其是在处理重要项目时,存在这...

      美国VPS市场分析:选择高性价比服务的指南

      在全球众多VPS市场中,美国VPS市场以其庞大的规模和快速的增长而著称。我总能在网上看到一些关于美国VPS的讨论,许多创业者和开发者都对它们赞不绝口。这一市场的吸引力,首先得益于云计算的迅猛发展。越来越多的企业和个人用户意识到,借助VPS可以更灵活地管理自己的网络资源,满足不断增长的需求。 美国VP...