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