zoukankan      html  css  js  c++  java
  • skynet的流程1

    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

  • 相关阅读:
    eclipse下切换svn用户
    Netty实现服务端客户端长连接通讯及心跳检测
    Spring Batch系列总括(转载)
    SQL中的Null深入研究分析
    MySQL报错“1366
    Memcache学习php完整一例
    Memcache学习笔记
    递归和迭代区别
    解决textarea 输出有空格问题
    解决mysql安装出现error Nr.1045问题
  • 原文地址:https://www.cnblogs.com/huoxl/p/4619581.html
Copyright © 2011-2022 走看看