摘要: 查看存储空间 先看看根目录下面 du -sh /* 下面这条命令就是显示所有隐藏文件和非隐藏文件的大小并根据占用空间排序的语句 du -sh .[!.]* * | sort -hr 看磁盘使用情况 df -h Linux中zip压缩和unzip解压缩命令详解 把/home目录下面的mydata目录压 阅读全文
posted @ 2018-06-21 13:49 _raindrop 阅读(203) 评论(0) 推荐(0) 编辑
摘要: skynet 是一个为网络游戏服务器设计的轻量框架,采用单进程,多线程架构。 底层是c,中间层和上层都是lua。基于actor模型,使用消息队列进行内部通信。 简单说,可以把 skynet 理解为一个简单的操作系统,它可以用来调度数千个 lua 虚拟机,让它们并行工作。每个 lua 虚拟机都可以接收 阅读全文
posted @ 2018-06-20 18:16 _raindrop 阅读(1579) 评论(0) 推荐(0) 编辑
摘要: skynet跟mq扮演的角色类似,每个skynet进程维护了一个MQ,会dispatch msg到每个skynet_context的私有mq。有skynet就没必要再在自己项目里引入MQ了。 skynet 支持两种集群模式。 master/slave 模式(局域网) 当单台机器的处理能力达到极限后, 阅读全文
posted @ 2018-06-20 16:44 _raindrop 阅读(879) 评论(0) 推荐(0) 编辑
摘要: skynet有两种方法热更新lua代码,clearcache和inject,文章分别对这两种方法做说明。 clearcache热更新 讲这个前,先说明下skynet代码加载的事情。因为skynet的每个服务都是一个独立的lua虚拟机,对于同一份lua代码,N个服务就要加载lua文件N次,所以,sky 阅读全文
posted @ 2018-06-20 15:30 _raindrop 阅读(2773) 评论(0) 推荐(0) 编辑
摘要: skynet 自带了一个控制台服务,可以很方便获取和调试 skynet 运行数据,而且可以热更新代码,所以,弄明白skynet控制台管理可以让你更好地使用skynet,甚至改进这个控制台服务,以满足不同业务需求。 这个服务默认不会启动,需要你手动启动它,如下: skynet.newservice(" 阅读全文
posted @ 2018-06-20 15:25 _raindrop 阅读(1299) 评论(0) 推荐(0) 编辑
摘要: skynet中有http server和http client的代码,用来支持http访问。在分析http之前,要先看一下url库。文件位于skyet/lualib/http/url.lua。 skynet 从 v0.5.0 开始提供了简单的 http 服务器的支持。skynet.httpd 是一个 阅读全文
posted @ 2018-06-20 14:22 _raindrop 阅读(946) 评论(0) 推荐(0) 编辑
摘要: skynet启动流程 skynet程序只有skynet-src目录,./skynet ./example/config启动skynet_main.c读取配置文件,设置环境变量,调用skynet_start.c的skynet_start函数 skynet_start函数初始基础服务,调用_start函 阅读全文
posted @ 2018-06-20 14:18 _raindrop 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 之前已经说过skynet的是做什么的,现在开始从模块上研究skynet的源码。 skynet各层表现 从上大概就清楚skynet的“内部” 而skynet源码目录结构如下: 3rd:第三方代码,有lua和jemalloc等。 lualib:使用lua写的库 lualib-src:使用C写并封装给lu 阅读全文
posted @ 2018-06-20 14:12 _raindrop 阅读(3149) 评论(0) 推荐(0) 编辑
摘要: 消息队列mq 消息队列是skynet的核心功能之一,它的功能说白了就是入队出队,先进先出,这个数据结构都有讲过。源码实现在skynet_mq.h和skynet_mq.c中。 skynet的消息队列实际上是有两种,一种是全局消息队列,一种是服务消息队列。每个服务都有自己的消息队列,每个服务消息队列中都 阅读全文
posted @ 2018-06-20 14:08 _raindrop 阅读(651) 评论(0) 推荐(0) 编辑
摘要: skynet刚开始是单进程多线程的,它是由一个一个的服务组成的。在skynet上做开发,实际上就是在写服务。服务与服务之间通过消息队列进行通信。 做为核心功能,Skynet 仅解决一个问题: 把一个符合规范的 C 模块,从动态库(so 文件)中启动起来,绑定一个永不重复(即使模块退出)的数字 id 阅读全文
posted @ 2018-06-20 11:48 _raindrop 阅读(3633) 评论(0) 推荐(0) 编辑