skynet服务器框架解读
从服务器0基础研究云风的skynet服务器框架,并尝试自己创建一个适用于强联网的游戏服务器
河乐不为
个人独立博客:https://linshuhe1.github.io/
展开
-
Skynet服务器框架(十二) (debug_console)控制台管理
在 skynet 框架中提供了一个控制台服务 debug_console ,用于帮助我们查看 skynet 的一些运行时数据,而且在需要热更代码的时候也需要借助控制台来实现。接下来,我们先看看如何使用控制台,然后在大致看一遍底层的源码实现。工具准备由于启动控制台服务后,需要借助 nc 或 telnet 来远程连接控制台,所需需要确保机器上已安装了此类工具,这里我使用的是 nc 6.40 ,可以先查...原创 2018-03-15 09:29:38 · 5771 阅读 · 1 评论 -
Skynet服务器框架(十一) 看懂 skynet 的 Makefile
Makefile 这个东西最早是在大学学习 Linux 下编写 C 程序的时候接触到的,但是,基本上都是用完就还给老师了。最近也是因为使用 skynet 框架开发服务器,才想起重新拾起这个技能。今天就以 skynet 里面的 makefile 为例,大概解读一遍。什么是 Makefile1. 什么是 make 在了解 Makefile 之前,需要先了解 make ,代码生成可执行文件的过程,会经历...原创 2018-02-27 17:22:50 · 3972 阅读 · 1 评论 -
Skynet服务器框架(十) CentOS 防火墙设置
引言:今天修改了 skynet 服务器的 IP 地址(即 config 文件中的 address 和 master 两项参数,IP 与当前及其的保持一致,端口号为 2017),然后使用一个简单的客户端去连接服务器,结果服务器完全没有收到 Socket 连接请求,客户端也出现了连接超时,猜想应该是 CentOS 中防火墙导致的,在真正排查解决此问题之前,我们先来连接一下 CentOS 7.0 的防火墙原创 2017-08-08 10:48:53 · 2402 阅读 · 0 评论 -
Skynet服务器框架(九) snax框架
什么是 snax 由于 skynet 的 API 还是比较偏底层,为简化服务的编写提供一套简单的 API ,便有了这套 snax 框架,解决的问题: “编写一个 skynet 内部服务,处理发送给它的消息。snax 并不会取代 skynet 原有的 api ,只是方便实现这类简单需求而已。” —— 云风换句话说,snax 就是对 skynet API 的部分封装原创 2017-07-27 17:10:30 · 2722 阅读 · 2 评论 -
Skynet服务器框架(八) 任务和消息调度机制
引言:在我看来,消息和任务调度应该是skynet的核心,整个skynet框架的核心其实就是一个消息管理系统。在skynet中可以把每个功能都当做一个服务,整个skynet工程在执行过程中会创建很多个服务,每个服务相当于一个 ``Actor`` ,是互不依赖并行执行的,但同时也存在服务之间的通信和彼此的任务调用,接下来我们就来看一下skynet中服务之间进行通信的机制。原创 2017-07-15 17:50:19 · 7081 阅读 · 1 评论 -
Skynet服务器框架(七) Lua中调用自定义C库
引言:在skynet中,我们通常使用lua来写业务层的逻辑,并且每个功能模块基本上就是一个运行在沙盒中的lua服务。但是,当需要我们需要开发拓展的库或者进行高性能要求的模块开发时,还是需要考虑在C语言层面来开发一个动态库(.so),并提供可以在lua中调用的接口,然后再lua中调用此C库。原创 2017-05-26 15:32:12 · 5137 阅读 · 1 评论 -
Skynet服务器框架(六) Socket服务源码剖析和应用
引言:如何在skynet框架中使用socket+protobuf。上篇 Skynet服务器框架(五) 使用pbc(protobuf) 我们已经大致了解了如何在Skynet中通过pcb来使用Protobuf,接下来我们开始了解skynet中有关Socket的部分。API几个常用的skynet中的Socket接口:* 输出错误信息: skynet.er原创 2017-05-22 19:43:19 · 8053 阅读 · 0 评论 -
Skynet服务器框架(五) 使用pbc(protobuf)
引言:假如我们要建立的skynet服务器与客户端的连接方式为长连接,且选择了Google的Protobuf来定制我们的网络协议,那么,接下来我们要解决的问题就是:如何在skynet框架中使用socket+protobuf。API几个常用的skynet接口:* 输出错误信息: skynet.error(...)* 获取本地服务句柄方式: sky...原创 2017-04-23 10:24:07 · 15640 阅读 · 6 评论 -
Skynet服务器框架(四) Lua服务创建和启动剖析
前言:之前从Skynet启动过程,解读了skynet的启动部分C语言编写的底层源码,最后成功启动了引导的lua服务bootstrap.lua,接下来我们要尝试自定义一个lua服务,并让它启动起来。bootstrap实现功能:bootstrap.lua源码:local skynet = require "skynet"local harbor = require "skynet.harbor"re原创 2017-04-17 14:13:58 · 10419 阅读 · 0 评论 -
Skynet服务器框架(三) Mac OS X环境安装
Mac os x下安装sky net:安装:相比于Linux系统,Mac系统下安装skynet显然要简单得多,打开Mac的终端,大致步骤如下:先检查本地是否已安装了git工具,假如已经安装:bogon:~ linshuhe$ git --versiongit version 2.8.1通过git将skynet源码克隆到本地:bogon:project linshuhe$ git clone h原创 2017-04-15 19:57:09 · 5768 阅读 · 0 评论 -
Skynet服务器框架(二) C源码剖析启动流程
前言:最近因为要帮别人做一个Mac和Windows平台下都使用的桌面应用,功能很简单,就是一个文本编辑器,所以大致了解了一下跨平台桌面应用开发的框架,知乎上推荐多半是 Electron 和 NW.js,其中 Electron 比较成熟的产品有:Github开发的Atom代码编辑器(已经开源)、微软的Visual Studio Code、facebook的 nuclide 和 slack等。什么是 E原创 2017-04-15 15:15:51 · 13960 阅读 · 0 评论 -
Skynet服务器框架(一) Linux下的安装和启动
简介:Skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。框架核心:根据作者的描述,Skynet的核心功能就是解决一个问题: 把一个符合规范的C模块,从动态库(so文件)中启动起来,绑定一个永不重复(即使模块退出)的数字id做为其 handle 。模块被称为服务(Service),服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用原创 2017-04-13 19:20:01 · 19102 阅读 · 2 评论