低調(diào)的酒仙網(wǎng)技術(shù)團隊
在過去,酒仙網(wǎng)的技術(shù)團隊在整個DevOps圈中都非常低調(diào),按他們自己的話說,秉承了山西晉商文化“樸實真誠,與人為善”的理念,作為技術(shù)人還是要務(wù)實、低調(diào),首要工作是踏踏實實做好技術(shù)能力,做好酒類垂直電商,體現(xiàn)產(chǎn)業(yè)價值的想法。并且,雖然在過去的三、四年中酒仙網(wǎng)的發(fā)展呈現(xiàn)非??焖俚脑鲩L,但其實底層架構(gòu)和創(chuàng)業(yè)公司區(qū)別不大,追求更多的是效率和增速,沒有在大數(shù)據(jù)的處理,高可用性,穩(wěn)定性上花特別多的精力。
隨著形勢的變化,酒仙網(wǎng)逐步走向了酒類獨角獸公司。酒仙網(wǎng)CTO曾稱,作為靠零售額去估值的公司,雖然PE的指標(biāo)很低,但是作為技術(shù)人也希望能從技術(shù)的含量上給公司的估值增加份量,希望在酒仙現(xiàn)在的整個體系上增加科技和互聯(lián)網(wǎng)的基因,吸引更多的人才加入。并且,隨著網(wǎng)站流量的不斷增長,酒仙也開始在技術(shù)的選型以及一些小的技術(shù)領(lǐng)域進行了新的嘗試和探索。后續(xù)的話也希望酒仙網(wǎng)在整個互聯(lián)網(wǎng)或者是電商領(lǐng)域有更多的聲音,無論是開源的社區(qū)還是整個互聯(lián)網(wǎng)技術(shù)發(fā)展上,能夠貢獻酒仙技術(shù)人員自己的力量。
另類的垂直電商
酒仙網(wǎng)整體架構(gòu)
酒類電商具有周期性、季節(jié)性的特點。酒仙網(wǎng)的UV量級達幾十萬,節(jié)日氣氛非常明顯,不像一般的電商,比如京東在618、雙十一的時候,流量只會提升6、7倍。在節(jié)日的時候,比如中秋、雙十一、春節(jié),即使是任何營銷活動都不做并且還比平時提價的話,網(wǎng)站流量都是平時的十幾倍。一般情況下,酒仙網(wǎng)的雙十一會比平時的流量翻到100倍以上,對技術(shù)的考驗巨大,這就決定了翻100倍流量與3、5倍的流量在技術(shù)的玩法上完全不同。
這種情況與酒類電商化的特點息息相關(guān)。酒類的線下市場達萬億級,但是網(wǎng)上的電商其實才有幾百億的規(guī)模。那么其實就有8、9000億的市場規(guī)模都在線下。這就說明,如果1%的人想從線下轉(zhuǎn)到線上的話,那么全國整個電商平臺就增加了1倍,這個空間真的是想象力非常大。所以酒仙網(wǎng)也在模式上做著新的探索,如何能夠?qū)⒕€下可開發(fā)的良田轉(zhuǎn)到線上來。
高并發(fā)大流量下有哪些技術(shù)挑戰(zhàn)?
1、如何實現(xiàn)上百倍流量峰值下的系統(tǒng)穩(wěn)定和可控性的設(shè)計與落地,保證服務(wù)器資源的最大化利用?比如全站做虛擬還是做什么。100多倍的流量扛下來的話,服務(wù)器肯定是過剩的,所以在探討混合云的理念就是為了應(yīng)對這個問題。一般來說,在絕大多數(shù)的電商公司里面,混合云的理念還是比較少的。但是對于酒仙網(wǎng)現(xiàn)在來講,必須要邁出這一步。
2、對于酒仙網(wǎng)來講,它是一個業(yè)務(wù)模式比較復(fù)雜的企業(yè)。酒仙在后端,存在著像倉儲體系、供應(yīng)鏈體系,這就要打通所有的2C端2B端,打通上下游,整個供應(yīng)鏈、銷售預(yù)測體系、倉儲職能配貨,整個的數(shù)據(jù)運營體系。比如同一款酒,分散在不同的銷售渠道上,那么定價多少、銷售情況、進貨量如何、每個倉怎么去分布都要考慮。同時,酒都有地域性和季節(jié)性,如何進行智能的分配,這個對于酒仙網(wǎng)來說挑戰(zhàn)極大。
3、酒仙網(wǎng)對用戶體驗是非常關(guān)注的。在酒仙網(wǎng)買過酒都知道它的包裝精美,成本之高可想而知。這樣核算下來,包裝的費用比例也非常高,大概成本占到7-8個點。這在整個零售類里都是不可想象的。無論是從泡沫、膠帶、氣泡、紙盒都選的最好的。另一方面講,落實到技術(shù)上的話,酒仙網(wǎng)從頁面打開速度、系統(tǒng)穩(wěn)定性、可用性,CDN的質(zhì)量以及現(xiàn)在所面臨的一些信息泄漏、流量劫持等問題,對此從公司角度看非常重視。
另類的垂直電商如何應(yīng)對挑戰(zhàn)?
1、“五分級、四服務(wù)”支撐系統(tǒng)架構(gòu)
酒仙網(wǎng)的系統(tǒng)結(jié)構(gòu)是面向SOA的體系結(jié)構(gòu),使用該體系的目的是為了滿足業(yè)務(wù)發(fā)展的需要,保證能夠進行拓展。整體框架以“緩存”、“索引”、“消息”、“日志”四大服務(wù)為支撐,且采用了多層分級服務(wù)體系結(jié)構(gòu)。
(1)Web應(yīng)用和APP應(yīng)用,主要面向消費者層面,即為展現(xiàn)層,可根據(jù)業(yè)務(wù)和功能的劃分成各個不同的業(yè)務(wù)子系統(tǒng)。這在電商行業(yè)網(wǎng)站里面非常特殊,像這一層,在酒仙網(wǎng)就包括ERP、面對消費者的官網(wǎng)和移動網(wǎng)站。官網(wǎng)方面,酒仙網(wǎng)會分成各個子業(yè)務(wù)模塊進行拓展。一般是獨立部署,獨立部署之后有效的增加性能拓展。這層是靜態(tài)文件,酒仙網(wǎng)都是獨立部署的。一般上CDN的時候,動態(tài)文件就不便上CDN的,靜態(tài)文件是常年上CDN的,動靜分層的管理。
(2)緩存。酒仙網(wǎng)有一級緩存和二級緩存。一級緩存,主要減少展現(xiàn)層和服務(wù)層的數(shù)據(jù)交互,這樣酒仙網(wǎng)就有效增加傳輸效率,同時也減少了服務(wù)層的計算壓力。每一個緩存的層面都加了獨立的開關(guān),以便于調(diào)試和糾錯。
(3)服務(wù)層,服務(wù)層也是根據(jù)各個不同的功能和業(yè)務(wù)子系統(tǒng)進行切分。一般業(yè)務(wù)子系統(tǒng)間是不存在相互調(diào)用的,但是酒仙網(wǎng)的子功能之間是會相互調(diào)用的,并且進行交叉調(diào)用的形式。服務(wù)層是直接跟Web應(yīng)用展現(xiàn)層進行數(shù)據(jù)交互,這層不會和數(shù)據(jù)庫打交道。服務(wù)層也是根據(jù)各個不同的子系統(tǒng)和業(yè)務(wù)劃分之后進行獨立部署,這樣有利于壓力的抗衡。在拓展層面會更加便捷。
(4)二級緩存。上一級已經(jīng)有一級緩存,下面這級緩存對web接口提供數(shù)據(jù)交互,web接口不經(jīng)過一級緩存,直接走服務(wù)層往外進行數(shù)據(jù)傳輸,在這里為了減少數(shù)據(jù)庫的壓力。二級緩存跟一級緩存性質(zhì)上是一樣的,只不過在過程當(dāng)中起的作用是不一樣的。
(5)數(shù)據(jù)庫。酒仙網(wǎng)根據(jù)不同的功能,切分成不同的物理基因進行部署。數(shù)據(jù)庫是采取主從分離的形式,一主多從進行數(shù)據(jù)同步來進行交互的。因為切分成不同的物理基因,酒仙網(wǎng)就形成了多主多從的協(xié)定。
2、如何處理復(fù)雜數(shù)據(jù)流向問題?
電商行業(yè)在正常情況下都會面臨一個問題,即大促期間的壓力非常大?;ヂ?lián)網(wǎng)的環(huán)境很復(fù)雜,訂單量、數(shù)據(jù)流量不可預(yù)估,甚至存在一些帶有惡意行為的競爭對手。這就要求了技術(shù)人員在應(yīng)對大促都要做非常周全的準(zhǔn)備工作,嚴(yán)陣以待。對此,酒仙網(wǎng)一般都是這么做的:
(1)人員上,每次大促前都會成立不少于七八個人的數(shù)據(jù)指揮小組,每個小組還要抽出專門的對接人員進行業(yè)務(wù)對接。此外,酒仙網(wǎng)還會準(zhǔn)備數(shù)據(jù)沙盤,靈活操控數(shù)據(jù)動態(tài)。
(2)技術(shù)上,每次大促都會出現(xiàn)一些新的促銷形式。比如抽獎活動,發(fā)紅包,每次出現(xiàn)新的形式后,一些老的形式都會進行業(yè)務(wù)梳理,專門組織梳理業(yè)務(wù)流程的工作。梳理完后,都會統(tǒng)一的做性能測試。但在每次的大促銷前,都會組織大型的性能測試,分內(nèi)外兩個部分。對內(nèi)包括對每一個固定模塊進行性能測試,也會對綜合業(yè)務(wù)模塊進行測試。做完內(nèi)部的性能測試之后,會邀請第三方機構(gòu),比如聽云Network對酒仙網(wǎng)大促前的性能進行壓力測試,去了解網(wǎng)站性能以及網(wǎng)絡(luò)節(jié)點上的網(wǎng)絡(luò)請求效果。聽云Network的壓力測試可以從不同節(jié)點、多個地域、同一時間并發(fā)請求,在真實性及效果方面有著不俗表現(xiàn)。
聽云Network——壓力測試
聽云Network壓力測試可在指定時間調(diào)度全國各地的監(jiān)測節(jié)點對目標(biāo)網(wǎng)站/應(yīng)用發(fā)起監(jiān)測,并周期性地增加同時并發(fā)量,通過確定一個系統(tǒng)的瓶頸或者不可用的性能點,來獲得系統(tǒng)能提供的最大服務(wù)級別的測試;
在壓力測試期間記錄下源站服務(wù)器的CPU/內(nèi)存值以及網(wǎng)絡(luò)流量等關(guān)鍵數(shù)據(jù),并加以適當(dāng)分析;
聽云Network的壓力測試服務(wù)可提供頁面、視頻流媒體及事務(wù)流程壓力測試。
一般酒仙網(wǎng)對流量都進行一些預(yù)估,比如雙十一,酒仙網(wǎng)的性能預(yù)估是2000萬的UA,酒仙網(wǎng)就會朝著1.5-2倍的方向去考慮,系統(tǒng)必須要達到這個要求。在壓力測試的過程中,還會發(fā)現(xiàn)一些新問題,比如有些業(yè)務(wù)流程在代碼層面不是特別流暢,這時就會有針對性的做瓶頸代碼的更改。萬一這個業(yè)務(wù)一時得不到解決,比如說有時時間比較倉促,或者發(fā)生其他情況,這時就只能丟車保帥,保留一些業(yè)務(wù)性能影響大的東西,對影響不是太大的功能進行屏蔽。
(3)面對成百上千倍的流量峰值,如果采用增加服務(wù)器的方式會造成資源的浪費,所以酒仙網(wǎng)采取了混合云的方式,進行彈性的部署。
(4)風(fēng)險評估,主要包括兩面,一是運維層面,二是程序?qū)用?。程序存在安全性能問題時,酒仙網(wǎng)也會拿出相應(yīng)的風(fēng)險評估預(yù)案,如果真存在問題的話便會關(guān)閉一部分的業(yè)務(wù)。同時會提前把預(yù)案想好,當(dāng)然風(fēng)險評估與網(wǎng)絡(luò)優(yōu)化也是密不可分的。
3、在性能優(yōu)化上,酒仙網(wǎng)怎么做?
(1)在網(wǎng)絡(luò)優(yōu)化方面,負(fù)載均衡在整個的過程當(dāng)中,特別是訂單體系的運行過程中都會有的,但是在大促的時候,酒仙網(wǎng)會臨時增加負(fù)載均衡量,之前服務(wù)器沒有那么多,酒仙網(wǎng)應(yīng)對大促會臨時進行補充——增加CDN。在平時酒仙網(wǎng)酒仙網(wǎng)都會有CDN,但是不會那么多,平時主要是靜態(tài)內(nèi)容,比如說靜態(tài)專題,或者CSGS的圖片會采用CDN,動態(tài)的內(nèi)容很少用到這個功能。但是在大促期間,酒仙網(wǎng)會大量接入CDN,根據(jù)預(yù)估量的大小,啟用對應(yīng)的CDN。同時為了能夠保證CDN的 加速效果能夠應(yīng)對大促峰值,酒仙網(wǎng)還采用了聽云Network對CDN的服務(wù)質(zhì)量進行評估。
聽云Network——CDN分發(fā)策略
CDN節(jié)點的分布策略對提高網(wǎng)站性能至關(guān)重要。加速效果的除了節(jié)點數(shù)量外,最重要是節(jié)點的科學(xué)分布和配置;
聽云Network會對CDN服務(wù)提供商的服務(wù)質(zhì)量進行監(jiān)測,通過監(jiān)測數(shù)據(jù)科學(xué)分析CDN節(jié)點分布的合理性,對CDN節(jié)點的策略進行調(diào)整。
(2)對數(shù)據(jù)庫性能進行監(jiān)測。無論哪家電商,只要在大促期間,性能及可用性都是最優(yōu)先考慮的問題。首先酒仙網(wǎng)會采用聽云Server對服務(wù)器進行實時監(jiān)測,能夠?qū)Ψ?wù)器響應(yīng)慢和不可用進行定位,查看慢應(yīng)用追蹤和Web應(yīng)用過程功能,能夠?qū)崟r定位消耗資源最大的代碼和語句,這樣就能幫 助實時進行有針對性的調(diào)整和優(yōu)化,并且可以快速定位問題時間,最快能到分鐘級別。
另外,在發(fā)生高并發(fā)、服務(wù)器壓力激增的情況時,平時運行正常的服務(wù)器異常概率大幅增加,日??赡艿男阅芷款i點會被成倍放大,這就需要實時定位和解決性能瓶頸點,和提前進行預(yù)防改善。一般來說,傳統(tǒng)日志收集方式耗時耗力,效果非常不好,酒仙網(wǎng)用了聽云Server后,可以進行1分鐘級定位能迅速有效發(fā)現(xiàn)瓶頸點。同時還結(jié)合了聽云Network的壓測功能,能夠在服務(wù)器上線前提前發(fā)現(xiàn)到高壓力下的瓶頸點,提前預(yù)防,避免由于高并發(fā)出現(xiàn)的服務(wù)器瓶頸。
由此,當(dāng)高并發(fā)大流量進入時,如果說性能達不到,酒仙網(wǎng)會采取臨時的解決方案,比如說上FIO卡,上負(fù)載硬盤,以及減緩數(shù)據(jù)庫的壓力,或者增加緩存量等。有一些關(guān)鍵性的業(yè)務(wù),緩存時間比較短,有一些業(yè)務(wù)可能不用緩存。這個時候如果說預(yù)估超出系統(tǒng)承載量的話,這時候可增加緩存的使用,把時間延長。
(3)酒仙網(wǎng)的系統(tǒng)中有很多的機房,會在全國各地進行布點。同時,大促期間的互聯(lián)網(wǎng)環(huán)境比較復(fù)雜,那么這就導(dǎo)致了它可能會出現(xiàn)的故障不確定。比如說雙十一,各大電商都做電商,整個互聯(lián)網(wǎng)的效率都滯后,那么這樣在全國各地布的機房,可能便會出現(xiàn)數(shù)據(jù)延遲的問題。此時,酒仙網(wǎng)便會利用聽云Network進行實時的監(jiān)控。比如說酒仙網(wǎng)通過聽云Network發(fā)現(xiàn)節(jié)點存在故障的話,那么便會立刻進行故障切換,臨時的不使用這個節(jié)點。比如說有一些地方的CDN可能出現(xiàn)問題,有一些地方不會,酒仙網(wǎng)會把這個出現(xiàn)問題的機器替換,把有故障切換到另外一個機房去。一般大促前兩天都會有人實時盯著整個過程的發(fā)展。
(4)大促期間會使用數(shù)據(jù)沙盤。每一次大促時都會有一個關(guān)于整個動態(tài)過程的數(shù)據(jù),這個動態(tài)不完全是實時的,但是基本上是實時的。通過沙盤,酒仙網(wǎng)可以看到系統(tǒng)運作情況,這可為銷售工作提供實時的應(yīng)變,比如說哪個地方哪個酒賣的好,哪個地方的促銷需要調(diào)整,酒仙網(wǎng)會實時監(jiān)控數(shù)據(jù)沙盤實時調(diào)整戰(zhàn)略。
4、其他想談的
(1)談到如何應(yīng)對復(fù)雜的業(yè)務(wù)模式,酒仙網(wǎng)認(rèn)為現(xiàn)在無論是底層架構(gòu),還是數(shù)據(jù)層面搭建著跨公司的大數(shù)據(jù)平臺,比如倉庫平臺、運營管理平臺、倉儲平臺、供應(yīng)鏈體系,以及供應(yīng)商管理、銷售預(yù)測、庫存分配等需求,都已經(jīng)用大數(shù)據(jù)的方法逐步開始搭建了起來。酒仙網(wǎng)實施了以算法為指導(dǎo)的智能化的處理,比如每年1月份的時候茅臺酒都是缺貨的時候,但是如果之前沒有做1月前的茅臺儲備的話,就很可能會造成3000-5000萬的損失。所以酒仙網(wǎng)把大數(shù)據(jù)的倉儲管理、銷售預(yù)測、庫存分配都抓了起來,進行了自行研發(fā)。類似于這樣偏傳統(tǒng)的業(yè)務(wù),酒仙網(wǎng)并沒有采用第三方,因為它的目標(biāo)是成為一個千億級的電商公司,所以無論是從業(yè)務(wù)的布局、人員的選擇還是公司的設(shè)立都是按照那個標(biāo)準(zhǔn)去設(shè)想的,因此就要培養(yǎng)自己的技術(shù)力量,專門型人才,然后由這些人去支持酒仙網(wǎng)成為一個千億級的公司。
(2)面對新技術(shù),比如微服務(wù)上,酒仙網(wǎng)也一直在探討,但還沒有形成大范圍。微服務(wù)或者SOA化,無論是什么樣的電商公司,創(chuàng)業(yè)型的公司,還是目前酒仙網(wǎng)的規(guī)模,亦或者當(dāng)當(dāng)、京東,都是必須要走的。無論是從項目的管理、技術(shù)的管理還是運維部署的管理,面對這種快速增長的流量,不斷的迭代變化的需求,以及幾百幾千的團隊協(xié)作的分工上,都是必須要走服務(wù)化的過程的。其實酒仙網(wǎng)在最近的半年中,圍繞電商業(yè)務(wù)的服務(wù)化,架構(gòu)也在進行著調(diào)整,希望能在銷售旺季來臨之前,能夠把賣場、購物體系的服務(wù)化能夠有一個第一階段的上線。對于Docker的排期部署,也是和酒仙網(wǎng)的混合云高相關(guān)的,所以在這方面花了很多精力去研究和探討怎么去做快速部署和彈性部署。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!