IOCP模型和EPOLL模型的比較

2022-08-24 16:24:10 字數 1418 閱讀 4584

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操作,只要還有沒有處理的事件就會一直通知.以 來說明問題 首先...