定期地,應用程序將會接收到大量移動對象(大約每秒100,00,000 [100萬])的經度和緯度。 要求是檢測400米範圍內的任何物體,檢測必須在400毫秒(毫秒)內完成。最近的鄰居搜索1到200萬移動對象
因此,每當應用程序接收到具有經度和緯度的任何新對象時,我首先需要將其添加到數據結構中,並檢查數據結構中的任何其他對象是否與400中新添加的對象的距離不超過400米女士。
從我的研究,我有以下2個選項: 選項1: Redis的GEO可以用於上述規定,如果對象的數量較少。但是,對於執行geoadd和georadius查詢的一百萬個對象將花費超過400毫秒,這是不可接受的。將來這些對象可能是每秒200萬。
選項2:使用八叉樹數據結構的,這將提供更好的性能,我認爲它的性能也將降低,同時更新與新對象八叉樹(將需要超過400毫秒的時間更長) 100萬的對象和搜索新對象附近的對象。
我認爲很多關於使用geohash分區數據。示例使用geohash的前綴並將數據保存在redis實例1中,並將其他數據保存在redis實例2中。但是,對於兩個對象在400 m範圍內但在相鄰象限內的情況,將失敗。
問題 有沒有人有任何想法根據經緯度劃分數據,仍然檢測鄰近的物體?或者減少地圖縮小范式中的問題?
任何人都可以提出一種不同的方法,考慮到將來的對象可能是每秒200萬?
你如何收到百萬個物件? –
通過消息隊列接收數百萬個對象 – Nilesh