在網絡游戲服務器中,有些通知,世界聊天等信息需要對全服進行廣播,如果每條信息都立即進行全服連接遍歷和發送,不是很合適。所以有必要對這個進行優化。
容器:
我們建立兩個連接的列表。把一個列表稱為未廣播連接列表,另一個稱為已廣播連接列表。
我們建立兩個廣播信息的列表。一個稱為全局廣播信息列表,另一個稱為當前廣播信息列表。
信息發送:
在發送廣播信息的地方,我們把信息直接加入到全局廣播信息列表。
優化方法:
1- 廣播信息觸發邏輯:
定期檢查全局廣播信息列表和當前廣播信息列表,如果全局列表不空且當前列表為空,則從全局列表取定量的待廣播信息,放入當前廣播信息列表。
2- 廣播信息發送邏輯:
當前廣播信息列表不為空時,從未廣播連接列表中取數個連接,將當前廣播信息列表中的信息從連接上發給客戶端,然后把這些連接加入到已廣播連接列表。
直到未廣播連接列表為空,清空當前廣播信息列表,交換未廣播連接列表和已廣播連接列表。
新連接到來:
根據需要,將他們加入到已廣播連接列表和未廣播連接列表。我是推薦加入到已廣播連接列表。防止收到重復的廣播信息。
這樣優化之后,通過調整一次發送的廣播信息的量,和每次廣播的連接個數,就可以有效的降低廣播對服務器的壓力。