饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks
在网络游戏服务器中,有些通知,世界聊天等信息需要对全服进行广播,如果每条信息都立即进行全服连接遍历和发送,不是很合适。所以有必要对这个进行优化。

容器:

   我们建立两个连接的列表。把一个列表称为未广播连接列表,另一个称为已广播连接列表

   我们建立两个广播信息的列表。一个称为全局广播信息列表,另一个称为当前广播信息列表

信息发送:

   在发送广播信息的地方,我们把信息直接加入到全局广播信息列表

优化方法:

   1- 广播信息触发逻辑:
      定期检查全局广播信息列表当前广播信息列表,如果全局列表不空且当前列表为空,则从全局列表取定量的待广播信息,放入当前广播信息列表
   2- 广播信息发送逻辑:
      当前广播信息列表不为空时,从未广播连接列表中取数个连接,将当前广播信息列表中的信息从连接上发给客户端,然后把这些连接加入到已广播连接列表
      直到未广播连接列表为空,清空当前广播信息列表,交换未广播连接列表已广播连接列表

新连接到来:
   根据需要,将他们加入到已广播连接列表未广播连接列表。我是推荐加入到已广播连接列表。防止收到重复的广播信息。



这样优化之后,通过调整一次发送的广播信息的量,和每次广播的连接个数,就可以有效的降低广播对服务器的压力。
posted on 2010-04-28 17:47 饭中淹 阅读(3071) 评论(0)  编辑 收藏 引用 所属分类: 游戏服务器

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理