logpath = "."
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main" -- main script
bootstrap = "snlua bootstrap" -- The service for bootstrap
standalone = "0.0.0.0:2013"
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
lualoader = "lualib/loader.lua"
-- preload = "./examples/preload.lua" -- run preload.lua before every lua service run
snax = root.."examples/?.lua;"..root.."test/?.lua"
-- snax_interface_g = "snax_g"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"

以上是配置文件:

skynet会首先启动C服务 logger 负责记录之后的服务中的Log输出

bootstrap是skynet运行的第二个服务,默认的 bootstrap 配置项为 "snlua bootstrap" ,这意味着,skynet 会启动 snlua 这个服务,并将 bootstrap 作为参数传给它。snlua 是 lua 沙盒服务,bootstrap 会根据配置的 luaservice 匹配到最终的 lua 脚本。如果按默认配置,这个脚本应该是 service/bootstrap.lua

接下来在bootstrap 脚本会启动launcher,根据harbor即节点数量(最多255个)来判断是否单节点模式

然后根据standalone来以多进程的模式使用skynet

决定当前节点是否是主节点,主节点需要开启一个控制中心,和其它节点交互

通常standalone和master地址端口一样,开启cmaster之后 开启cslave服务 两个服务还负责同步 skynet 网络中的全局可见的服务名字

master在这个地址上监听(master-slave(1:n),控制节点-工作节点)

控制节点(也可以同时是工作节点)上需要运行一个master服务

每个工作节点上需要运行一个slave服务(按照standalone配置主动连接master,等待已有slave对自己的连接)

所有需要跟其他节点通信的节点都要运行一个harbor服务

如果是多节点模式,对于 master 节点,需要启动 cmaster 服务作节点调度用。此外,每个节点(包括 master 节点自己)都需要启动 cslave 服务,用于节点间的消息转发,以及同步全局名字。

接下来在 master 节点上,还需要启动 DataCenter 服务。

然后,启动用于 UniqueService 管理的 service_mgr 。

最后,它从 config 中读取 start 这个配置项,作为用户定义的服务启动入口脚本运行。成功后,把自己退出。

这个 start 配置项,才是用户定义的启动脚本,默认值为 "main"

接下来就是lua脚本了 下面就是luaAPI的使用了

https://github.com/cloudwu/skynet/wiki/LuaAPI

skynet的流程1的更多相关文章

  1. skynet启动流程及调用服务

     3.基本原理 3.1启动流程  1.skynet-src/skynet_main.c 这个是main()函数所在,主要就是设置一下lua的环境.默认的配置.打开config配置文件,并修改默认配置. ...

  2. skynet的流程2

    http://blog.csdn.net/xiarendeniao/article/details/38613161 http://www.jiandan.ren/2015/06/skynet-hel ...

  3. 转:云风skynet服务端框架研究

    转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sky ...

  4. skynet启动过程_bootstrap

    这遍摘自skynet 的wiki skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点.本文描述了 skynet 节点的启动流程. skynet 节点通过运行 skynet 主程 ...

  5. Skynet:特性收集

    基于云风的 blog,收集 skynet 的特性以便将来在代码中一一验证. “ ... ” 部分节选自云风的 BLOG. 1. 基于 Erlang-Actor 模式的 C 实现 “把一个符合规范的 C ...

  6. skynet newservice API参考

    local skynet = require("skynet") skynet.start(start_func) c服务snlua启动后执行的第一个lua文件里面的主逻辑必定是s ...

  7. skynet1.0阅读笔记2_skynet的消息投递skynet.call

    为了了解 skynet.call 的调用过程,需要先看看 skynet的队列是如何把包分到不同工作线程的.看下图 查看 global_queue 的skynet_globalmq_push和skyne ...

  8. skynet coroutine 运行笔记

    阅读云大的博客以及网上关于 skynet 的文章,总是会谈服务与消息.不怎么看得懂代码,光读这些文字真的很空洞,不明白说啥.网络的力量是伟大的,相信总能找到一些解决自己疑惑的文章.然后找到了这篇讲解 ...

  9. skynet源码阅读<5>--协程调度模型

    注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入.    作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和sky ...

随机推荐

  1. SSM三大框架整合详细教程

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  2. Chapter 02:复合 VS 继承

    复合优先于继承,继承是实现代码重用的有力手段,并不是所有情况都适用,使用不当会导致软件变得很脆弱.与方法调用不同的是,继承打破了封装性. 总而言之,组合和继承,都能实现对类的扩展.但是要分具体情况用哪 ...

  3. 第一局 ThreeJS-开始

    本文介绍ThreeJS使用的大体流程.(由于水平有限,请大家多多指教.) 1.ThreeJS下载和引入: (1)下载地址:https://github.com/mrdoob/three.js/arch ...

  4. JS常见操作

    //第一篇博文,希望大家多多支持 /***** BasePage.js 公共的 脚本文件 部分方法需引用jquery库 *****/ //#region 日期操作 //字符串转化为时间. functi ...

  5. MYSQL 插入二进制数的 2 种方法。

    方法 1.insert into TableName set column =''; 方法 2.insert into TableName .... values(.....); ---------- ...

  6. SQL Server 内存开销分析

    第一步: 每一类资源用了多少内存. select          clerks.type,         sum(clerks.virtual_memory_reserved_kb) as Res ...

  7. 加密芯片ALPU

    加密芯片ALPU 纽文微电子(上海)有限公司 n  公司简介 NEOWINE是一家半导体开发公司,2002年6月成立于韩国,于2011年在中国设法人;  研发总部位于韩国京畿道,并在上海.深圳设办事处 ...

  8. Java缓存

    Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定 ...

  9. OpenSuSE查看指定软件包是否安装(OpenSuSE使用RPM作为默认的软件包维护管理工具)

    suse 是 zypper se xxxxx 是搜索软件包 (查看已经安装的 软件包是否已经安装)

  10. cocos2d-x 打包工具用Shell 还是 用 Python

    功能上说两种脚本都可以完成工作.但是跨平台开发用Shell意味着脚本要写两套.Macosx 的bash 和window bat.如果用python写一套就可以了.