iocp模型與epoll模型的比較
iocp(i/o completion port),常稱i/o完成埠。 iocp模型屬於一種通訊模型,適用於(能控制併發執行的)高負載伺服器的乙個技術。 通俗一點說,就是用於高效處理很多很多的客戶端進行資料交換的乙個模型。或者可以說,就是能非同步i/o操作的模型。
三:網路遊戲伺服器注意事項,優化措施
1:io操作是最大的效能消耗點,注意優化餘地很大。
2:演算法資料結構。排序尋路演算法的優化。list,vector,hashmap的選擇。大資料定址,不要考慮遍歷,注意考慮hash.
3:記憶體管理。過載new/delete,記憶體池,物件池的處理。
4:資料的提前準備和即時計算。
5:cpu方面的統計監視。邏輯幀計數(應當50ms以內)。
6:預分配池減少切換和排程,預處理的執行緒池和連線池等。
7:基與訊息佇列的統計和資訊監視框架。
8:cpu消耗排名:第一aoi同步,第二網路發包i/o操作,第三技能/buff判定計算處理,第四定時器的頻率。
9:記憶體洩露檢測,記憶體訪問越界警惕,記憶體碎片的**。
10:記憶體消耗排名:第一玩家物件包括其物品,第二網路資料緩衝。
11:注意32位和64位的記憶體容錯。
12:減少不必要的分包傳送。
13:減少重複包和重拷貝包的代價。
14:建議分緊急包(立刻傳送)和非緊急包(定時輪訓傳送)。
15:頻寬消耗排名:第一移動位置同步,第二物件載入,第三登陸突發包,第四狀態機定時器訊息。
16:客戶端可做部分預判斷機制,部分操作盡量分包傳送。
17:大量玩家聚集時,部分非緊急包進行丟棄。
18:注意資料庫單錶內key數量。
19:活躍使用者和非活躍使用者的分割訪問處理。
20:控制玩家操作對資料庫的操作頻率。
21:注意使用共享記憶體等方式對資料進行安全備份儲存。
22:注意安全策略,對內網進行ip檢查,對日誌進行記錄,任意兩環點內均使用加密演算法會更佳。
23:實時注意對閘道器,資料庫等介面進行監察控制。
24:定時器應當儲存乙個佇列,而非單向定位。
25:九宮格資料同步時,不需要直接進行九宮格的同步,對角色加乙個aoi,基於圓方碰撞原理,拋棄不必要的格資訊,可大幅節省。
26:客戶端做部分的**機制,伺服器檢測時注意時間戳問題。
27:定期心跳包,檢查死鏈結是必要的。
28:為了實現更加負責多種類的ai,ai尋路獨立伺服器設計已經是必須的了。其次需要考慮的是聊天,同步。
29:伺服器內網間可以考慮使用udp。
30:注意所有記憶體池,物件池等的動態擴張分配。
1:以記憶體換取cpu的理念。
2:npc不死理念。(只會disable)
3:動態擴充套件理念,負載均衡理念。
4:客戶端不可信理念。
5:指標資料,訊息均不可信理念。
IOCP模型與EPOLL模型的比較
一 iocp和epoll之間的異同。異 1 iocp是windows系統下使用。epoll是linux系統下使用。2 iocp是io操作完畢之後,通過get函式獲得乙個完成的事件通知。epoll是當你希望進行乙個io操作時,向epoll查詢是否可讀或者可寫,若處於可讀或可寫狀態後,epoll會通過e...
IOCP模型總結
呼叫的步驟如下 抽象出乙個完成埠大概的處理流程 1 建立乙個完成埠。2 建立乙個執行緒a。3 a執行緒迴圈呼叫getqueuedcompletionstatus 函式來得到io操作結果,這個函式是個阻塞函式。4 主線程迴圈裡呼叫accept等待客戶端連線上來。5 主線程裡accept返回新連線建立以...
epoll模型例項
epoll有兩種模式,edge triggered 簡稱et 和 level triggered 簡稱lt 在採用這兩種模式時要注意的是,如果採用et模式,那麼僅當狀態發生變化時才會通知,而採用lt模式類似於原來的 select poll操作,只要還有沒有處理的事件就會一直通知.以 來說明問題 首先...