支撐618大促 京東都在做什么?
原創電商網站如何在重大節日支撐龐大的訪問量和成交量一直是業內人士關注的話題。
京東618過去不久,京東官方公布的數據顯示,6月18日當日的下單量超過1500萬單,相比去年同期增長超過100%,其中移動端訂單量占比超過60%。
京東集團高級副總裁張晨公開表示:“今年618,京東的備戰系統沒有出現任何問題。”7月4日,京東技術開放日邀請京東各個業務線的負責人,分享京東如何支撐618大促。
不斷改進京東技術架構
京東自1998年在北京成立,已經12年。從2010年開始,京東618大促活動已經經歷了六年。為了更好支撐大促,京東一直在對系統架構進行優化和改造。
京東商城交易平臺總監王曉鐘表示,618剛開始的兩年,技術不成熟,所以京東開始做改變。他介紹,京東用了四年的時間,才把系統提升到如今的穩定性。
2011年-2012年,京東一直做技術和架構上的突破。
2013年-2014年,整體的技術架構已經穩定,技術上的突破由架構級變成點級,如改進核心代碼;此外,他透露,原先管理上跟不上,這兩年對管理做了改進,團隊更加成熟。
2014年-2015年,多中心交易擴展悄然進行。王曉鐘透露,今年618與去年相比,***的不同是今年采用了多中心交易。去年雙11結束后,京東開始往多中心交易方向去改造。今年,面向用戶的讀流量,已經用上了多中心交易。下一步,要實現面向用戶寫流量的多中心。
下一個攻克難點:面向用戶的寫流量
王曉鐘透露,面向用戶的讀流量已經達到標準,整個團隊下半年的技術攻關重點是寫流量。
首先來普及一下這兩個概念。讀流量:是指用戶在瀏覽電商網站時不能改變的數據,比如商品的名稱、商品的價格、商品的庫存。寫流量:是指用戶可以改變的數據,比如賬戶的余額、優惠券、取消訂單等。寫流量分為兩塊,一塊是面向用戶,用戶看到的京東商城;另一塊是采銷和運營人員看到的商城,他們能改變商品的名稱、價格和庫存。
讀流量的分布沒有一致性的問題,相對靜止;寫流量是動態的。王曉鐘分析:“例如,如果一瓶礦泉水通過機房一賣出,機房二也要扣掉一瓶的數,高并發情況下,兩個機房同時存在流量。舉個例子,北京市還有十瓶礦泉水,兩個機房同時接到一單,機房一需要八瓶礦泉水,機房二也需要八瓶礦泉水,總共十六瓶。那這八瓶給誰不給誰?兩個機房都能看到庫存還有十瓶。***,一定是其中一個機房看到另一個機房的數據,才能解決這個問題,所以這個問題特別難解決。”
事實上,業內寫流量的問題不僅存在于京東,支付寶、12306都存在這樣的問題,高并發時,數據一致性是非常難解決的。
向MySQL遷移來解決問題
京東資深架構師者文明表示,目前京東95%以上的應用都已經跑在MySQL上。他認為,Oracle的數據庫不夠靈活,水平擴展有局限限制,非金融類的業務,完全沒有必要使用Oracle。
他表示,寫流量瓶頸的問題,也可以通過MySQL來解決,主要通過以下幾個方面:
1、 把現有放在Oracle數據庫上的應用遷移到MySQL上;
2、 對數據庫進行水平切分,即拆表拆庫;
3、 提升I/O性能,通過優化軟件、升級服務器、增加服務器實現;
4、 異步寫數據庫
者文明表示:“目前京東的寫流量沒有達到已有業務的瓶頸,但是作為技術部門要提前突破瓶頸,到今年雙11就能解決寫流量瓶頸的問題。”
編后語:
采訪中,王曉鐘表示,很多優化都是通過加機器的方式解決,小的瓶頸有很多優化的點,但是大的瓶頸,仍需要通過加機器的方式來解決。整個架構發展經過兩個階段,***個階段,應用和數據不支持水平擴展,加機器沒有用;第二個階段,支持水平擴展后,加機器很管用。而他認為,面對高并發的大促,臨時加機器是不靠譜的,流量都要提前預估好,本次京東618準備了平時10倍的流量。