要做一個這樣的項目,類似滴滴打車,美團眾包
其實就是同城配送:有新的外帶訂單了,即時推送給訂單附近的配送人員端,配送人員接到單子後配送。
看起來很簡單,但對我這個web開發
的來說有點不知道從何動手,我首先想到的:
配送人員手機的
APP
與伺服器WebSocket
直連,即時將地理位置經緯度上傳給伺服器,伺服器使用記憶體資料庫將位置儲存下來(redis/mongodb
),然後定時循環不斷的偵測新訂單,不斷的計算新訂單附近是否有配送人員,有的話就推送給相應的配送人員。
想法很簡單,可是有幾個問題:
配送人員獲取位置怎麼實時傳給伺服器呢,每隔幾秒鐘嗎,那不像
ajax
一樣了,我想用WebSocket
穩定一些吧,配送人員騎著車總在到處跑的。伺服器用記憶體資料庫存配送人員的位置資訊嗎,但是
redis
支援地理位置索引
嗎,等下查的時候怎麼查,怎麼查訂單附近的配送人員。這會不會產生大量的資料啊,
記憶體資料庫
能實現嗎
我不知道這裡面需要用到哪些知識,猜測應該有這幾種技術:
1: nosql
,內存數據庫
2: 實時通信,多進程,多線程,並發
3: 隊列
,定時程式
,CLI
,後台常駐服務
4:空間索引,空間計算,地理位置索引計算
5: Socket程式設計
,Socket通訊
,Socket推送, ,但是我用web H5
的
Socket能不能行呢,配送人員不一定要用
APP吧,只要
WebSocket穩定就行了(再弱弱的問一句,
ajax行不行)
行不行)
希望有經驗的大神指點一下,不要叫我放棄,可能涉及的知識面我不了解,但是不妨說出來,我去一一學習,起碼知道這個裡面需要用到哪些知識。
謝謝大家了^_^
回覆內容:
其實就是同城配送:有新的外帶訂單了,即時推送給訂單附近的配送人員端,配送人員接到單子後配送。
的來說有點不知道從何動手,我首先想到的:看起來很簡單,但對我這個
web開發
配送人員手機的
與伺服器WebSocket
直連,即時將地理位置經緯度上傳給伺服器,伺服器使用記憶體資料庫將位置儲存下來(
redis/mongodb),然後定時循環不斷的偵測新訂單,不斷的計算新訂單附近是否有配送人員,有的話就推送給相應的配送人員。
想法很簡單,可是有幾個問題:
配送人員獲取位置怎麼實時傳給伺服器呢,每隔幾秒鐘嗎,那不像ajax
- 一樣了,我想用
redisWebSocket
伺服器用記憶體資料庫存配送人員的位置資訊嗎,但是穩定一些吧,配送人員騎著車總在到處跑的。
- 支援
記憶體資料庫地理位置索引
這會不會產生大量的資料啊,嗎,等下查的時候怎麼查,怎麼查訂單附近的配送人員。
- 能實現嗎
我不知道這裡面需要用到哪些知識,猜測應該有這幾種技術:
1: nosql
,內存數據庫
2: 實時通信,多進程,多線程,並發
3: 隊列
,定時程式
,CLI
,後台常駐服務
4:空間索引,空間計算,地理位置索引計算
5: Socket程式設計
,Socket通訊
,Socket推送, ,但是我用web H5
的
Socket能不能行呢,配送人員不一定要用
APP吧,只要
WebSocket穩定就行了(再弱弱的問一句,
ajax行不行)
行不行)
希望有經驗的大神指點一下,不要叫我放棄,可能涉及的知識面我不了解,但是不妨說出來,我去一一學習,起碼知道這個裡面需要用到哪些知識。
謝謝大家了^_^
首先,謝謝邀請回答。 這種專案涉及到服務端,客戶端
客戶端
如果客戶端使用H5的話,建議用socket.io,不要用自帶的websocket,前者解決方案多,而且可以斷線重連。前端邏輯不多,無非是定期取得座標然後上班服務端同時人在地圖上移動。 服務端
要實現其實也沒什麼複雜的
首先建立長連接(隨意的網絡技術,什麼網絡框架都可以,只要能建立長連接),當有訂單過來時服務器端推送消息去告知客戶端將地理位置發送過來(根據地圖api取得),然後伺服器端去和下單的客戶的地理位置做比較(可自己對比,如果地圖有提供api,可以用api比較),挑出最近的一批人,然後派單(普通程式邏輯)。
然後一期可以不實現訂單追踪功能(即可以不保存人員的軌跡數據),等以後再實現,要實現訂單追踪,就需要每隔幾秒發送位置信息(這裡可以緩存,也可以持久化,看日後分析是否需要,快取可以用redis可以用mongodb,什麼樣的都可以),然後伺服器更新位置資訊。
邏輯簡單,第一期用的技術也沒什麼複雜的,大數據什麼的等量上來在過濾,想的太複雜就成了過度設計,這是大忌。