1. 程式人生 > >Server 框架設計思路分享

Server 框架設計思路分享

框架模型如下:


Server部分分為四部分:Access接入層Dispatcher事件分發層BusinessLogic業務處理層Data資料層

Access接入層

供客戶端接入

Dispatcher事件分發層

從各類事件請求Server(Event.Request) ------>   轉發------>相應的事件處理Server(Event.Response)

BusinessLogic業務處理層

處理相應的業務邏輯

Data資料層:

處理資料

問題一:怎麼從一個Server轉發到另外一個Server?

1.Access.BusinessLogic,Data三層對應Server向Dispatcher註冊(讓Dispatcher知道你是誰)

2.EventMsg傳遞的時候帶上EventMsg.src_type 與Event.src_serverid , 帶上EventMsg.dst_type 與 EventMsg.dst_serverid 以及其它資訊,知道你從哪裡來,要到哪裡去

問題二:怎麼平滑無縫更新一個Server?

1.對於互動極少的Server.殺程序重啟程序即可。如一個配置服務

2.對於快速處理事件的Server ,新程序替換舊程序 , 新老程序同時存在若干秒 (此時新程序處理新事件;舊程序不可以處理新事件,處理完舊事件後退出)。如一個使用者儲存Server

3.對於還在互動,並且將持續互動較久的程序,1.強制不接收新指令,待裡面使用者所有行為完成後退出 2.給個定時器,如最長10分鐘,之後強制退出。在滿足1.2情況之一重啟新程序即可。如一個棋牌類的玩牌Server

問題三:Server是否可以複用?

比如開發棋牌類遊戲,做好了一個德州撲克,再來個鬥牛,再來個扎金花。。。形成模板複用,開發起來很簡單吧

問題四:Server如何實現負載均衡?

1.對於接入層,客戶端隨機接入即可;

2.對於業務邏輯或者資料層,則增加同類型server,分散處理.

問題五:如何處理時間複雜度高的業務?

交個子執行緒處理,處理完後返還給主執行緒。

......

優點:

1.將業務子系統,子模組化,各個模組之間耦合降到最小,相互之間影響降到最小。

2.平滑無縫升級,升級不影響其它模組功能

3.業務和儲存分離

4.某些Server可以模板化,複用程度高。