摩拜的六脈神劍:每日 2500 萬次出行服務背後的技術支撐
本文首發於:騰訊雲技術社區
摩拜單車自去年推向市場運營以來,憑著過硬的技術實力和良好的騎行體驗,一直引領著全球智能共享單車行業的發展。僅僅用了一年多的時間,摩拜就發展為服務覆蓋中國、新加坡、英國等全球100個城市、投放車輛超過500萬、日均騎行量2500萬的國際化創新品牌。
在6月22日騰訊「雲+未來」峰會現場,摩拜單車首席架構師範同祥對外揭秘了這家共享單車行業領導者背後的技術支撐實力。范同祥指出,摩拜今年依然保持高速增長,現在每日最高出行量已經穩穩保持在 2500 萬上,摩拜的高速增長主要源自於產品的創新和摩拜車輛的品質,但是如果在高速增長過程中沒有足夠強大的技術系統作為支撐,摩拜也是很難走到今天的。
在分享中,他將摩拜高速發展的技術支撐總結為「六脈神劍」:
- 物聯網技術
- 雲計算平台
- 微服務架構
- DevOps 流水線
- 騰訊專家團
- 摩拜技術文化
物聯網技術
摩拜在物聯網技術領域很早就進行了布局。摩拜從第一輛投產的車開始就投放了智能鎖,智能鎖裡面集成了像 GPS 定位、GSM 通信、藍牙和窄帶技術。直到今年的三四月份,友商們才開始量產他們的智能鎖。
摩拜在物聯網領域有近一百項的專利或專利申請。這些物聯網的技術反過來幫助摩拜後台的系統高速迭代快速升級起到了非常重要的作用。
僅以 OTA 技術來說,摩拜數百萬輛車的嵌入式系統固件升級,只需要幾個小時的時間,一夜之間就完成了。
雲計算平台
摩拜在高速發展中,騰訊雲功不可沒。
范同祥加入摩拜時,摩拜的技術團隊還只有三五十人,後台研發的只有十幾個人。十幾個人面對高速增長的系統,要解決這麼多問題,怎麼辦?
摩拜非常明智地決定快速上雲,但是很可惜的是,早期的雲是海外的某知名廠商,當時對摩拜的重視程度不夠高。後來選擇了騰訊雲。在現場,范同祥分享了幾個摩拜遷移到騰訊雲上的幾個故事。
系統遷移不到一個月
我是去年年底加入的,我們在春節之前就遷完了,前後一個月不到。還好當時數據量不大,只有幾個T,在騰訊專家的協助下,我們提前把數據從原來的雲平台導過去,再進行差量同步,切換當晚,進行數據比對和回歸測試,確認沒有問題。一個通宵,把所有的系統就這麼切過來了,速度非常快。
成功度過 DDOS 攻擊
摩拜在今年 4 月 22 號遭受了史上最大一次360G的 DDoS 攻擊 。那天還挺狼狽的,因為是周年慶,也不知道哪位神仙在背後放小腳,讓我們系統不太穩定。騰訊雲團隊迅速響應,啟動了北京、廣州、上海多地機房,迅速將DDoS防控能力提升到500G,成功抵禦了這一撥瘋狂的攻擊。自此以後,摩拜再也沒有遭受過超過一百G的 DDoS 攻擊。
上億條簡訊發送
今年開春以來,摩拜的友商們很快發動了免費戰,摩拜也要響應,有時候一天發送的營銷簡訊高達上億條。一億條簡訊在一天甚至幾個小時之內發送出去,摩拜的技術小夥伴是沒有什麼經驗的,這麼艱巨的任務最後也是交給了騰訊雲的簡訊團隊。
摩拜接入騰訊雲之後,不僅僅是用了騰訊的計算、存儲、網路等基礎設施,還得到了騰訊非常多的技術團隊的支持,幫助摩拜高速成長。
微服務架構
正是因為有騰訊雲的助力,摩拜自己才有時間、有精力騰出來對系統做一些改造。范同祥加入摩拜之後,率領團隊迅速完成了以下幾件事:
·快速升級代碼,將技術棧切換到開源的 Spring Cloud、Netflix的體系。
- 實現了微信支付的多通道接入,和其它外部服務的自動容錯機制,保證後台的高可用。
- 調整系統架構,按業務進行垂直拆分,獨立部署
Netflix 開源技術棧(ribbon、hystrix等)較好的實現了分散式系統的熔斷、限流、回退、全鏈路監控等機制。其中比較經典的應用場景就是微信支付。微信現在對於重要商戶是有兩個支付通道的,當有一個通道發生問題的時候,基於這個框架可以自動切換到另一個支付通道,這個過程是無縫的。
在架構升級過程中,摩拜曾擔心給體驗帶來較大的衝擊,但是騰訊雲技術團隊及時給予了非常強有力的理論支撐,指出了現存系統的問題。後來,摩拜快速對系統進行拆分,首先就是按業務進行垂直拆分,把不同的介面進行歸類,獨立的部署,讓結果相互不干擾。相應的資料庫也分拆成了不同的實例和集群。
每一類不同的業務,像關於用戶的、車輛的、支付的,歸類到不同的子系統當中,連接不同資料庫的實例。一開始只能採用最簡單粗暴的方式,先拆分再擴容,如果用傳統方法,如果不是在雲上,我相信這個過程會非常痛苦,管理維護成本非常高。而我們這點做得比較好,因為我們有騰訊雲的團隊支撐,所以資料庫的拆分擴容過程基本上沒有操什麼心,我們只是把我們的系統業務代碼做一些簡單的配置變更,就快速實現了系統擴容升級。
DevOps 流水線
除了系統架構層面的摩拜高速演進過程以外,摩拜在整個開發工具、開發運維體系的建設上是不遺餘力的。
范同祥 2013 年離開 IBM後,一直在互聯網創業公司工作,他發現有一個共同特點:國內的創業公司,大多數業務在高速增長的時候,都會演變成人肉大戰的模式。人不夠,需求太多了,用戶太火爆了,怎麼辦?老闆就使勁招人。
因此,他在加入摩拜以後就不遺餘力去推動公司建設DevOps流水線,推動研發效率的提升。現在,摩拜有機的整合了常見的的開源工具(包括GitLab CI、Jenkins、Ansible、Docker等),嚴格把控研發過程。
摩拜與騰訊雲的集成是非常緊密的。**摩拜的運維團隊利用騰訊雲提供的豐富 SDK 和 API,會自動通過騰訊雲的 API 導入機器,對後台伺服器進行自動化管理。
機器導入過來以後,摩拜自己定義了一些策略和模板,統一管理開發測試環境和生產環境。國內的大多數互聯網公司,都只能維護幾個固定的開發測試環境。摩拜做到了按需創建,誰只要有需求,快速在我們平台上一鍵創建一個完全獨立的環境。
怎麼做到?摩拜的後台深度集成了騰訊雲,簡單配置一下,需要多大規模自己定義,最小三台機器組建一個集群。一個按鈕點下去,通過調用騰訊雲和DnsPod的API,自動完成虛擬機、資料庫、域名的初始化過程,10分鐘之內即可創建一套獨立的環境。
騰訊專家團
在摩拜發展過程中,不只是騰訊雲的專家技術團隊,還有來自於騰訊的 TEG、微信各個領域騰訊公司的技術專家幫摩拜解決各種技術難題。
比如區域化部署。剛才提到兩地雙機房的方式不適合於摩拜的長期發展,摩拜現在在做全球化的布局,剛剛融資六億美金的用途就是做全球化,全球化以後分散在不同機房,延遲是比較大的,平均延遲業內是 230 毫秒左右,騰訊現在做到 120 毫秒以下。摩拜第一個海外城市新加坡走的是代理模式,核心服務還是在北京機房,通過騰訊新加坡的機房,走騰訊的內網專線,路由到北京機房。
摩拜希望未來用戶能夠就近接入,歐洲的用戶從歐洲的機房接入,美國的用戶從美國的機房接入,對後台業務系統就會有非常大的挑戰。
摩拜還借鑒參考了當時 QQ、微信的經驗,騰訊給摩拜提供了一套區域化部署解決方案。未來摩拜的系統,將部署在國內的四大機房以及海外多地的機房。如果一個機房宕機,同時還有其他機房來提供服務。不論是哪裡的用戶,接進來幾乎感覺不到什麼延遲,系統可用性也會大大提高。
摩拜技術文化
最後,范同祥指出了摩拜的獨特技術文化和執行力的影響。摩拜的執行力非常迅速,發現重大問題,一個晚上把所有代碼改了,第二天就上線。這樣的例子非常非常的多。
另外,摩拜的技術團隊雖然比較年輕,但是心態非常開放,能夠容納各種各樣的新鮮事物,只要你的見解是合理的,團隊都毫無保留的採納。摩拜這一點做得非常好。只要你設計合理,對公司是有利的,我們馬上執行。
相關閱讀:
騰訊許勇:騰訊技術研發正在全面擁抱開源 騰訊敏捷研發體系TAPD揭秘「智能雲」戰略新品震撼發布,開發者如何快速上手?識別手寫快遞單、聽懂人話的小微...騰訊雲公布了哪些大動作?
推薦閱讀: