web game server architecture

黑色的線代表socket長連接,橙色的線代表socket短連接,藍色的線代表數據處理流程


1客戶端發送數據包到boost ASIO server,

2server先將包發送到preprocess模塊處理;這個模塊是和遊戲邏輯關聯的,比如模型協議的包可以直接丟棄,某些協議的包可以跳過php部分的處理等等;由於處理邏輯和遊戲邏輯關聯,所以採用動態鏈接庫方式,以便邏輯更改之後服務器不用重啓;

3大多數的數據包需要發送到php端處理,使用fastcgi協議發送到php-fpm,然後接收回包;此處是短連接,每次發送之前都建立連接,收到回包後斷開連接;

4將php處理之後的包發送到postprocess模塊處理;這個模塊也是和遊戲邏輯關聯的,也是使用動態鏈接庫方式;

5將數據包發送回到客戶端;


其中黃色的方塊代表一個session,一個session裏面包含兩個socket,一個是和客戶端通訊的,一個是和php-fpm通訊的;

如果server到php端可以使用長連接的話,session裏面的和php通訊的socket就可以去掉,改爲一個線程一個socket,可以節省近一半的socket,不過嘗試了很多次長連接都失敗,於是放棄;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章