6.Skynet/examples程序分析之Config 配置解析

概述

本文基于 examples 目錄下的配置文件,詳細(xì)介紹 Skynet 框架的配置項(xiàng)及其用法。


一、基礎(chǔ)配置項(xiàng)

配置項(xiàng) 類型 說明 默認(rèn)值
root string 項(xiàng)目根目錄路徑,用于拼接其他路徑 "./"
thread number 工作線程數(shù),根據(jù)CPU核心數(shù)設(shè)置 8

二、日志配置

配置項(xiàng) 類型 說明 示例
logger string/nil 日志服務(wù)名稱,nil 表示使用標(biāo)準(zhǔn)輸出 "userlog" / nil
logpath string 日志文件存放目錄 "."
logservice string 日志服務(wù)類型 "snlua"

說明

  • logger = "userlog" 表示使用用戶自定義日志服務(wù)
  • logger = nil 表示日志輸出到控制臺(tái)

三、節(jié)點(diǎn)(Harbor)配置

配置項(xiàng) 類型 說明 示例
harbor number 當(dāng)前節(jié)點(diǎn)編號(hào),0 表示單節(jié)點(diǎn)模式 0 / 1 / 2
address string 當(dāng)前節(jié)點(diǎn)監(jiān)聽地址 "127.0.0.1:2526"
master string 主節(jié)點(diǎn)地址(harbor > 0 時(shí)必需) "127.0.0.1:2013"
standalone string 獨(dú)立模式監(jiān)聽地址(作為主節(jié)點(diǎn)時(shí)使用) "0.0.0.0:2013"

Harbor 模式說明

  • harbor = 0:?jiǎn)喂?jié)點(diǎn)模式,無(wú)需 master
  • harbor > 0:分布式集群模式,需要配置 master 和 address

四、啟動(dòng)配置

配置項(xiàng) 類型 說明 示例
start string 啟動(dòng)入口腳本(不含 .lua 后綴) "main" / "cluster1"
bootstrap string 引導(dǎo)服務(wù)命令 "snlua bootstrap"

五、路徑配置

配置項(xiàng) 類型 說明 示例
cpath string C 服務(wù)動(dòng)態(tài)庫(kù)路徑 root.."cservice/?.so"
luaservice string Lua 服務(wù)搜索路徑(分號(hào)分隔) root.."service/?.lua;..."
lualoader string Lua 模塊加載器腳本 "lualib/loader.lua"
lua_path string Lua 模塊搜索路徑 root.."lualib/?.lua;..."
lua_cpath string Lua C 模塊搜索路徑 root.."luaclib/?.so"
snax string SNAX 服務(wù)搜索路徑 root.."examples/?.lua;..."

六、擴(kuò)展配置

配置項(xiàng) 類型 說明 示例
preload string 每個(gè) Lua 服務(wù)啟動(dòng)前預(yù)加載的腳本 "./examples/preload.lua"
cluster string 集群配置文件路徑 "./examples/clustername.lua"
daemon string 守護(hù)進(jìn)程模式下的 PID 文件路徑 "./skynet.pid"
snax_interface_g string SNAX 全局接口定義表名 "snax_g"

七、配置文件語(yǔ)法

7.1 變量定義

root = "./"
thread = 8

7.2 引用其他配置文件

include "config.path"

7.3 注釋

-- 這是一行注釋
-- daemon = "./skynet.pid"  -- 被注釋掉的配置

八、配置文件示例對(duì)比

配置文件 Harbor模式 主要用途
config 集群從節(jié)點(diǎn)(harbor=1) 標(biāo)準(zhǔn)集群示例
config.c1 單節(jié)點(diǎn)(harbor=0) 集群測(cè)試節(jié)點(diǎn)1
config.c2 單節(jié)點(diǎn)(harbor=0) 集群測(cè)試節(jié)點(diǎn)2(帶cluster配置)
config.handle 單節(jié)點(diǎn)(harbor=0) 帶日志文件輸出
config.login 單節(jié)點(diǎn)(harbor=0) 登錄系統(tǒng)示例
config.mc 集群從節(jié)點(diǎn)(harbor=2) 多播測(cè)試
config.mongodb 單節(jié)點(diǎn)(harbor=0) MongoDB 示例
config.mysql 單節(jié)點(diǎn)(harbor=0) MySQL 示例
config.userlog 單節(jié)點(diǎn)(harbor=0) 用戶自定義日志服務(wù)
config.path - 路徑配置模板(被其他配置引用)

九、典型配置場(chǎng)景

場(chǎng)景1:?jiǎn)喂?jié)點(diǎn)開發(fā)環(huán)境

root = "./"
thread = 4
logger = nil
harbor = 0
start = "main"
bootstrap = "snlua bootstrap"
luaservice = root.."service/?.lua;"..root.."examples/?.lua"
lualoader = "lualib/loader.lua"
cpath = root.."cservice/?.so"

場(chǎng)景2:集群主節(jié)點(diǎn)

root = "./"
thread = 8
logger = "userlog"
harbor = 0
start = "main"
bootstrap = "snlua bootstrap"
standalone = "0.0.0.0:2013"
cpath = root.."cservice/?.so"

場(chǎng)景3:集群從節(jié)點(diǎn)

root = "./"
thread = 8
logger = nil
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main"
bootstrap = "snlua bootstrap"
cpath = root.."cservice/?.so"

十、關(guān)鍵配置說明

10.1 harbor 值的含義

  • harbor = 0:?jiǎn)喂?jié)點(diǎn)模式或集群主節(jié)點(diǎn)
  • harbor > 0:集群從節(jié)點(diǎn),需要配置 masteraddress

10.2 路徑配置中的 root 變量

  • 使用 root 變量可以統(tǒng)一管理路徑前綴
  • 建議始終設(shè)置 root = "./" 作為基礎(chǔ)路徑

10.3 日志輸出選擇

  • 開發(fā)環(huán)境使用 logger = nil(控制臺(tái)輸出)
  • 生產(chǎn)環(huán)境使用 logger = "userlog"(文件輸出)

10.4 線程數(shù)建議

  • 通常設(shè)置為 CPU 核心數(shù)或核心數(shù)的 1.5~2 倍
  • 示例中普遍使用 thread = 8
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容