首页 > 其他分享 >skynet框架:量级可控的定时任务管理模块

skynet框架:量级可控的定时任务管理模块

时间:2024-03-23 14:24:27浏览次数:19  
标签:skynet 框架 量级 任务 模块 定时

存在业务玩法,在单个场景内大量使用定时事件用于触发数据更新。

skynet的定时器模块实现已经非常高效,一般不必太担心性能问题,事实上玩法的初版实现正是直接使用框架定时器处理触发。几个方面是期望做得更好的:

  1. 减少外部消息。框架的定时事件是通过消息机制通知到指定service的,而单位时间内能处理的外部消息数量是有限的;
  2. 支持取消定时事件。
  3. 按业务区分定时事件,以支持业务数据分析和阈值告警;

这里讨论一个优化方案;
业务层实现一个定时任务管理模块(crontab),支持业务玩法注册通知任务,使用框架timeout驱动,定时通知crontab进行处理,单次通知消费完所有timeout任务(当前帧)。模块实现:

  1. 单service只使用唯一的skynet.timeout驱动,确保框架定时器消息在单位时间内量级可控;
  2. 模块对象需要是单例(singleton);
  3. 支持业务向模块注册/暂停/取消定时任务;
  4. 单次定时通知处理的任务数量支持阈值告警,这里将量级评估交给业务层负责;
  5. 高可用设计,比如任务执行中trackback、单帧处理任务数量overload、任务回调函数热更等情况需要保证模块稳定且有效

标签:skynet,框架,量级,任务,模块,定时
From: https://www.cnblogs.com/linxx-/p/18091058

相关文章

  • skynet框架:全服广播业务
    存在业务场景,对当前在线玩家发送消息通知。这里将消息生产的服务称为source,目标玩家服务称为target。对单个玩家使用独立的lua虚拟机进行代理,称为agent,承载agent的节点称为user。区分source和target是否存在于相同的skynet节点:如果处于相同的节点,那么只是单服内进行一次进程内......
  • Python常用模块(random随机模块&json序列化模块)
    1.random随机模块返回两数之间的随机数,不包括尾数:random.randrange()importrandomprint(random.randrange(1,10))#3返回两数之间的随机数,包括尾数:random.randint()importrandomprint(random.randint(1,10))#返回1-10之间的一个随机数,包括10#7随机选取0到100间......
  • 使用Django-Simple-Captcha在Django项目加入验证码模块并自定义样式
    在Django项目中加入验证码功能,通常需要借助第三方库,比如Django-Smple-Captch、Django-reCAPTCHA、DEF-reCAPTCHA、Wagtail-Django-ReCaptcha、Django-Friendly-Captcha等。其中,Django-Smple-Captcha是一个流行的选择,它提供了一个简单而强大的Django应用,无需调用第三方API,......
  • maven父子模块统一管理版本号
    背景:在使用Maven多模块结构工程时,版本管理是一件很繁琐且容易出错的事情。每次升级版本号都要手动调整或者通过mvnversions:set-DnewVerion=xx命令去更改每一个子模块的版本号,非常的不方便解决方案:Maven官方文档说:自Maven3.5.0-beta-1开始,可以使用${revision},${sha1......
  • 银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报
    银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报系统版本什么是TTS需求背景环境部署更新系统安装版本包安装完成执行命令测试C#环境下调用语音播报系统版本什么是TTS从文本到语音TTS是“TextToSpeech”的缩写,即“从文本到语音”,是人......
  • 【python】(05)如何python中的logging模块记录日志信息
    系列文章回顾【python】(01)初识装饰器Decorator【python】(02)初识迭代器Iterator【python】(03)初识生成器Generator【python】(04)python中实现多任务并发和并行的区别【python】(05)如何python中的logging模块记录日志信息文章目录一.Logging模块的常用组......
  • 如何用pytorch调用预训练Swin Transformer中的一个Swin block模块
    1,首先,我们需要知道的是,想要调用预训练的SwinTransformer模型,必须要安装pytorch2,因为pytorch1对应的torchvision中不包含SwinTransformer。2,pytorch2调用预训练模型时,不建议使用pretrained=True,这个用法即将淘汰,会报警告。最好用如下方式:fromtorchvision.models.swin_trans......
  • 权限提升-Windows权限提升篇&溢出漏洞&宝塔面板Bypass&CS插件化&MSF模块化
    知识点1、Web到Win系统提权-权限差异原因2、Web到Win系统提权-溢出漏洞(MSF&CS)3、Web到Win系统提权-集成软件(哥斯拉模块Bypass)章节点:1、Web权限提升及转移2、系统权限提升及转移3、宿主权限提升及转移4、域控权限提升及转移基础点0、为什么我们要学习权限提升转移......
  • STM32G431RBT6按键模块04
    按键用法: 短按长按双击/三击按键电平变化:按下为0,弹起为1cubeMX中配置按键引脚并将其设置为上拉 设置定时器,时钟源,分频系数,重装载值 时钟源:InternalClock;Prescaler:79;CounterPeriod:9999; 这样的设置是10ms中断一次使能中断 interrupt.c&&inte......
  • 【Python模块】
    Python模块是一个包含Python定义和语句的文件。模块可以定义函数、类和变量。模块也可以包含可执行的代码。一个模块就是一个包含Python代码的文件,文件后缀是.py。模块可以被其他程序引入(import),以使用该模块中的函数等功能。这也是使用Python标准库的方法。一、Python模......