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