前言: 之前從Skynet啟動過程,解讀了skynet的啟動部分C語言編寫的底層源碼 Skynet服務器框架(二)C源碼剖析啟動流程,最后成功啟動了引導的lua服務bootstrap.lua,接下來我們要嘗試自定義一個lua服務,並讓它啟動起來。 bootstrap實現功能 ...
本文以 skynet 示例 simpledb 為例,講述 skynet 創建 lua 服務的流程 首先 skynet 中使用skynet.newservice 來創建 lua 服務 skynet.newservice simpledb 實際調用為 skynet.call .launcher , lua , LAUNCH , snlua , simpledb 實際調用為 command.LAUNC ...
2018-06-04 18:09 0 1004 推薦指數:
前言: 之前從Skynet啟動過程,解讀了skynet的啟動部分C語言編寫的底層源碼 Skynet服務器框架(二)C源碼剖析啟動流程,最后成功啟動了引導的lua服務bootstrap.lua,接下來我們要嘗試自定義一個lua服務,並讓它啟動起來。 bootstrap實現功能 ...
skynet絕大部分服務類型是snlua,它是運行Lua腳本的服務,在用skynet框架上開發游戲服務器時,大部分邏輯都是snlua服務,90%以上只需寫Lua代碼即可,所以很有必要了解snlua服務相關內容。由於篇幅較多,打算分三篇文章介紹,都寫完后再一起發布出去。本篇主要介紹snlua服務 ...
skynet有兩種方法熱更新lua代碼,clearcache和inject,文章分別對這兩種方法做說明。 clearcache熱更新 講這個前,先說明下skynet代碼加載的事情。因為skynet的每個服務都是一個獨立的lua虛擬機,對於同一份lua代碼,N個服務就要加載lua文件N次 ...
skynet剛開始是單進程多線程的,它是由一個一個的服務組成的。在skynet上做開發,實際上就是在寫服務。服務與服務之間通過消息隊列進行通信。 做為核心功能,Skynet 僅解決一個問題: 把一個符合規范的 C 模塊,從動態庫(so 文件)中啟動起來,綁定一個永不重復(即使模塊退出)的數字 ...
本篇主要介紹在Lua服務里調用skynet網絡層底層接口的流程,Lua層的api主要在lualib/skynet/socket.lua,可參考官方wiki https://github.com/cloudwu/skynet/wiki/Socket。 通過一個簡單的例子說明Lua服務是如何最終調用 ...
最近主程更改了數據庫的操作方案,由之前的拼寫sql腳本轉為在mysql端創建好存儲過程后,直接調用存儲過程。 首先對一個表測試上述過程: 數據庫端存儲過程:(測試表) CREATE TABLE `randomval` ( `id` int(10) unsigned NOT NULL ...
最近花了一周時間對場景服務進行熱點分析,利用以前的火焰圖工具做了一點微小的貢獻,分享下心得(倉庫地址在https://github.com/spin6lock/skynet_systemtap_set)。 Skynet是一個輕量級的多線程在線游戲框架。線程作為worker,從服務的隊列中 ...
腳本的熱更新的流程都大同小異, 第一步先保存舊代碼的塊的數據, 第二部加載新的代碼塊,第三步將舊代碼塊的局部和全局數據拷貝到新代碼塊的對應的 變量中。 在服務器熱更新中,主要考慮熱更的內容是什么, 一般更新分兩種,一種是邏輯的更新,一種是變量的值更新。 先談論第一種,在lua ...