帶你探秘1號店百億業務背后的移動IT架構
原創【51CTO.com原創稿件】在WOT2016移動互聯網技術峰會上,來自1號店的高級架構師施華, 同與會者交流了1號店在性能優化方面的心得體會。
移動互聯網的生命力
移動互聯網近兩三年處于高速發展期,施華認為促成的原因有三點,一是移動硬件尤其是高性能智能手機的快速發展和普及,二是網絡環境的日趨完善,三是移動互聯網應用場景的日益豐富,三者共同促進移動互聯網呈井噴式發展。
他表示,與移動互聯網相同步的是電商的移動化,三年前、四年前1號店的移動站只有百分之幾的占比,通過這兩三年的發展現在已經達到70%,促銷的時候甚至會更高。這也是受到移動互聯網發展的影響,作為一線的移動電商人員對此要有基礎認識。同時施華也指出,在流量從PC端慢慢轉移到手機端的過程中,以前集中在PC端的問題,也隨之轉移到APP端,這些問題會驅動著技術人員開始著手整個架構的優化。
1.0時代問題百出
施華介紹到,在1號店移動架構1.0時期,由于移動端業務占比較小,獲得的投入并不多, APP基本是移動后臺提供所有的APP接口服務,技術人員直接讀寫它的庫。核心業務如購物流程、詳情頁等,技術人員直接基于接口做AS封裝,開發資源的瓶頸非常嚴重。
到中期時, APP功能基本慢慢與PC端同步,每個模塊的業務復雜度也越來越高,核心業務開始享有單獨資源,給APP提供接口服務。隨之而來的問題是整個服務器端非常分散,業務成長之后導致所有的部門都會給APP提供接口,服務暴露在外網就需要考慮到安全問題,如基本控制、協議監控日志等。而且這種架構導致的問題是重復的冗余實現,從公司整體角度而言是一個資源的浪費。另外一個問題是數據協議不統一,如果后續的協議有升級改動,則很難推動。最終導致架構嚴重缺失。
“還有一個比較嚴重的問題就是無線平臺的日志無法統一,由于接口分散,各個業務做自己的日志系統,從總體看線上一旦出現問題無法定位,做問題的分析。”施華談到,“流量布局中服務端降級也存在無法統一的問題,由于每個接口都可以自己做服務端降級,在多個接口聯動的業務場景中,很難實現多個接口同時做業務降級。”
2.0時代高效支撐業務
為了高效地支撐業務,2014年,1號店開始著手構建移動端2.0架構。
施華告訴聽眾,2.0架構做的最重要的一個動作就是把整個移動端的流量集中到一起,有一個統一接入層。接入層里面統一實現驗簽、協議、風控、日志、監控、干預等功能。
他一一解釋到,驗簽實現的是最基本的接口安全,處于整個接入層的最前端。
協議主要是指APP端約定好的一些接口協議標準。1號店還有一些擴展協議字段,通過這些擴展協議字段做到服務器端組強制干預的流程。施華透露,主動干預比較簡單,但非常實用。如果要干預一個規則,開發人在后面配一個干預策略,APP端就實時生效了。
風控主要是確保業務風控安全的問題。1號店目前風控可以做到后臺配置即插即用,技術人員通過一個后臺可以對不同的業務做不同的風控規則配置。“為了防止黃牛黨、羊毛黨搶占公司投放資源,必須加強業務風控。”當然,施華也強調,單純去做強對抗是達到不了非常好的效果,不可能用強對抗解決所有的問題。還是要靠后端的統一部署。
監控對任何線上系統是必不可少的,1號店會對所有APP接口做各種業務監控。例如整個接口平均耗時的實時監控、超時率的實時監控,用戶正常返回的實時監控。
在2.0架構流量集中后端業務的接入層,所有的核心業務都會以一個適配器的形式接進來。整個公司的核心業務會按照協議標準接入適配器層。這樣他們只要專注于自己的業務,這樣就無須各自為戰,單打獨斗。
施華表示,目前基本APP端有200多個業務接口,除非有新增接口,否則這一層基本不用改,如此簡單的部署也保證了整個系統的穩定性。
記者了解到,像1.0時期的降級問題在2.0時期也得到了有效解決,“接口降級這一塊主要還是依賴于我們大數據對于整個接口界別的業務監控。”施華告訴記者,1號店現在有一套自動的接口降級恢復機制,可以避免爛接口通過長時間消耗拖宕業務。同時也會發送監控預警,提醒負責人快速去干預。“當然,也會有人工強制干預秒級恢復的按紐。”
提升性能的幾處心得
施華透露,現在1號店的日志非常豐富,所有APP端流量經過后臺會全量接入,包括每一層請求的出參、入參,所有相關維度信息都會被一條旁路持久化下來。持久化之后會做一些后期的數據挖掘,也提供給業務方做各種支持。
“1號店還有一條實時更新的鏈路用于實時分析,接口的耗時、成功率、波動都能被識別到。所有的接口如果發生波動的話,大概會有10秒到2分鐘的時可以識別并快速給接口方做報警。”
在1.0時代有一個痛點,就是當用戶發生問題了,打電話投訴,客服會讓技術人員幫助定位問題。而真實的場景是技術人員很難從日志分析根本原因,特別是關于業務場景的問題。在2.0時代的解決辦法是全量日志查詢,技術人員通過各種維度如用戶維度,設備維度去過濾數據,然后按照時間軸順序,把所有訪問日志進行排序。當用戶再次遇到問題時,技術人員只要看用戶操作的時間點,就可以通過他詳細的入參、出參,在幾分鐘之內定位90%的問題。“日志是整個移動端架構里面非常核心的內容,像降級、風控、干預基本都是基于日志來做的。”
對于移動端用戶而言,整個使用最重要的感受就是快速響應,1號店對此可以做到整個流程只有個位數毫秒的延遲。如何做到呢?這首先后端需要有大量的支持系統,例如風控規則的攔截,先在征信數據部分把基礎工作全做好,然后只基于后臺配置的攔截規則來做一個匹配就可以了。1號店后端有一系列的支持平臺,如密鑰配置、系統配置、干預規則等。
施華從客觀角度坦言,早期1號店架構比較混亂,現在2.0架構則能非常高效地支持業務。做架構主要考慮兩點,一是如何更好地支撐業務,他認為能夠快速實現所有功能,就是對業務***的支撐。二是要從功能上面挖掘數據的價值。
本文由施華于2016年8月,在WOT2016移動互聯網技術峰會性能專場《1號店移動端如何有效支撐百億業務》主題演講整理而成。WOT2016大數據峰會將于2016年11月25-26日在北京粵財JW萬豪酒店召開,屆時,數十位大數據領域一線專家、數據技術先行者將齊聚現場,在圍繞機器學習、實時計算、系統架構、NoSQL技術實踐等前沿技術話題展開深度交流和溝通探討的同時,分享大數據領域***實踐和最熱門的行業應用。了解WOT2016大數據技術峰會更多信息,請登陸大會官網:http://wot.51cto.com/2016bigdata/
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】