官术网_书友最值得收藏!

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é)果

主站蜘蛛池模板: 石狮市| 青田县| 筠连县| 伊金霍洛旗| 吴堡县| 西城区| 江口县| 宁陕县| 桑日县| 贡嘎县| 舒城县| 新源县| 墨竹工卡县| 榆林市| 宾川县| 钟祥市| 黑河市| 南郑县| 汉源县| 济南市| 延长县| 洪雅县| 嘉荫县| 旺苍县| 拜泉县| 彩票| 新余市| 弥渡县| 葵青区| 绍兴县| 榕江县| 西青区| 龙游县| 米林县| 南郑县| 金昌市| 青铜峡市| 乐清市| 沂水县| 英德市| 玉溪市|