摘要:2014年雙11異常火爆,不管是銷售數(shù)字,還是用戶體驗(yàn),這次全民購物狂潮再次刷新了過去的所有記錄。而在這一切背后,需要穩(wěn)定高效的系統(tǒng)架構(gòu)設(shè)計(jì)來提供有力支持。本文揭示了國內(nèi)各大知名電商架構(gòu)設(shè)計(jì)的佳技術(shù)實(shí)踐。
【導(dǎo)讀】自2009年11月11日,淘寶商城(現(xiàn)名天貓)拉開網(wǎng)購狂歡節(jié)的序幕,各大電商的促銷浪潮此起彼伏。此時(shí)的電商大戰(zhàn)不僅是價(jià)格之爭,更是技術(shù)的較量。如何設(shè)計(jì)電商峰值系統(tǒng)來更好地滿足用戶蜂擁而至的訪問,如何在海量數(shù)據(jù)處理中實(shí)時(shí)發(fā)現(xiàn)有效信息并轉(zhuǎn)化為商機(jī),成為眾多電商企業(yè)密切關(guān)注的問題。
2014年雙11異常火爆。天貓、京東、當(dāng)當(dāng)、小米、1號店、海爾商城、唯品會、蘑菇街、麥包包等國內(nèi)各大電商企業(yè),展開了更為激烈的競爭,而穩(wěn)定高效的系統(tǒng)架構(gòu)設(shè)計(jì)是保障這一系列競爭順利進(jìn)行的關(guān)鍵。本專題收集了各大知名電商的架構(gòu)設(shè)計(jì)實(shí)踐。讓大家一起來切身感受,這場購物狂歡背后的技術(shù)狂歡。
目錄
快穩(wěn)炫:電商峰值系統(tǒng)架構(gòu)三字訣。 雙11這樣的大型促銷活動帶來的是流量暴漲,在高訪問量的沖擊下,電商系統(tǒng)會受到以下挑戰(zhàn):瞬間訪問量可能是平時(shí)的幾十倍;網(wǎng)絡(luò)帶寬被占滿,用戶響應(yīng)很慢;機(jī)器負(fù)載高甚至宕機(jī);數(shù)據(jù)庫壓力過大導(dǎo)致服務(wù)不可用。此時(shí),如何設(shè)計(jì)電商峰值系統(tǒng)來更好地滿足用戶蜂擁而至的訪問,如何在海量數(shù)據(jù)處理中實(shí)時(shí)發(fā)現(xiàn)有效信息并轉(zhuǎn)化為商機(jī),成為眾多電商架構(gòu)師都在認(rèn)真思考的問題。解決這一問題的核心思路:采用分而治之的思想,大系統(tǒng)小做,小系統(tǒng)大做。濃縮一下就是三個(gè)字:快、穩(wěn)、炫。
當(dāng)當(dāng)網(wǎng)系統(tǒng)分級與海量信息動態(tài)發(fā)布實(shí)踐。摸清業(yè)務(wù)模式和活動特點(diǎn),是設(shè)計(jì)和運(yùn)維高峰值電商系統(tǒng),即高伸縮性系統(tǒng)的重中之重。但從另一個(gè)角度來說,在沒有動態(tài)彈性部署的前提下,過度的設(shè)計(jì)和服務(wù)器部署是一種浪費(fèi),特別是硬件非常有限的壽命會帶來每年巨大的成本攤銷。當(dāng)當(dāng)網(wǎng)根據(jù)業(yè)務(wù)發(fā)展速度和業(yè)務(wù)運(yùn)營規(guī)律,結(jié)合多年的經(jīng)驗(yàn),制定的系統(tǒng)伸縮性的設(shè)計(jì)原則和硬件常備策略使各流程能夠直接應(yīng)對日常5倍業(yè)務(wù)量的上漲。通過增加服務(wù)器的方式,能夠應(yīng)對10倍業(yè)務(wù)量上漲。而如果要應(yīng)對10倍以上的上漲,則需要提前做有針對性的系統(tǒng)優(yōu)化。但無論當(dāng)前承受的業(yè)務(wù)量是否超過了設(shè)計(jì)范圍,都不能影響設(shè)計(jì)范圍內(nèi)業(yè)務(wù)量的正常處理。
“米粉節(jié)”背后的故事——小米網(wǎng)搶購系統(tǒng)開發(fā)實(shí)踐。 今年4月的“米粉節(jié)”對小米網(wǎng)來說意義非凡,是其徹底重構(gòu)后迎來的一次全面壓力測試,涉及網(wǎng)站前端、后臺系統(tǒng)、倉儲物流、售后等各環(huán)節(jié)。此時(shí),高并發(fā)的負(fù)載能力、穩(wěn)定性、準(zhǔn)確性等已不是問題,靈活性與可運(yùn)營性成為關(guān)鍵。
京東峰值系統(tǒng)設(shè)計(jì)。京東是如何在雙11大促時(shí),保證用戶有平滑流暢的體驗(yàn),且系統(tǒng)不會出現(xiàn)異常的呢?京東的業(yè)務(wù)種類繁多,系統(tǒng)非常龐大,外部需要對接供應(yīng)商、消費(fèi)者和第三方商家三大板塊。內(nèi)部系統(tǒng)包括了商品供應(yīng)鏈中除商品設(shè)計(jì)和生產(chǎn)外的幾乎所有環(huán)節(jié),包括登錄、交易、后臺、供應(yīng)鏈、倉配、客服等。除此之外,京東系統(tǒng)交互強(qiáng),各個(gè)功能模塊之間關(guān)聯(lián)性強(qiáng),牽一發(fā)而動全身,做任何修改都需要慎之又慎。因此,京東電商系統(tǒng)的設(shè)計(jì)是圍繞系統(tǒng)穩(wěn)定性、可靠性、高并發(fā)和可擴(kuò)展性為核心開展的。
海爾電商峰值系統(tǒng)架構(gòu)設(shè)計(jì)佳實(shí)踐。多數(shù)電商平臺都會經(jīng)歷相似的過程,流量和業(yè)績每年以幾倍至十幾倍的速度增長,每年都要接受幾次大規(guī)模、全方位的系統(tǒng)檢閱,例如雙11、周年慶等購物狂歡節(jié),期間流量和訂單可能是日常的十幾倍甚至幾十倍,產(chǎn)生的峰值對平臺形成極其強(qiáng)烈的沖擊,對電商平臺的架構(gòu)帶來巨大的考驗(yàn)。 因此,對電商平臺的規(guī)劃和架構(gòu)工作不僅要高瞻遠(yuǎn)矚,而且要細(xì)致入微,否則將導(dǎo)致平臺無法滿足高速增長的業(yè)務(wù)發(fā)展,細(xì)微處的失誤也可能造成嚴(yán)重后果,不僅影響業(yè)務(wù)指標(biāo)的實(shí)現(xiàn),還可能導(dǎo)致對系統(tǒng)進(jìn)行重新架構(gòu),勞時(shí)費(fèi)力又傷錢。
唯品會峰值系統(tǒng)的架構(gòu)演變。唯品會每年大力度的促銷活動在4月19日,就是419(For One Night),意在告訴唯品會用戶只有這一晚有這么大的折扣力度。唯品會是一個(gè)閃購網(wǎng)站,用戶來得越早,越能買到又便宜又好的東西,所以在大促的一開始,會涌入大量用戶,形成系統(tǒng)流量峰值。本文總結(jié)了唯品會419時(shí)日志平臺遇到的問題和解決方案,同時(shí)根據(jù)實(shí)踐經(jīng)驗(yàn),整理了在面對峰值前要做的準(zhǔn)備。
1號店電商峰值與流式計(jì)算。京電商行業(yè)的很多業(yè)務(wù),強(qiáng)調(diào)訪問處理的實(shí)時(shí)性,包括電商搜索引擎、基于用戶購買行為的實(shí)時(shí)商品推薦和針對網(wǎng)站流量的監(jiān)控及反作弊等功能。這些業(yè)務(wù)要求處 理行為達(dá)到秒級甚至毫秒級的時(shí)延,從而促進(jìn)了以Storm為代表的流式計(jì)算系統(tǒng)的推廣和應(yīng)用。1號店結(jié)合自己的業(yè)務(wù)需求,在力求降低成本的前提下,終采納Storm計(jì)算框架來實(shí)現(xiàn)自己的分布式流計(jì)算平臺。本文中詳細(xì)闡釋了這一過程中的佳技術(shù)實(shí)踐。
蘑菇街如何在雙11中創(chuàng)造99.99%的可用性。 雙11購物節(jié)來臨前夕,蘑菇街積極備戰(zhàn),保障這種大型促銷活動能正常有序地進(jìn)行,確保99.99%以上的可用性。大致思路是:首先,清晰的架構(gòu)劃分可以大大減輕穩(wěn)定性工作量;其次,功夫要盡量在平時(shí)做足,避免總是出臨時(shí)解決方案;再次,普及穩(wěn)定性思維,注意細(xì)節(jié);后,出現(xiàn)問題,先快速恢復(fù)再查找根源。
麥包包峰值架構(gòu)實(shí)踐:履單流程的彈性架構(gòu)。 OMS(訂單管理系統(tǒng))是電商ERP系統(tǒng)中的核心模塊,其中的訂單履行流程(履單流程)是消費(fèi)者購物過程中有直接感知的后一段,關(guān)系到用戶體驗(yàn),其正確性和時(shí)效性必須得到保證。同時(shí)履單流程也是電商系統(tǒng)中直接面對銷售高峰帶來的短時(shí)間內(nèi)劇增的數(shù)據(jù)量的子系統(tǒng)之一,如何在流量驟增10倍甚至更多的情況下保證OMS的正常服務(wù),是每一家電商密切關(guān)注和不斷改進(jìn)的重點(diǎn),也是本文分享的核心經(jīng)驗(yàn)。
傳統(tǒng)企業(yè)電商峰值系統(tǒng)應(yīng)對實(shí)踐(商派架構(gòu)實(shí)踐)。在一個(gè)典型的電商系統(tǒng)中,核心對象主要有三個(gè): 會員、商品和訂單。整個(gè)系統(tǒng)主要是為消費(fèi)者服務(wù),運(yùn)營模型以流量與用戶量為核心,流量以導(dǎo)入新客戶為主,用戶量代表著老客戶的貢獻(xiàn)。雙11這樣的場景要求我們對系統(tǒng)進(jìn)行合理的峰值架構(gòu)設(shè)計(jì),以保證業(yè)務(wù)的順利開展。那么一個(gè)能夠應(yīng)對短時(shí)間流量暴漲的電商系統(tǒng),在同時(shí)考慮成本因素的情況下,具體會遇到哪些瓶頸,主要需要解決哪些層面的技術(shù)障礙呢?
電商峰值監(jiān)控經(jīng)驗(yàn)談(基調(diào)網(wǎng)絡(luò)實(shí)踐)。在一年一度的“雙11”購物狂歡節(jié)來臨時(shí),要確保用戶享受“快、穩(wěn)、炫”的搶購體驗(yàn),技術(shù)工程師們需要解決瞬間高并發(fā)的諸多問題,如海量數(shù)據(jù)處理、網(wǎng)絡(luò)傳輸產(chǎn)生的延遲和負(fù)載均衡,等等。那么,如何在時(shí)間了解出現(xiàn)的問題并及時(shí)解決問題呢?一套完整的應(yīng)用性能管理解決方案在電商峰值架構(gòu)中將發(fā)揮無比重要的作用,有了性能管理的保護(hù)傘,就可將“宕機(jī)”永遠(yuǎn)留在襁褓中。
節(jié)選
蘑菇街如何在雙11中創(chuàng)造99.99%的可用性
雙11購物節(jié)即將來臨,蘑菇街積極備戰(zhàn)各種大型 促銷活動,為全國性的互聯(lián)網(wǎng)購物節(jié)貢獻(xiàn)自己的 一份力量。保障這種大型促銷活動能正常有序地 進(jìn)行,確保99.99%以上的可用性,是我們需要面 對的一個(gè)嚴(yán)峻考驗(yàn)。因此,我們的工作主要依據(jù) 以下幾個(gè)思路開展。
該做什么的就做什么
保障整個(gè)系統(tǒng)的可用性和穩(wěn)定性,步需要做 的就是,使整體架構(gòu)清晰化、層次化。那么,對系統(tǒng)進(jìn)行合理拆分,是直觀的選擇。從業(yè)務(wù)和技術(shù)角度出發(fā),遵循SRP(Single Responsibility Principle)原則,合理拆分系統(tǒng)中的各個(gè)模塊,明確每個(gè)模塊的職責(zé)。這樣可以方便快速定位和排查問題,甚至可以有針對性地對每個(gè)模塊進(jìn)行優(yōu)化。
拆分方式基本上分為兩種,路由拆分和物理拆 分。所謂路由拆分,就是按照請求特征,將請求流量分?jǐn)偟絻蓚€(gè)或多個(gè)同質(zhì)的集群里面;而物理拆分,就是在路由拆分的基礎(chǔ)上,按照業(yè)務(wù)和技術(shù)上的特征,將同質(zhì)的集群進(jìn)行徹底拆分,成為非同質(zhì)集群。
下面以交易流程為例,來看一下如何操作拆分。交易流程主要包括購物車、下單、支付等幾個(gè)環(huán)節(jié),具體的拆分結(jié)果,如圖1所示。
圖1 交易流程拆分結(jié)果
經(jīng)過分析,整個(gè)交易流程按照架構(gòu)層次可以分解為展示層、業(yè)務(wù)層及外圍應(yīng)用三塊內(nèi)容,這三部分由于職責(zé)差異比較大,所以先按照物理拆分,讓層次清晰。
再來看展示層,由于存在一些共享的東西,如頁面元素等,做物理拆分,會引入額外的成本,所以路由拆分是不錯(cuò)的選擇。
接著來看業(yè)務(wù)層。這一層是很容易按照角色和業(yè)務(wù)場景進(jìn)行拆分的,例如,交易管理服務(wù)是給管理人員提供管理功能的,需要考慮權(quán)限、內(nèi)控等問題;交易核心服務(wù)是給業(yè)務(wù)主流程提供主要業(yè)務(wù)功能,需要考慮可用性;交易查詢服務(wù)是讀取交易數(shù)據(jù)的主要途徑,需要考慮易用性;交易網(wǎng)關(guān)服務(wù)主要是對接外部支付渠道,需要考慮連通性。很明顯,這一層由于自身的差異性比較大,所以采用物理拆分是上上策。
后來看外圍應(yīng)用,其中包括后臺管理、日志查 詢、業(yè)務(wù)監(jiān)控及交易超時(shí)控制等,這些應(yīng)用基本上都是在底層系統(tǒng)平臺(管理平臺、日志平臺、監(jiān) 控平臺以及任務(wù)平臺)進(jìn)行二次開發(fā)而成的,所以天生就適合進(jìn)行物理拆分。
從上面不難看出,拆分是一個(gè)細(xì)活,可以選擇的 維度很多,拆分方式也比較講究。良好的拆分方案,會讓系統(tǒng)更加清晰明了,每個(gè)模塊該做什么的就做什么。這樣應(yīng)對大型促銷活動時(shí),可以游刃有余地按照模塊特征進(jìn)行優(yōu)化。
小結(jié)
本文講述了蘑菇街在確保可用性和穩(wěn)定性實(shí)踐中的一些工作思路,但并不是說做好以上幾點(diǎn),就能夠保證網(wǎng)站在大型促銷活動中的99.99%可用性和穩(wěn)定性,只能算是在實(shí)踐過程中得到的一些經(jīng)驗(yàn)。
總結(jié)一下在可用性和穩(wěn)定性工作中的一些感悟。 首先,清晰的架構(gòu)劃分可以大大減輕穩(wěn)定性工作量;其次,功夫要盡量在平時(shí)做足,避免總是出臨 時(shí)解決方案;再次,普及穩(wěn)定性思維,注意細(xì)節(jié);后,出現(xiàn)問題,先快速恢復(fù)再查找根源。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。