我正在开发多人游戏,我有一个在asp.net
上编写的服务器。游戏用户发送请求到服务器,以找到一个操作系统,并加入某种战斗。for请求可以有一些参数,但也可能没有参数(估计它是最流行的场景),因此发送方应该连接到任何已经发送请求并等待连接的用户。
将所有等待请求存储在线程安全集合中是一个好主意吗?它总是包含相当多的元素(因为为战斗找到匹配非常快),然而,许多线程将尝试一次访问这个集合。为每个N
请求创建不同的集合是个好主意吗?N
的最佳尺寸是什么?或者其他的想法?我的关键问题是快速找到匹配,并且不会破坏服务器性能,即使当前连接的数量非常多。
UPD
我似乎没有很清楚地描述我的问题。所有的战斗信息-参与的用户,在战斗中的行动,胜利者等,都存储在数据库中。我需要的是处理加入战斗的请求(请求可能只包含发送者id和战斗过滤器)。通常,对手几乎会立即被发现,所以不需要存储请求数据(在找到匹配后应该删除它,并且所有的战斗数据都将存储在数据库中),但是,我必须准备好同时处理大量的请求。
发布于 2012-11-04 22:46:19
如果不进入匹配播放器的条件,则在编写web应用程序时,不应将用户会话数据保存在内存中。您的web应用程序可以偶尔被回收,导致您的数据松散。
正如SLaks所说,您应该将这些数据存储在数据库中并从中进行选择。根据用户匹配逻辑,您应该考虑从这条基线优化性能。选择top n users,或者根据所需的条件创建查询。
https://stackoverflow.com/questions/13223696
复制相似问题