達達CTO談眾包物流系統的複雜性
達達是一個聚焦最後三公里物流的眾包平臺,連線兼職配送員和有配送需求的商戶,目前已擁有50萬兼職配送員,服務超過15萬家商戶,日訂單量達90萬單的龐大體量。
\\InfoQ記者採訪了達達CTO楊駿,一位來自矽谷的growth hacker、Facebook早期的華人工程師,與他探討了眾包物流平臺。本文根據採訪整理而成。
\\InfoQ:相對於其他業務,物流業務有哪些獨特的地方?
\\\\\楊駿:物流是一個很大的行業。這個行業中有很多細分,比如干線物流,同城物流,也有像我們專注的最後三公里物流。三公里並不是一個非常嚴格的數字,它指的是城市毛細血管的物流。從另外一個角度來看,伴隨電商而興起的傳統物流往往是計劃性的。即使淘寶、天貓、京東這樣的電商平臺上的配送速度越來越快,其訂單還是計劃性的。相比之下,達達配送的訂單都是即時性的,是實時產生的外賣、水果、生鮮等商品的配送,而且往往要求在1個小時內完成。
\\因此,我們專注的物流業務具有很強的區域性和即時性。這樣的物流需求隨著各類O2O電商而爆炸性增長,但又無法被傳統物流滿足。我們用了眾包的模式很好地解決了這個問題,在很短的時間內實現了業務的飛速發展。
\
InfoQ:這些獨特的地方肯定有一些技術進行支撐的,業務的快速發展給技術帶來一些什麼樣的挑戰呢?
\\\\\楊駿:首先我們是完全搭建在移動網際網路上的。我們的模式跟滴滴很類似,商家通過App發出配送需求,配送員通過APP可以看到附近商家的需求,通過搶單的模式來匹配這個需求並完成配送。這一切都通過移動網際網路來完成。
\\我們面臨的挑戰會有以下兩方面:一方面是面對快速增長的業務,如何確保系統的穩定性和可用性。面對海量業務的增長,我們在後臺架構上做了很多的升級改進,以和時間賽跑的速度去Hold住單量的飛速增長,這塊是很大的挑戰。另外一方面是效率的挑戰,簡單來說就是如何讓配送員每小時完成更多的配送訂單。我們的技術團隊做了大量的合併訂單(把取貨地和目的地接近的單子合併在一起,由一個配送員來完成),訂單的推薦和指派,路徑規劃等方面的工作,使配送的效率隨著規模得以提高。
\\對於這兩方面的挑戰,首先保證的是穩定性,因為效率是節省和浪費的問題,但是穩定性是關係到是否可用的問題。當規模迅速發展的時候,我們首先用穩定性扛住規模,而規模又提供了效率上的優化空間,使我們建立起規模和效率的雙重壁壘。
\
InfoQ:達達在構建技術架構方面有哪些探索?
\\\\\楊駿:面對上述所說的挑戰。首先是研發團隊的構建,在面對挑戰的時候,找到合適的人比選擇某項技術更顯得重要。
\\其次我們做了很多資料庫架構方面的優化,包括資料庫的主從分離,讀寫分離,垂直分庫,以及正在進行中的水平分庫(sharding)等。簡單的說,就是當一臺資料庫無法支援巨大的訪問量時,我們把資料庫中不同的表,甚至是同一表中的不同資料,拆分到不同的邏輯資料庫中,實現了資料的分散式讀寫。這也為後續的業務發展提供了可擴充套件性。
\\我們也對上層的呼叫程式碼做了很多修改,並且做了服務的隔離,以保證核心業務和不核心的業務完全隔離開,這樣不核心業務出現的問題不會影響到核心業務。
\\還有就是快取的服務。面對這麼高的訪問量,我們基於Redis搭建了快取系統,把大部分原先通過資料庫的訪問都用快取來解決,以減輕資料庫的壓力。
\\我們現在已著手建設災備機房,以保證有任何不可抗拒因素出現時我們的服務還能夠可用。
\
InfoQ:從達達的角度來說,移動技術帶來的最大不同是什麼?
\\\\\楊駿:移動技術使達達的商業模式成為可能。正因為有了移動網際網路,我們才能用眾包的模式去解決最後三公里配送,來匹配數以十萬計的配送員和他們身邊不斷湧現的即時性的配送需求。這一點和滴滴和Uber都是相似的。
\
InfoQ:從達達官網提供的資訊我們可以知道,達達的業務已經分佈在非常廣的區域。請問達達是怎麼做服務的本地化的?
\\\\\楊駿:從兩個方面看這件事情。首先,我們的模式具有非常強的複製性的。網際網路公司飛速發展的一個關鍵能力是低成本的擴張,就是說你能用非常低的代價非常快地複製自己。達達的商業模式和產品都能被迅速複製到一個新的城市,也就是說我們的可複製性很好。
\\其次每個城市在經濟、網際網路普及程度都不一樣。我們在後臺有一套很好的運營系統,可以對包括定價、配送時效等各種運營引數按城市級別進行配置,符合對每個城市的特點。具體實施時我們會和每個城市的的團隊溝通,明確所在城市特殊的地方,同時快速在系統中做出修改和配置。我們把整個運營中所有的引數都做成了工具,很容易的由一個非工程師做配置,而不需要一個工程師做配置。
\
InfoQ:我們知道服務的可用性對於達達的業務來說是非常重要的,在技術方面達達是如何保證服務的“全天候”可用?
\\\\\楊駿:首先是我們在資料庫架構上做了非常多的優化,上面已經提及了。除此之外我們還做了服務的可降級化,也就是說在服務壓力非常大的時候,我們能夠犧牲掉一些不是核心的服務,保證核心業務的可用性。另外,我們還大量使用快取,儘可能的讓重複讀寫操作在快取中被消耗掉,而不影響資料庫。
\\除了上述兩方面,我們還會通過一定的激勵政策使團隊中的每一個成員都去關注後臺的穩定性。
\
InfoQ:剛才你說你們的主要業務都是基於雲的,那開放平臺會帶來哪些不同?
\\\\\楊駿:為了滿足不同規模的商戶,我們很早就建立了開放式平臺(OpenAPI)。通過這個平臺,各類O2O電商可以很方便的實現和達達的系統對接,通過系統發出配送的需求,並完成訂單跟蹤、反饋、結帳等一系列動作。OpenAPI讓我們把線下的配送服務變成了線上的一系列標準化的API。對於一些比較大的O2O電商,我們還會做很多定製服務,比如通過出倉掃碼可以把出倉的動作直接反饋到我們平臺上去,使雙方的效率都得到了很大的提高。
\
InfoQ:您對12月份開幕的ArchSummit北京2015有什麼寄語?
\\\楊駿:一直在關注這個大會,大會為技術人員提供了一個很好的學習交流的平臺。如果時間允許的話,我希望有時間去大會向國內的很多同行學習,也做一個交流。我之前一直在美國工作,我覺得在美國這十多年看到的情況是中國和美國的差距在迅速被縮小,甚至在某些領域已經出現了反超的情況。在商業模式上,其實中國有非常多創新的地方,同時在技術上我覺得兩邊的距離已經很接近,或者說幾乎不可分辨了。我以前在美國也待過不少創業公司,他們的技術架構,和我今天在達達以及我所知道的中國其他這些公司的架構上沒有什麼區別,大家用的都是非常先進的技術,每次有新技術出現時都會很快的去採用。甚至中國在某些領域上,對於新技術的採用其實走在了美國一些公司的前面,因為中國新的公司非常多。其實我是很希望去那兒跟同行有一個很好的交流,也學習一下國內的很多經驗。
\
相關文章
- 複雜性系統設計:福特CEO談特斯拉的三個特點
- 外觀模式-簡化子系統的複雜性模式
- 談談Bug引起的複雜性“Bug-O” — OverreactedReact
- 達達租車系統
- 複雜性系統的戰略分析要點 -Dave
- 關於系統複雜性的一句箴言箴言
- 複雜性系統是一種心智介面 – Charles
- 分散式系統:常見陷阱和複雜性分散式
- 複雜性自適應系統無法建模分析
- Feed 流系統雜談
- 推薦系統雜談
- 與複雜性系統共舞:如何培養系統思考與系統思維? - Donella
- 系統困境與軟體複雜度,為什麼我們的系統會如此複雜複雜度
- 操作複雜的CRM系統如何使用
- 對於複雜系統只能採用模擬性建模? - Cilliers
- 複雜性系統隱喻:修剪比砍樹更靈活 - Dave
- 報告:通過整合安全生態系統以降低複雜性
- 如何降低軟體的複雜性?
- 解決DDD核心的複雜性
- 阿里巴巴複雜搜尋系統的可靠性最佳化之路阿里
- 淺談時間複雜度時間複雜度
- 複雜性Complex與複雜Complicated區別 - Sonja
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 複雜混亂系統的三種應對方式
- 針對複雜系統的雙環模型之指南模型
- 演算法複雜性分析演算法
- 一個Windows 系統究竟有多複雜?Windows
- 軟體的複雜性:命名的藝術
- 開發效率與系統穩定性雜談
- 關於“服務網格”和分散式系統軟體複雜性 - Matt Klein分散式
- Guru of The week #20 程式碼的複雜性 Ⅰ. (轉)
- 使用橋接模式設計複雜的訊息系統橋接模式
- 淺談OA管理系統的優越性
- 複雜性是心智殺手 - PhilipK
- 什麼是 幾何複雜性
- 資料複雜性和簡單
- 淺談WPF之屬性系統
- 產業安全專家談丨Web 攻擊越發複雜,如何保證雲上業務高可用性的同時系統不被入侵?產業Web