• 2024-10-27skynet的cluster集群
    集群的使用现在的游戏服务器框架中,分布式是一种常见的需求。一个游戏服务器组通常可以分成网关服务器、登录服务器、逻辑服务器、跨服服务器等等。在skynet中,我们可以通过cluster来组建一个集群,实现分布式的部署。示例我们先来看一个简单的例子,在这里我们实现了两个skynet结点
  • 2024-09-30message_queue
    学习过程中,我发现了一扇新的世界,Thecstandardmanual这里记录文件skynet_mq.handskynet_mq.c的阅读结果.消息队列1.为什么用队列?因为消息需要先入先出(FIFO).剩下几个问题:如何自己在代码中也使用自旋锁,请写一个示例代码。次级消息队列(messagequeue)中的字段
  • 2024-09-29skynet框架:批量服务管理方案
    skynet很经典的用法是节点内会有批量的服务跑相同的模块逻辑。服务的生命周期管理显然是跟业务强关联的,需要根据实际业务对应做适配的生命周期管理方案。显然最直接的方案就是服务常驻,跟进程的生命周期同步,当服务的数量级不大时,认为消耗可控,方案是适用的,也避免过度设计。这里想谈
  • 2024-08-18skynet的消息发送:send和call
    skynet是一个轻量级的游戏服务器框架。skynet的核心是服务,服务之间通过消息来通信,消息的来源主要有:定时器网络服务之间的调用(skynet.send或skynet.call)skynet.send和skynet.call假设我们有两个服务A和B,A发了两条消息给B:这里skynet.send和skynet.call的主要区别,在于c
  • 2024-07-29skynet 实操篇
    文章目录概述demo启动文件skynet_start配置文件main.luastart函数thread_workerskynet_context_message_dispatchskynet_mq_popdispatch_message小结概述上一篇写完skynet入门篇,这一篇写点实操性质的。demo对于一个开源框架,大部分都有他们自己的demo。先来看下这
  • 2024-07-27skynet热更新之inject
    游戏服务器的热更新是一种常见的需求,skynet可以通过inject的方式,来修改一个服务的消息处理函数,达到热更新的效果。skynet内置服务debug_consoleskynet自带了一个调试控制台服务。inject注入代码需要先启动这个服务。skynet.newservice("debug_console","127.0.0.1","9666")
  • 2024-07-12skynet框架:日程表服务
    实现一个日程表服务(crontab),支持服务启动自动对齐系统时间,以秒为单位检查触发定时任务(task);以服务(同节点)为单位注册定时任务方式:1)以自然时间字符串方式:2024-01-0100:00:002)以定时间隔方式:每秒/每分/每时/每天/每周/每月/每年取消指定定时任务;定时任务触发逻辑支持超时释放;
  • 2024-07-10THM-Skynet-Writeup
    通过学习相关知识点:攻破Linux目标机器并完成提权操作。部署并渗透目标机器step1使用Nmap扫描端口nmap-p--sC-sV-T4-v10.10.164.81139/445端口开放,可知目标机开启了SMB服务枚举SMB共享smbclient-L\\10.10.164.81获取到一些可能能访问的SMB服务账号:anonymo
  • 2024-05-22skynet.newservice简介:服务的启动
    skynet是一个轻量级的游戏服务器框架。简介在skynet的体系中,服务是一个基础概念。通常,我们使用skynet.newservice来启动一个snlua服务。那么,当我们写下localaddr=skynet.newservice("test")这行代码时,系统是怎么运作的呢?思考一下这些问题:调用skynet.newservice会不会发
  • 2024-05-20skynet框架:单点服务性能优化思路
    skynet框架下的业务开发,单点服务是存在理论瓶颈的。当业务上存在并发请求的场景时,服务会成为性能热点,达到服务的消费瓶颈,出现过载。原则上讨论,当业务需求一个执行单位成为并发热点,那么实现这个执行单位就需要是足够支撑业务上限的方案。基于这个思路,讨论几个优化:解耦;降低过载
  • 2024-05-13skynet框架:并发热点处理方案
    对于关键流程,所有请求都要求返回有效结果,如创建socket连接:functionluasocket:connect() returnsocketcore.open(self.__host,self.__port)end显然外部调用需要获取到正确的socket句柄用于数据交互,当并发调用此接口时,所有调用都需要获取到有效的句柄以保证业务正常;方案
  • 2024-03-30skynet之main服务的启动
    1skynet启动的第一个服务我们知道,skynet以服务(service)为基础,那么,当我们输入指令>skynetexamples/config之后,skynet启动的第一个服务会是什么呢?这一点我们先看看最常用的配置文件,通常会有这么两行:start="main" --mainscriptbootstrap="snluabootstrap" --Theserv
  • 2024-03-30skynet非单点类型节点的管理(一):玩家代理节点
    单个skynet进程,或者说单台机器的承载业务能力是有上限的,对于负责玩家主要业务的节点,横向扩展以提高游戏承载能力是必须的。对于滚服架构,玩家角色与指定业务节点(单服)固定对应,连接游戏业务前通过中央后台获取到指定信息进行连接。承载能力通过新增单服完成,这里我们只对世界服架构做
  • 2024-03-23游戏开发(skynet框架):开服操作接入中央后台
    一个需求:控制游戏单服开服接入中央后台,支持定时(指定时间)、定量(当前已开放最新服的已注册数量)的方式;定时定量开服主要是中央后台功能,游戏服只需要接入控制开服逻辑。那么中央后台怎么通知游戏服;通过http协议;(skynet框架提供了http组件的支持,可以方便快速地搭建起来)对于滚服架构,
  • 2024-03-23skynet框架:关键流程的异常处理思路
    当一个执行流程存在对外调用时,我们讨论如何保证流程的可用和安全;假设流程是关键且强制原子性;--serviceAfunctionmain() step1() skynet.call(serviceB,"lua","step2") step3() returntrueend--serviceBfunctionCMD.step2() ...endcallserviceB动
  • 2024-03-23skynet框架:lua service支持监控告警
    问题场景是:服务A生产大量请求消息call到服务B,服务B瞬间达到消费能力的瓶颈,导致服务A堆积大量的yield状态协程,服务B消息队列堆积大量待处理消息,业务上出现卡顿、超时甚至物理机器内存吃满被瞬间击穿的问题;我们使用云服务器产品部署游戏业务,起因是游戏线上收到反馈在某些时间节点频
  • 2024-03-23skynet框架:跨进程组播实现方案
    存在业务场景,从单点进程(source)批量向集群内其他节点(target)推送消息,目标节点数量可能达三位数。提供一个实现方案:target上开启进程内的组播服务,只负责当前节点的组播推送业务;服务支持接收其他节点的通知消息(目标服务只在所在节点内的组播服务上做订阅等操作,由该组播服务负责管理
  • 2024-03-23skynet框架:量级可控的定时任务管理模块
    存在业务玩法,在单个场景内大量使用定时事件用于触发数据更新。skynet的定时器模块实现已经非常高效,一般不必太担心性能问题,事实上玩法的初版实现正是直接使用框架定时器处理触发。几个方面是期望做得更好的:减少外部消息。框架的定时事件是通过消息机制通知到指定service的,而单
  • 2024-03-23skynet框架:全服广播业务
    存在业务场景,对当前在线玩家发送消息通知。这里将消息生产的服务称为source,目标玩家服务称为target。对单个玩家使用独立的lua虚拟机进行代理,称为agent,承载agent的节点称为user。区分source和target是否存在于相同的skynet节点:如果处于相同的节点,那么只是单服内进行一次进程内
  • 2024-02-27db服务处理请求
    新入门skynet系列视频b站网址https://www.bilibili.com/video/BV19d4y1678X系列博客的大纲处理请求的基本流程尾调用协程调度框架中的三个队列wakeup_queueerror_queuefork_queue协程调度db服务处理main服务发送过来的请求--db.lualocalskynet=require"sky
  • 2023-08-21第一个程序PingPong
    功能需求如图所示,开启两个ping类型的服务ping1和ping2,ping1给ping2发消息,ping2收到回应ping1,ping1收到再回应ping2,不断循环。服务模块Skynet提供了开启服务发送消息的API,必先掌握它们。表2-5列出了Skynet中8个最重要的API,PingPong程序会用到它们。更多API可以参见SkynetAPI
  • 2023-08-21节点和服务
    每个Skynet进程(操作系统进程)称为一个节点,每个节点可以开启数千个服务。不同节点可以部署在不同的物理机上,提供分布式集群的能力。入门精要一节中,运行示例仅开启了一个Skynet进程,它是单节点的服务端系统。每个Skynet节点可以调度数千个Lua服务,让它们并行工作。每个服务都是一个Ac
  • 2023-07-14TryHackMe | Skynet
    TryHackMe|Skynet信息收集nmap枚举,139/445端口开放,可知目标机开启了SMB服务dirsearch扫描Task1Deployandcompromisethevulnerablemachine!枚举SMB共享smbclient-L\\ip或者输入enum4linux-S$ip 密码那里直接按回车就行获取到一些可能能访问的SMB服
  • 2023-05-04查看Java进程启动的详细参数
    问题解决分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动态调整了系统参数。通过jps命令找对对应的pid进程号[root@swk-207~]#ps-ef|
  • 2023-03-30THM-Skynet(天网)
    侦查对靶机进行端口扫描开放有445\文件共享服务,使用nmap枚举该服务共享的文件夹nmap--script=smb-enum-users,smb-enum-shares-p44510.10.46.75枚举出两个重要的目录anonymous、milesdyson也可以使用smbclient-L//10.10.46.75该命令进行枚举访问anonymous任何人都