在网络游戏服务器中,有些通知,世界聊天等信息需要对全服进行广播,如果每条信息都立即进行全服连接遍历和发送,不是很合适。所以有必要对这个进行优化。
容器:
我们建立两个连接的列表。把一个列表称为未广播连接列表,另一个称为已广播连接列表。
我们建立两个广播信息的列表。一个称为全局广播信息列表,另一个称为当前广播信息列表。
信息发送:
在发送广播信息的地方,我们把信息直接加入到全局广播信息列表。
优化方法:
1- 广播信息触发逻辑:
定期检查全局广播信息列表和当前广播信息列表,如果全局列表不空且当前列表为空,则从全局列表取定量的待广播信息,放入当前广播信息列表。
2- 广播信息发送逻辑:
当前广播信息列表不为空时,从未广播连接列表中取数个连接,将当前广播信息列表中的信息从连接上发给客户端,然后把这些连接加入到已广播连接列表。
直到未广播连接列表为空,清空当前广播信息列表,交换未广播连接列表和已广播连接列表。
新连接到来:
根据需要,将他们加入到已广播连接列表和未广播连接列表。我是推荐加入到已广播连接列表。防止收到重复的广播信息。
这样优化之后,通过调整一次发送的广播信息的量,和每次广播的连接个数,就可以有效的降低广播对服务器的压力。