前言: 之前从Skynet启动过程,解读了skynet的启动部分C语言编写的底层源码 Skynet服务器框架(二)C源码剖析启动流程,最后成功启动了引导的lua服务bootstrap.lua,接下来我们要尝试自定义一个lua服务,并让它启动起来。 bootstrap实现功能 ...
本文以 skynet 示例 simpledb 为例,讲述 skynet 创建 lua 服务的流程 首先 skynet 中使用skynet.newservice 来创建 lua 服务 skynet.newservice simpledb 实际调用为 skynet.call .launcher , lua , LAUNCH , snlua , simpledb 实际调用为 command.LAUNC ...
2018-06-04 18:09 0 1004 推荐指数:
前言: 之前从Skynet启动过程,解读了skynet的启动部分C语言编写的底层源码 Skynet服务器框架(二)C源码剖析启动流程,最后成功启动了引导的lua服务bootstrap.lua,接下来我们要尝试自定义一个lua服务,并让它启动起来。 bootstrap实现功能 ...
skynet绝大部分服务类型是snlua,它是运行Lua脚本的服务,在用skynet框架上开发游戏服务器时,大部分逻辑都是snlua服务,90%以上只需写Lua代码即可,所以很有必要了解snlua服务相关内容。由于篇幅较多,打算分三篇文章介绍,都写完后再一起发布出去。本篇主要介绍snlua服务 ...
skynet有两种方法热更新lua代码,clearcache和inject,文章分别对这两种方法做说明。 clearcache热更新 讲这个前,先说明下skynet代码加载的事情。因为skynet的每个服务都是一个独立的lua虚拟机,对于同一份lua代码,N个服务就要加载lua文件N次 ...
skynet刚开始是单进程多线程的,它是由一个一个的服务组成的。在skynet上做开发,实际上就是在写服务。服务与服务之间通过消息队列进行通信。 做为核心功能,Skynet 仅解决一个问题: 把一个符合规范的 C 模块,从动态库(so 文件)中启动起来,绑定一个永不重复(即使模块退出)的数字 ...
本篇主要介绍在Lua服务里调用skynet网络层底层接口的流程,Lua层的api主要在lualib/skynet/socket.lua,可参考官方wiki https://github.com/cloudwu/skynet/wiki/Socket。 通过一个简单的例子说明Lua服务是如何最终调用 ...
最近主程更改了数据库的操作方案,由之前的拼写sql脚本转为在mysql端创建好存储过程后,直接调用存储过程。 首先对一个表测试上述过程: 数据库端存储过程:(测试表) CREATE TABLE `randomval` ( `id` int(10) unsigned NOT NULL ...
最近花了一周时间对场景服务进行热点分析,利用以前的火焰图工具做了一点微小的贡献,分享下心得(仓库地址在https://github.com/spin6lock/skynet_systemtap_set)。 Skynet是一个轻量级的多线程在线游戏框架。线程作为worker,从服务的队列中 ...
脚本的热更新的流程都大同小异, 第一步先保存旧代码的块的数据, 第二部加载新的代码块,第三步将旧代码块的局部和全局数据拷贝到新代码块的对应的 变量中。 在服务器热更新中,主要考虑热更的内容是什么, 一般更新分两种,一种是逻辑的更新,一种是变量的值更新。 先谈论第一种,在lua ...