首頁  >  文章  >  後端開發  >  javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?

javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?

WBOY
WBOY原創
2016-08-18 09:16:182056瀏覽

要做一個這樣的項目,類似滴滴打車,美團眾包

javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?

其實就是同城配送:有新的外帶訂單了,即時推送給訂單附近的配送人員端,配送人員接到單子後配送。

看起來很簡單,但對我這個web開發的來說有點不知道從何動手,我首先想到的:

配送人員手機的APP與伺服器WebSocket直連,即時將地理位置經緯度上傳給伺服器,伺服器使用記憶體資料庫將位置儲存下來(redis/mongodb),然後定時循環不斷的偵測新訂單,不斷的計算新訂單附近是否有配送人員,有的話就推送給相應的配送人員。

想法很簡單,可是有幾個問題:

  1. 配送人員獲取位置怎麼實時傳給伺服器呢,每隔幾秒鐘嗎,那不像ajax一樣了,我想用WebSocket穩定一些吧,配送人員騎著車總在到處跑的。

  2. 伺服器用記憶體資料庫存配送人員的位置資訊嗎,但是redis支援地理位置索引嗎,等下查的時候怎麼查,怎麼查訂單附近的配送人員。

  3. 這會不會產生大量的資料啊,記憶體資料庫能實現嗎

我不知道這裡面需要用到哪些知識,猜測應該有這幾種技術:
1: nosql,內存數據庫
2: 實時通信,多進程,多線程,並發
3: 隊列定時程式CLI,後台常駐服務
4:空間索引,空間計算,地理位置索引計算
5: Socket程式設計Socket通訊,Socket推送, ,但是我用web H5
Socket能不能行呢,配送人員不一定要用APP吧,只要WebSocket穩定就行了(再弱弱的問一句,ajax行不行)行不行) 希望有經驗的大神指點一下,不要叫我放棄,可能涉及的知識面我不了解,但是不妨說出來,我去一一學習,起碼知道這個裡面需要用到哪些知識。

補充配圖(蜂鳥眾包/達達配送):


javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?謝謝大家了^_^javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?

回覆內容:

要做一個這樣的項目,類似滴滴打車,美團眾包

javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?其實就是同城配送:有新的外帶訂單了,即時推送給訂單附近的配送人員端,配送人員接到單子後配送。

看起來很簡單,但對我這個

web開發
的來說有點不知道從何動手,我首先想到的:

配送人員手機的

APP
與伺服器

WebSocket直連,即時將地理位置經緯度上傳給伺服器,伺服器使用記憶體資料庫將位置儲存下來(redis/mongodb),然後定時循環不斷的偵測新訂單,不斷的計算新訂單附近是否有配送人員,有的話就推送給相應的配送人員。 想法很簡單,可是有幾個問題:

配送人員獲取位置怎麼實時傳給伺服器呢,每隔幾秒鐘嗎,那不像
    ajax
  1. 一樣了,我想用

    WebSocket穩定一些吧,配送人員騎著車總在到處跑的。

    伺服器用記憶體資料庫存配送人員的位置資訊嗎,但是
  2. redis
  3. 支援

    地理位置索引嗎,等下查的時候怎麼查,怎麼查訂單附近的配送人員。

    這會不會產生大量的資料啊,
  4. 記憶體資料庫
  5. 能實現嗎

我不知道這裡面需要用到哪些知識,猜測應該有這幾種技術:
1: nosql,內存數據庫
2: 實時通信,多進程,多線程,並發
3: 隊列定時程式CLI,後台常駐服務
4:空間索引,空間計算,地理位置索引計算
5: Socket程式設計Socket通訊,Socket推送, ,但是我用web H5
Socket能不能行呢,配送人員不一定要用APP吧,只要WebSocket穩定就行了(再弱弱的問一句,ajax行不行)行不行) 希望有經驗的大神指點一下,不要叫我放棄,可能涉及的知識面我不了解,但是不妨說出來,我去一一學習,起碼知道這個裡面需要用到哪些知識。

補充配圖(蜂鳥眾包/達達配送):


javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?謝謝大家了^_^javascript - 大家好,我想做一個類似滴滴打車的軟體,大概需要用到哪方面的技術?

首先,謝謝邀請回答。 這種專案涉及到服務端,客戶端

客戶端

如果客戶端使用H5的話,建議用socket.io,不要用自帶的websocket,前者解決方案多,而且可以斷線重連。前端邏輯不多,無非是定期取得座標然後上班服務端同時人在地圖上移動。 服務端

web服務端
  1. socket.io服務端
  2. web服務端語言不限,請注意WEB服務端不要用複雜計算,web服務端只負責把資料庫資料顯示

  3. 後台程式比較多,訊息佇列,位置計算這些計算量大的需要放到後台。

要實現其實也沒什麼複雜的

首先建立長連接(隨意的網絡技術,什麼網絡框架都可以,只要能建立長連接),當有訂單過來時服務器端推送消息去告知客戶端將地理位置發送過來(根據地圖api取得),然後伺服器端去和下單的客戶的地理位置做比較(可自己對比,如果地圖有提供api,可以用api比較),挑出最近的一批人,然後派單(普通程式邏輯)。

然後一期可以不實現訂單追踪功能(即可以不保存人員的軌跡數據),等以後再實現,要實現訂單追踪,就需要每隔幾秒發送位置信息(這裡可以緩存,也可以持久化,看日後分析是否需要,快取可以用redis可以用mongodb,什麼樣的都可以),然後伺服器更新位置資訊。

其中用到的技術其實可以選擇,現在位置信息,位置對比基本上都是通過調用地圖的api獲取,要知道原理,可以做完項目後自己研究。

邏輯簡單,第一期用的技術也沒什麼複雜的,大數據什麼的等量上來在過濾,想的太複雜就成了過度設計,這是大忌。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn