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