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