2015-07-11 220 views
0

我正在建立一個「通用Tinder」移動應用程序,我必須找到接近我的人(如100米,1公里等)
你們可以告訴我,如果我正朝着正確的方向?
我使用彈性搜索來檢查距離,這真的很酷,有800個用戶,它可以計算出在3ms等半徑100米以內的人。

問題是:同步與流星服務器,然後服務器ElasticSearch服務器的用戶的位置。
在每個客戶端,我看手機的GPS位置,只要稍有改變,我將其稱爲更新蒙戈數據庫也將更新請求發送到ElasticSearch服務器有更新的位置服務器的方法太 (即時通訊使用的地理散列3米精度)
我很關心可伸縮性問題。
1.客戶應該將自己的位置直接發送到ElasticSearch服務器嗎?
如果是這樣,我如何驗證它們?
2.在移動客戶端應用程序中,我應該注意每一次位置變化還是代碼定時算法?
2.關於如何構建這種關係客戶端 - 服務器,您有任何其他方法嗎?
Tinder應用程序流星

謝謝!我真的需要你的幫助,夥計們!

回答

0

我的看法:

  1. 沒有,首先通過一個流星方法發送的位置到MongoDB是最好的
  2. 絕對不爲每一個變化看。我推薦一種計時算法,每5分鐘檢查一次(5分鐘內你能走多遠,除非你坐飛機?)。
  3. 專業開發人員使用的東西叫做exponential backoff。你可以看中,做此類似:1)等待1分鐘,檢查位置變化, b)若沒有變化,等待2分鐘,檢查, c)若沒有變化,等待4分鐘,檢查, d)如果沒有變化,等待8分鐘,然後檢查, e)那麼,你明白了。如果你願意,你可以設置最多16分鐘。 請注意,這是什麼Google uses to handle errors