- 百萬(wàn)在線:大型游戲服務(wù)端開發(fā)
- 羅培羽
- 1154字
- 2021-09-17 17:04:54
2.1 下載、編譯、運(yùn)行
Skynet運(yùn)行于Linux操作系統(tǒng),讀者可以購(gòu)買阿里云、騰訊云服務(wù)器,或在自己的電腦上搭建虛擬系統(tǒng)。本書所有代碼都在CentOS 7.7(一種Linux系統(tǒng)發(fā)行版本)64位版本下運(yùn)行,所使用的Skynet版本是1.3.0,所記敘的操作也是基于該版本。如果讀者使用其他版本,可能稍有不同,但差別不大。如果讀者對(duì)Linux系統(tǒng)不甚熟悉,建議先看一些基礎(chǔ)操作的資料。
說明:阿里云服務(wù)器一個(gè)月僅需十多元人民幣,能滿足學(xué)習(xí)之用;經(jīng)過騰訊云的學(xué)生認(rèn)證后,使用120元/年的學(xué)生套餐,也能滿足學(xué)習(xí)之用。
2.1.1 下載和編譯
登錄服務(wù)器,按序輸入如下的三條指令。
git clone https://github.com/cloudwu/skynet.git #下載Skynet源碼 cd skynet #進(jìn)入skynet目錄 make linux #編譯
如果讀者使用的是純凈版的系統(tǒng),需先安裝git、gcc、autoconf等軟件,否則會(huì)提示“-bash: git: command not found”這類錯(cuò)誤。安裝命令如下:
yum install git #git,用于下載Skynet源碼 yum install gcc #用于編譯源碼 yum install autoconf #用于編譯源碼 yum install readline-devel #編譯Lua會(huì)用到
執(zhí)行指令“make linux”會(huì)自動(dòng)下載第三方庫(kù)“jemalloc”,然后執(zhí)行編譯。編譯成功后,skynet目錄下會(huì)多出一個(gè)名為“skynet”的可執(zhí)行文件。運(yùn)行Skynet,能看到如圖2-3所示的需要一個(gè)配置文件的提示。
說明:本書會(huì)采用白色、灰色字體來強(qiáng)調(diào)程序的輸出,白色字體表示相對(duì)重要的部分。在圖2-3中,白色字體代表用戶輸入的內(nèi)容,灰色字體代表程序輸出。

圖2-3 運(yùn)行Skynet
說明:1)yum指令僅適用于CentOS系統(tǒng),如果讀者用的是Ubuntu,請(qǐng)使用apt-get。
2)由于GitHub是國(guó)外網(wǎng)站,如果執(zhí)行g(shù)it clone命令的速度偏慢,讀者也可以登錄https://github.com/cloudwu/skynet,點(diǎn)擊“Clone or download”里的“Download ZIP”將源碼打包下載,再手動(dòng)上傳到服務(wù)器。
3)建議安裝一些常用軟件,比如lrzsz、zip等。
2.1.2 運(yùn)行范例
Skynet包含了不少范例,默認(rèn)的“KV數(shù)據(jù)庫(kù)”很有參考價(jià)值。如圖2-4所示,KV數(shù)據(jù)庫(kù)用于存儲(chǔ)一些鍵值對(duì),比如“hello=world”。當(dāng)客戶端發(fā)送“hello”時(shí),服務(wù)端就會(huì)回應(yīng)“world”。該范例使用了較復(fù)雜的實(shí)現(xiàn)方式,這里暫不探究它的內(nèi)部結(jié)構(gòu)(圖上畫了3個(gè)問號(hào)),僅看它是怎樣運(yùn)行的。

圖2-4 KV數(shù)據(jù)庫(kù)范例
要啟動(dòng)Skynet,需指定一份配置文件。“examples/config”是KV數(shù)據(jù)庫(kù)的配置文件,輸入如下指令可啟動(dòng)它:
./skynet examples/config #啟動(dòng)Skynet(KV數(shù)據(jù)庫(kù)范例)
運(yùn)行結(jié)果如圖2-5所示,輸出的內(nèi)容顯示Skynet依次啟動(dòng)了bootstrap、launcher、cmaster、simpledb、watchdog、gate等服務(wù)。圖中左側(cè)的“:0100000x”代表該條消息由哪個(gè)服務(wù)產(chǎn)生,可以看到,gate服務(wù)(地址為0100000f)監(jiān)聽了8888端口。由于輸出較長(zhǎng),圖中用“......”省略了部分語(yǔ)句。

圖2-5 啟動(dòng)Skynet(KV數(shù)據(jù)庫(kù)范例)
啟動(dòng)服務(wù)端后,接著啟動(dòng)客戶端(對(duì)應(yīng)圖2-4里的手機(jī))。Skynet也包含配套的客戶端范例,位于“examples/client.lua”中(“.lua”代表它是個(gè)Lua程序),可以通過如下語(yǔ)句啟動(dòng)。
lua examples/client.lua #啟動(dòng)客戶端
Skynet編譯后,會(huì)包含Lua程序,此程序位于“3rd/lua/lua”中。如果服務(wù)器沒有安裝Lua,或者Lua版本小于5.3,可以用如下命令啟動(dòng)客戶端。
./3rd/lua/lua examples/client.lua #啟動(dòng)客戶端
如果“3rd/lua/lua”不存在,讀者還可以進(jìn)入“3rd/lua”,執(zhí)行“make linux”指令,將Lua程序編譯出來。
客戶端的運(yùn)行結(jié)果如圖2-6所示,輸入hello,會(huì)得到服務(wù)端的回應(yīng)“result world”。

圖2-6 KV數(shù)據(jù)庫(kù)配套的客戶端運(yùn)行結(jié)果
- Android項(xiàng)目開發(fā)入門教程
- Scala Design Patterns
- AngularJS Web Application Development Blueprints
- 看透JavaScript:原理、方法與實(shí)踐
- Python計(jì)算機(jī)視覺編程
- JSP開發(fā)案例教程
- 微信小程序項(xiàng)目開發(fā)實(shí)戰(zhàn)
- C++面向?qū)ο蟪绦蛟O(shè)計(jì)習(xí)題解答與上機(jī)指導(dǎo)(第三版)
- Spring核心技術(shù)和案例實(shí)戰(zhàn)
- RubyMotion iOS Develoment Essentials
- 交互式程序設(shè)計(jì)(第2版)
- Visual C++開發(fā)寶典
- SFML Game Development
- React and React Native
- JBoss AS 7 Development