流星上的Tinder App

时间:2015-07-11 10:56:24

标签: mobile meteor elasticsearch gps scalability

我正在构建一个“通用火种”移动应用程序,我必须找到离我很近的人(如100米,1公里等)
如果我朝着正确的方向前进,你能告诉我吗? 我正在使用弹性搜索来检查距离,它真的很酷,有800个用户,它可以计算出半径不到100米的人,如3ms。

问题是:将用户的位置与流星服务器和服务器ElasticSearch服务器同步。
在每个客户端上,我观察移动设备的GPS位置,无论何时发生变化,我都会调用更新mongo数据库的服务器方法,并向ElasticSearch服务器发送更新请求以更新其位置 (我使用3米精度的GeoHash)
我担心可扩展性问题 1。客户应该将其职位直接发送到ElasticSearch服务器吗? 如果是这样,我如何验证它们?
2。在移动客户端应用上,我应该关注位置上的每一次更改还是编写一些时序算法?
2. 你对如何构建这种关系客户端服务器有什么其他方法吗?

谢谢!伙计们,我真的需要你的帮助!

1 个答案:

答案 0 :(得分:0)

我的意见:

  1. 不,首先通过Meteor方法将位置发送到MongoDB是最好的
  2. 绝对不要注意每一个变化。我推荐一种定时算法,每5分钟检查一次(除非你在飞机上,否则你能在5分钟内行走多远?)。
  3. 专业开发人员使用名为exponential backoff的内容。你可以想象并且这样做:a)等待1分钟并检查位置变化, b)如果没有变化,请等待2分钟并检查, c)如果没有变化,请等待4分钟并检查, d)如果没有变化,请等待8分钟并检查, e)嗯,你明白了。如果需要,最多可以设置16分钟。 请注意,这是Google uses to handle errors