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