【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】
【責任編輯:
周雪TEL:(010)68476606】