服務(wù)器基于skynet開源引擎設(shè)計(jì)。skynet基于actor模式的思想旋圆,所有的業(yè)務(wù)邏輯都是通過服務(wù)的形式協(xié)同工作起愈。對于每個連接進(jìn)來的玩家,會起一個agent服務(wù)專門處理這個玩家的業(yè)務(wù)贴膘。除了agent外溪掀,會有很多公共的服務(wù)來處理全局的業(yè)務(wù)。每個服務(wù)都在獨(dú)立的lua虛擬機(jī)環(huán)境下運(yùn)行步鉴。服務(wù)之間通過消息的形式交互揪胃。
其中,wait_*類服務(wù)是會和中心服務(wù)器產(chǎn)生交互的服務(wù)氛琢。和中心服務(wù)器的交互的消息通過normal_cmsg服務(wù)中轉(zhuǎn)喊递。
每個服務(wù)都有一個消息隊(duì)列,服務(wù)通過處理消息來完成業(yè)務(wù)邏輯阳似。
服務(wù)之間通過send或者call發(fā)送消息骚勘,send沒有返回消息,call需要返回消息撮奏。
服務(wù)器大部分的業(yè)務(wù)邏輯在agent內(nèi)完成俏讹,基本的代碼結(jié)構(gòu)和邏輯關(guān)系如下圖所示。