為了雙十一,你知道京東都做了什么嗎?
原創(chuàng)無論是廣大消費者還是京東,6.18與雙十一都是一個讓人難以忘卻的日子,雖然不能說是普天同慶,但注定著這兩天并非普通的日子。雙十一對于大多數(shù)用戶而言唯一的信念便是購物、下單與秒殺,為了這個日子,我們熬夜到凌晨,為了這個日子,我們不惜花費超出平時預算的成本來進行購物。
而看似和平常沒有太多異樣的界面,但在內(nèi)部卻有著天翻地覆的變化。面臨這個用戶流量暴增的日子,京東可謂做足了功夫,而這一切均是為了保證給予用戶一個良好的線上體驗。對于京東而言,你知道他們內(nèi)部做了哪些工作嗎?我們一點一點的來了解一下。
線上交易是電商網(wǎng)站的重要組成部分
線上交易是電商網(wǎng)站的重要組成部分,在采訪京東商城技術(shù)研發(fā)體系交易平臺副總監(jiān)——王曉鐘時他介紹到:“線上交易依賴的分支特別多,***需要知道用戶的信息,第二要知道商品的信息,第三計算價格,第四對于交易來說最重要的是庫存,第五還有虛擬資產(chǎn)的使用。導致整個交易的邏輯特別復雜。每次交易系統(tǒng)都靠前期大量的內(nèi)部壓力測試,來先找出可能的瓶頸點,同時會有工程師實時監(jiān)控著線上系統(tǒng),發(fā)現(xiàn)哪些地方存在熱點,并針對熱點做預案。其次京東準備了很多臺機器,新加的機器用于分擔流量,此外有些地方開啟了細微的降級增加一些緩存。例如對于庫存來說,并不太敏感,但對于用戶顯示的依舊正常。”
京東商城技術(shù)研發(fā)體系交易平臺副總監(jiān)——王曉鐘
線上性能測試保證秒殺系統(tǒng)
對于用戶而言,整點秒殺算得上是一個“福音”,而又會有不少用戶擔心能否成功參與到秒殺活動中來,擔心由于流量過大而導致服務(wù)器會癱瘓導致無法秒殺。而京東在線上的集群非常之多,雖然沒有明確透露,但是卻給出了我們一個例子,假設(shè)線上為兩組,如果要做線上的性能壓測,會把用戶導到其中的一組當中,物理上和與做壓測的那組隔絕。對交易來說,現(xiàn)今已做到分布式交易,各個組之間的數(shù)據(jù)都做了隔絕,其中一組壓力過大,哪怕整組宕機,能夠快速把流量入口切換到其他組,保證用戶體驗,同是能夠用于在線上的壓測,并保證信息反饋的真實性。
而這幾組沒有透露的集群非常獨立,后臺發(fā)布系統(tǒng)保證數(shù)據(jù)移植性,秒殺系統(tǒng)和組交易系統(tǒng)已經(jīng)剝離,對于電商來說,不是擔心正常用戶訪問下單,怕的是突發(fā)峰值(如秒殺),雖然外表看起來一樣,但后面的數(shù)據(jù)和服務(wù)有著天然之別,在今年,京東將其進行了完全隔離,秒殺系統(tǒng)本身也做了優(yōu)化,將用戶與機器人區(qū)分開來,故而機器人搶到的概率很低,并不會影響用戶交易。此外秒殺系統(tǒng)的服務(wù)器、服務(wù)、數(shù)據(jù)均是單獨部署,秒殺用的庫存和商品信息都是單獨推送到秒殺系統(tǒng)中,秒殺系統(tǒng)對主站沒有一絲影響。截止目前,秒殺系統(tǒng)一次沒有失敗過。萬一失敗,也會將秒殺在一段時間后從新開啟一輪,將用戶的影響降到***。
規(guī)則限制和監(jiān)控“殺”惡意流量
在這個特別的日子,惡意流量也會暴增,這些惡意的流量無法預測,不是正常的用戶行為,當然京東也做了大量的規(guī)則限制和監(jiān)控。截止11.11日上午十點京東給出的數(shù)據(jù)是能夠殺掉70%的惡意流量,不過在后面京東還有著自己的后招,經(jīng)過前期測試,能夠殺掉99%惡意流量,但目前后招還沒開,目前的量消費系統(tǒng)還能頂住。雖然今天的流量有些恐怖,但京東依舊信心滿滿。
通過日志來進行實時監(jiān)控,對于京東來說,監(jiān)控平臺有很多。監(jiān)控又分為軟件維度和硬件維度。硬件維度需要看機器的CPU,軟件需要看接口的響應(yīng)時間或者某個異常拋的次數(shù),但大體還是基于日志。監(jiān)控系統(tǒng)本身,京東做了很多方案與備災(zāi),例如重要系統(tǒng)的數(shù)據(jù)隔離與新機器的加入。
實時監(jiān)控系統(tǒng)全由京東自己開發(fā),京東發(fā)展到現(xiàn)今,可以說所有的底層技術(shù)都是由自己開發(fā)的,其很難接受第三方平臺的東西。舉個例子,所有的第三方東西都是造了一個通用的輪子,京東以前可能還是一個卡車,用通用的輪子便可,而現(xiàn)今以目前的業(yè)務(wù)量來看,京東已經(jīng)成為了一輛跑車,對‘輪胎’的要求格外之高。所以自己開發(fā)的技術(shù)適合自己的業(yè)務(wù)、系統(tǒng)、軟件、硬件、員工和管理。所以監(jiān)控這種關(guān)鍵的系統(tǒng)只能由自己進行定制。
負載均衡交易系統(tǒng)分流機器人
上面也提到了惡意流量,除了監(jiān)控與查殺之外,京東還有這一套自己的負載均衡交易系統(tǒng),這套系統(tǒng)分為兩層一層是運營團隊負責入口流量到機房內(nèi)部的負載均衡,具體的技術(shù)選型也是業(yè)界常見的幾類。第二層當流量進來后,交易系統(tǒng)單獨做了一層對流量的清洗分流層(京東自主研發(fā)),這層更加貼近業(yè)務(wù)。
而清洗分流層的作用便在于外部的惡意流量,例如一個用戶在一分鐘之內(nèi)訪問了一萬次購物車,基本屬于機器人惡意刷流量,這種用戶會被降低使用體驗,一些請求直接被拒絕,并將其移到一個較慢的機器上去。
交易數(shù)據(jù)移植保證用戶權(quán)益
對于用戶而言,除了商品質(zhì)量問題之外,多扣費用也是一個無法容忍的問題。而交易依賴的是用戶、商品、促銷、庫存這幾方面,這些接口無法做異步,只能同步的來做。但是提起同步,業(yè)界分布式事物是很難繞過去的一個話題,不管是天貓、淘寶還是京東都能稱得上是一個技術(shù)上的噩夢。目前京東集中的做法便是提交時做強移植性檢查,提交完后在強移植性檢查的基礎(chǔ)上在做異步的移植性檢查。例如一個訂單沒有提交成功,沒有移植性問題,一旦成功,肯定保證數(shù)據(jù)移植性。這也就讓用戶權(quán)利得到了保障,不會發(fā)生多扣等現(xiàn)象。
京東如何考慮自己網(wǎng)站的發(fā)展
電商一定要考慮好網(wǎng)站的發(fā)展問題,一旦發(fā)現(xiàn)網(wǎng)站的流量和用戶增長了,就要立刻升級空間,或者將空間變成服務(wù)器。京東從軟硬件兩個維度進行了規(guī)劃,對于軟件維度就是架構(gòu)升級,比較好把控,開發(fā)人員、測試人員與架構(gòu)師一起想方案便能想出來,對代碼進行改動,謹慎一些便可。
較難的是硬件方面的規(guī)劃,也可以說是機房的規(guī)劃,京東在這方面也走了一段漫長的道路,最早的時候沒有太多規(guī)劃,只有一個機房,從這個機房(B28)中不斷吸取教訓,每年對機房的規(guī)劃(機房申請、內(nèi)部帶寬布置、機頂交換機、外圍流量)流量入口分為世紀互聯(lián)、移動、聯(lián)通、電信這些運營商都是打通的,對各個運營商都做了不同的規(guī)劃,外部流量一旦接入,內(nèi)部流量就容易規(guī)劃了。
用戶的誤區(qū)
對于用戶而言,一些常見的故障類型包括DNS無法解析、連接超時、響應(yīng)超時、重定向次數(shù)過多、服務(wù)器無響應(yīng)等此類問題被用戶所厭煩,他們首先想到的便是這個電商網(wǎng)站本身的問題,但是這里存在一個誤區(qū)。對于電商網(wǎng)站來說,響應(yīng)時間的瓶頸其實是在公網(wǎng)互聯(lián)網(wǎng)之上,響應(yīng)時間過慢只能怪自家網(wǎng)絡(luò)環(huán)境不太優(yōu)越。
以京東的單品頁為例,單品頁中有一個價格顯示。顯示價格需要很復雜的促銷邏輯計算,還有區(qū)域邏輯計算,服務(wù)端每一百次調(diào)用里最差的一次也只有15毫秒左右,但在公網(wǎng)那邊,根據(jù)機調(diào)的數(shù)據(jù)平均時間要到100多毫秒,差的甚至會到1秒之久。
可以說,6.18一過京東就在開始備戰(zhàn)雙十一這個重要的日子,除了硬件上的采購,機柜預留,打好提前量,在軟件方面也進行了優(yōu)化和重構(gòu),才能夠?qū)е麓舜蝹鋺?zhàn)有條不紊的進行,也讓用戶能夠進行安全放心的購物。在采訪中得知,目前京東所擔心的問題并非流量過多,而是用戶流量不夠多。