首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在服务器端管理多个移动设备用户?

如何在服务器端管理多个移动设备用户?
EN

Software Engineering用户
提问于 2012-09-30 13:56:44
回答 1查看 233关注 0票数 2

我建立了一个社交Android应用程序,用户可以通过GPS定位看到周围的其他用户。刚开始的时候,我的用户数量很低,但现在我的用户数量越来越多(每天大约有1500 +100个用户),这就暴露了我设计中的一个主要问题。

在我的中,我有一个静态的HashMap,它保存了所有的用户配置文件对象,目前是1500个,随着更多的用户注册,这个数目还会增加。

我为什么要这么做?

每个向他周围的用户提出请求的用户都会将他的GPS与其他用户进行比较,并检查他们是否在他的10公里半径内。这种情况平均每五分钟发生一次。因此,我不能每次都从db获取用户,因为GAE读写操作配额将使我分崩离析。

这个设计的问题是?

随着用户数量的增加,Hashmap每4-6小时就会变成null,我认为这一次越来越短,但我不确定。每次我检测到数据库变为null时,我都会通过重新加载数据库中的用户来修复这个问题,但是这会导致DOS对我的用户造成30秒的影响,所以我正在寻找更好的解决方案。

我猜这是因为hashmap的大小。我说的对吗?

有人建议我使用空间数据库,但这意味着我不能再使用GAE了,这意味着我需要重新构建我的大型服务器,并丢失我现有的DB。

我能用现有的工具做些什么吗?

谢谢。

EN

回答 1

Software Engineering用户

发布于 2012-10-24 19:33:06

有几件事,我可能会建议,但不知道更多的细节,你的情况。在许多方面,正如所述的问题类似于一个常见的碰撞检测问题。

  1. 减少决议。在某种程度上,您已经采取步骤,通过限制更新速度(5分钟)来降低分辨率。第二种方法是在一个特定的点上使用一个“包围框”的概念来识别一个区域内的亲密关系或附近的用户。在您的情况下,每个用户将被分配一个周围的矩形。如果两个用户的矩形相遇或交织在一起,那么它们就足够接近于在同一个位置呈现/显示,并且简单地用更精确的坐标对每个标记进行注释。
  2. 您使用的数据结构可能没有问题,但可能需要调整。很难说,如果没有看到某种程度的实施。一个可能的选择,通常与包围框概念很好地工作,是一个四叉树;特别是考虑和处理包含的对象的周期性运动。
  3. 缓存策略。如果您没有将缓存划分为区域或更高级别的四角体,则可能需要考虑它。这样,当更新确实发生在您设置的间隔时,您只需更新a)有用户和( b)用户已经移动的部分/选定区域的缓存。
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/166811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档