huahua132 blog
  • 首页
  • 归档
  • 分类
  • 标签

如何使skynet.queue 队列环问题暴露

前言队列中的处理函数调用call最终调用到进入相同队列的处理函数,就会形成环队列,call调用在等结果,结果处理函数却在call调用处理后面排队,就形成了互相等的队列死机状态。这种状态是非常严重的,整个队列阻塞,后续进队列的还会持续累计,最终可能因内存不足而宕机。发生事故时,我们通常仅仅会认为是内存泄漏导致。因为出现这种情况,日志上不会有什么反应。可能通过debug_console查看stat能够
2025-06-07
skynet_fly实现思路历程
#skynet_fly实现思路历程

链路追踪的实现

前言使用skynet开发都会启动多个lua服务,如果加上使用远程集群调用的话,服务就更多了,如果被调用方存在多链路,出问题时,无法快速定位问题源头。链接追踪通过给处理添加全局唯一的tag标记,在链路上加上详细的日志,从而达到通过日志快速分析问题的手段。云大为skynet增加过链路追踪,通过使用者主动调用skynet.trace,从而开启一次详细的trace日志。trace_tag是服务地址加递增编
2025-06-04
skynet_fly实现思路历程
#skynet_fly实现思路历程

给demo hallserver大厅服加上队列

前言因为skynet中单进程写业务也容易遇到异步重入问题,写简单个人系统也得警惕此问题,着实让人难受。索性直接用queue包裹一些执行入口,这样简单个人系统没有跨服的业务根本无需考虑此问题了。 实现方案大厅服的业务函数处理通常以player_id为第一参数用来处理玩家个人系统的数据。我们以player_id来区分不同的队列,这样既可以有效利用skynet多携程优势,又能避免个人系统的重入问题。而对
2025-05-24
skynet_fly实现思路历程
#skynet_fly实现思路历程

orm在用户数据日志上的应用

前言游戏服务器免不了需要记录大量玩家数据变化、玩家操作行为、对局战斗数据等等数据的记录以及后台提供数据的查询入口。我遇到过两种做法。 方案一 手动创建数据表结构。 服务器代码拼接sql调用插入。 后台再根据表结构定义写查询页面。 方案二 服务器先写本地json文件。 再选用某种日志采集方案采集日志。 采集那边也需要定义表结构,然后插入数据库。 后台再根据表结构定义写查询页面。 总的
2025-04-09
skynet_fly实现思路历程
#skynet_fly实现思路历程

psub_syn批订阅同步的实现

前言最近有空在给skynet_fly_demo增加用户日志相关,用于记录游戏中产生的日志,比如用户登录登出记录,道具增加,减少记录。我的想法是把用户日志对接上orm,这样写的日志的方便日志服采集后,根据orm设定的字段索引信息直接构建对接数据库的orm,从而实现日志服无需修改就能采集新增或者变更的日志数据。这个过程就遇到一个问题,日志服如何同步到其他服务的日志orm信息。之前的subsyn监听同步
2025-04-03
skynet_fly实现思路历程
#skynet_fly实现思路历程

guid_util guid相关

guid_util function M.fly_guid()描述 fly风格GUID参数 返回值 string 32字节的guid
2025-04-01
skynet_fly API 文档 > 工具函数
#skynet_fly_api

季度更新日志2025-4 2025-6

orm支持创建普通索引orm支持普通索引,并提供相关查询和删除函数。普通索引查询是不会走缓存的,直接先查询数据库。 用户日志支持内置按天写入,保留天数支持。 支持批订阅同步。 fix 订阅同步时滚服热更frpc_client_m同步停止问题。解决contriner_client对象使用不活跃导致旧服务长时间不销毁。删除contriner_client:CMD函数 skynet_util.set_c
2025-04-01
季度更新日志 > 2025
#季度更新日志

orm 新增普通索引

前言对于游戏数据来说,普通索引大多作用在日志数据上,按时间,玩家,道具ID,等等条件分页查询检索,数据量通常很庞大,不同的普通索引可以做联合条件查询,如果想普通索引也加上本地缓存页的话,需要处理好缓存是否失效的判断,对于主键唯一索引来说就是对比本次查询的范围的数据总量和缓存总量是否相等,数据总量失效是其中的某个缓存过期。而普通索引基于范围,分页来查询不太好维护数据总量和缓存总量数据的控制,而且排序
2025-04-01
skynet_fly实现思路历程
#skynet_fly实现思路历程

用户日志

ormadapter_uselog��于写固定每天轮换的用户日志 function M:new(file_path, file_name, flush_inval, max_age)描述 创建日志对象参数 file_path string 日志存放路径 file_name string 文件名 flush_inval number? flush间隔时间 max_age number? 最大保留天
2025-03-28
skynet_fly API 文档 > 日志相关
#skynet_fly_api

orm uselog适配器

ormadapter_uselog function M:new(file_path, file_name, flush_inval, maxage)描述 新建适配器对象参数 file_path string 日志存放路径 file_name string 文件名 flush_inval number? flush间隔时间 max_age number? 最大保留天数 返回值 table o
2025-03-28
skynet_fly API 文档 > 数据库相关
#skynet_fly_api
123…15

搜索

Hexo Fluid
总访问量 次 总访客数 人