电竞比分网-中国电竞赛事及体育赛事平台

分享

海爾電商峰值系統(tǒng)架構(gòu)設(shè)計(jì)

 ellesmere 2016-01-14


導(dǎo)語(yǔ)

本文重點(diǎn)介紹了海爾電商平臺(tái)的架構(gòu)方案,也用不少篇幅闡述面臨的場(chǎng)景和挑戰(zhàn),以及在架構(gòu)方案決策過(guò)程中的關(guān)注點(diǎn)。其實(shí)作為一個(gè)優(yōu)秀的電商平臺(tái),提供極致的用戶體驗(yàn)、讓技術(shù)最大化地創(chuàng)造價(jià)值,才是架構(gòu)的終極目標(biāo)。



多數(shù)電商平臺(tái)都會(huì)經(jīng)歷相似的過(guò)程,流量和業(yè)績(jī)每年以幾倍至十幾倍的速度增長(zhǎng),每年都要接受幾次大規(guī)模、全方位的系統(tǒng)檢閱,例如雙11、周年慶等購(gòu)物狂歡節(jié),期間流量和訂單可能是日常的十幾倍甚至幾十倍,產(chǎn)生的峰值對(duì)平臺(tái)形成極其強(qiáng)烈的沖擊,對(duì)電商平臺(tái)的架構(gòu)帶來(lái)巨大的考驗(yàn)。因此,對(duì)電商平臺(tái)的規(guī)劃和架構(gòu)工作不僅要高瞻遠(yuǎn)矚,而且要細(xì)致入微,否則將導(dǎo)致平臺(tái)無(wú)法滿足高速增長(zhǎng)的業(yè)務(wù)發(fā)展,細(xì)微處的失誤也可能造成嚴(yán)重后果,不僅影響業(yè)務(wù)指標(biāo)的實(shí)現(xiàn),還可能導(dǎo)致對(duì)系統(tǒng)進(jìn)行重新架構(gòu),勞時(shí)費(fèi)力又傷錢。

從2012年開始,海爾進(jìn)入了網(wǎng)絡(luò)化發(fā)展階段,企業(yè)平臺(tái)化、用戶個(gè)性化和員工創(chuàng)客化的“三化”做法為電商的蓬勃發(fā)展提供了很好的土壤,也是海爾在面對(duì)互聯(lián)網(wǎng)轉(zhuǎn)型時(shí)的一個(gè)重點(diǎn)。海爾電商平臺(tái)在發(fā)展過(guò)程中也同樣經(jīng)歷了上述的問(wèn)題。下面就拋磚引玉,為大家分享海爾電商平臺(tái)應(yīng)對(duì)電商峰值的架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。

站在巨人肩膀上的SOA架構(gòu)

隨著電商業(yè)務(wù)開展和業(yè)績(jī)?cè)鲩L(zhǎng),系統(tǒng)結(jié)構(gòu)和邏輯變得越來(lái)越復(fù)雜。為應(yīng)對(duì)業(yè)務(wù)規(guī)模和復(fù)雜性的增長(zhǎng),需要將系統(tǒng)按照細(xì)分專業(yè)領(lǐng)域拆分;為應(yīng)對(duì)流量和交易的增長(zhǎng),需要將網(wǎng)站進(jìn)行大量子站拆分。這種狀況下,SOA在保持清晰的系統(tǒng)結(jié)構(gòu)和良好的邏輯組織方面提供了有力保障,為業(yè)務(wù)優(yōu)化調(diào)整及新業(yè)務(wù)的開展帶來(lái)巨大收益。

通過(guò)服務(wù)封裝和嚴(yán)格分離,為電商平臺(tái)實(shí)現(xiàn)高伸縮性打下堅(jiān)實(shí)基礎(chǔ)。實(shí)現(xiàn)高伸縮性的主要工作集中在服務(wù)內(nèi)部,對(duì)客戶端影響的評(píng)估和改造工作也變得非常清晰。這將大大降低了實(shí)現(xiàn)高伸縮性的難度、工作量和實(shí)施周期。

Dubbo是阿里提供的一個(gè)優(yōu)秀的開源服務(wù)框架,在高并發(fā)情況下具有優(yōu)秀的性能表現(xiàn),海爾電商的SOA架構(gòu)全面基于Dubbo服務(wù)框架。關(guān)于Dubbo框架的詳細(xì)介紹可以參考GitHub上的Dubbo項(xiàng)目文檔。下面對(duì)Dubbo框架工作機(jī)制進(jìn)行簡(jiǎn)單介紹。

如圖1所示,每個(gè)服務(wù)提供者啟動(dòng)時(shí)都會(huì)注冊(cè)到注冊(cè)中心,并且通過(guò)長(zhǎng)連接與注冊(cè)中心保持心跳檢測(cè)。這樣注冊(cè)中心就擁有一份完整、可用的服務(wù)提供者清單,某個(gè)服務(wù)提供者下線或由于故障中斷,注冊(cè)中心都能感知到并從清單中刪除這個(gè)提供者。消費(fèi)者啟動(dòng)時(shí)從注冊(cè)中心獲得服務(wù)提供者清單,并與提供者建立長(zhǎng)連接,后續(xù)直接調(diào)用服務(wù)提供者,不再經(jīng)過(guò)注冊(cè)中心,避免注冊(cè)中心成為瓶頸。每個(gè)消費(fèi)者同樣與注冊(cè)中心保持長(zhǎng)連接,這樣有新的提供者注冊(cè)或者某個(gè)提供者下線,都由注冊(cè)中心通知到每個(gè)消費(fèi)者。消費(fèi)者在調(diào)用服務(wù)提供者時(shí)支持各種負(fù)載均衡和故障容錯(cuò)策略。監(jiān)控中心則負(fù)責(zé)運(yùn)行狀態(tài)統(tǒng)計(jì),例如每分鐘的調(diào)用次數(shù)和平均耗時(shí)等。


圖1 Dubbo服務(wù)部署架構(gòu)示意圖

Dubbo框架不僅實(shí)現(xiàn)了高性能、高可用性,而且使用方便,擴(kuò)展性非常好。海爾電商所有服務(wù)都基于Dubbo框架開發(fā),圖2是系統(tǒng)整體SOA架構(gòu)情況。


圖2 海爾電商SOA架構(gòu)示意圖

魚與熊掌兼得的產(chǎn)品服務(wù)架構(gòu)

面臨的挑戰(zhàn)

產(chǎn)品的檢索和展示在電商平臺(tái)中具有舉足輕重的地位,貫穿用戶瀏覽、購(gòu)物整個(gè)過(guò)程,以及訂單交付全流程。產(chǎn)品服務(wù)需要為整個(gè)平臺(tái)提供數(shù)據(jù)請(qǐng)求和檢索服務(wù),而各品類的產(chǎn)品差異性非常大,這給產(chǎn)品服務(wù)設(shè)計(jì)帶來(lái)了巨大的挑戰(zhàn)。


  • 負(fù)載權(quán)重高。電商平臺(tái)中幾乎每一個(gè)前臺(tái)頁(yè)面都與產(chǎn)品展示和檢索相關(guān),產(chǎn)品服務(wù)的負(fù)載在整個(gè)平臺(tái)中占比非常高,對(duì)產(chǎn)品服務(wù)的請(qǐng)求量可能達(dá)到整站流量的幾倍、幾十倍。在電商活動(dòng)高峰期間,核心系統(tǒng)中首當(dāng)其沖的便是產(chǎn)品服務(wù)。因此,產(chǎn)品服務(wù)的設(shè)計(jì)必須滿足高可用性,并且實(shí)現(xiàn)良好的性能和高伸縮性。

  • 產(chǎn)品差異性大。不同品類的產(chǎn)品具有不同維度的屬性和規(guī)格參數(shù),產(chǎn)品結(jié)構(gòu)的設(shè)計(jì)必須具備足夠的通用性和靈活性,才能良好地滿足電商平臺(tái)多品類運(yùn)營(yíng)的要求,以及在平臺(tái)、品類擴(kuò)展時(shí)可以提供快速的響應(yīng)支持。

  • 全方位檢索、排序。讓用戶方便快捷地在大量產(chǎn)品中找到自己滿意的產(chǎn)品,是電商平臺(tái)用戶體驗(yàn)和信息架構(gòu)中非常關(guān)鍵的一點(diǎn)。除了關(guān)鍵詞搜索、按類目檢索瀏覽之外,還需要提供按常用屬性進(jìn)行檢索。在深入優(yōu)化用戶體驗(yàn)時(shí),可能會(huì)提出更復(fù)雜的檢索處理邏輯,例如組合屬性檢索,自動(dòng)根據(jù)檢索結(jié)果反過(guò)濾掉無(wú)結(jié)果的類目和屬性,展示符合各個(gè)屬性條件的商品個(gè)數(shù),以及實(shí)時(shí)地結(jié)合大數(shù)據(jù)分析結(jié)果添加更多自動(dòng)化、智能化的策略等。


將頁(yè)面或者部分頁(yè)面的靜態(tài)化是一種非常有效的優(yōu)化方式,可以極大地降低對(duì)后臺(tái)服務(wù)和數(shù)據(jù)的請(qǐng)求。但靜態(tài)化帶來(lái)的最大弊端就是服務(wù)端喪失了控制力,使得一些深入的自動(dòng)化、智能化策略難以應(yīng)用。因此,我們希望通過(guò)提升服務(wù)端的性能和伸縮性,來(lái)避免靜態(tài)化的方案。

性能和伸縮性是電商平臺(tái)的關(guān)鍵指標(biāo)。為了保障系統(tǒng)性能和伸縮性,不少時(shí)候我們需要犧牲或者完全拒絕某些功能,或者降低系統(tǒng)的靈活性和擴(kuò)展性等。在產(chǎn)品服務(wù)架構(gòu)設(shè)計(jì)階段,我們努力思考和研究著一種可以魚和熊掌兼得的解決方案。

解決方案

如圖3所示,在數(shù)據(jù)庫(kù)層允許復(fù)雜的產(chǎn)品存儲(chǔ)結(jié)構(gòu)設(shè)計(jì),以細(xì)粒度、深度優(yōu)化的關(guān)系模型充分實(shí)現(xiàn)產(chǎn)品數(shù)據(jù)模型的通用性、可擴(kuò)展性。在數(shù)據(jù)模型設(shè)計(jì)時(shí)完全不用關(guān)心客戶端檢索查找的復(fù)雜性和性能問(wèn)題。


圖3 產(chǎn)品服務(wù)邏輯架構(gòu)示意圖

產(chǎn)品查詢引擎將復(fù)雜的數(shù)據(jù)存儲(chǔ)模型封裝成一個(gè)簡(jiǎn)單的邏輯模型。這個(gè)邏輯模型實(shí)現(xiàn)的效果,完全等同于產(chǎn)品的所有屬性都存儲(chǔ)在同一張數(shù)據(jù)庫(kù)表中,邏輯模型的每個(gè)屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的一個(gè)字段。在這個(gè)邏輯模型的基礎(chǔ)上實(shí)現(xiàn)了一個(gè)簡(jiǎn)潔的DSL,供客戶端進(jìn)行檢索查詢??蛻舳斯ぷ髟谶壿嬆P秃虳SL之上,檢索查詢簡(jiǎn)單、靈活,同樣完全不用關(guān)心產(chǎn)品數(shù)據(jù)存儲(chǔ)模型的復(fù)雜性和性能問(wèn)題。

產(chǎn)品查詢語(yǔ)言DSL

產(chǎn)品查詢語(yǔ)言DSL的語(yǔ)法類似SQL中的where條件語(yǔ)法,任何一個(gè)開發(fā)人員都很容易掌握??蛻舳藢SL表達(dá)式傳給服務(wù)端,即可得到滿足條件的產(chǎn)品列表及相關(guān)屬性數(shù)據(jù)(圖4)。


圖4 查詢語(yǔ)言DSL工作原理

DSL還支持中文語(yǔ)法,更方便使用,尤其對(duì)于業(yè)務(wù)人員進(jìn)行復(fù)雜的后臺(tái)檢索查詢,或者為前臺(tái)頁(yè)面及欄位設(shè)置產(chǎn)品展示的過(guò)濾條件等情況。


產(chǎn)品查詢引擎

圖5描述了查詢引擎的核心組件及關(guān)鍵的執(zhí)行流、數(shù)據(jù)流。編譯器基于Antlr開發(fā),職責(zé)是將DSL表達(dá)式編譯為語(yǔ)法樹,并完成一系列編譯優(yōu)化操作。執(zhí)行引擎使用語(yǔ)法樹逐個(gè)對(duì)產(chǎn)品進(jìn)行匹配,得到符合條件的產(chǎn)品列表。智能排序引擎基于產(chǎn)品綜合競(jìng)爭(zhēng)力評(píng)估模型,為結(jié)果集進(jìn)行排序,實(shí)現(xiàn)最大化提升轉(zhuǎn)換率的目的。結(jié)果構(gòu)造器則根據(jù)客戶端在調(diào)用服務(wù)時(shí)指定的要求,將客戶端所需屬性加載到結(jié)果集中。


圖5 查詢引擎工作機(jī)制

在服務(wù)啟動(dòng)時(shí)將產(chǎn)品數(shù)據(jù)緩存到內(nèi)存中,通過(guò)訂閱MQ消息隊(duì)列,在數(shù)據(jù)發(fā)生變化時(shí)刷新有變化的數(shù)據(jù)。

產(chǎn)品服務(wù)架構(gòu)

產(chǎn)品服務(wù)分不同集群進(jìn)行部署,面向Web應(yīng)用和其他服務(wù)的集群在運(yùn)行期間幾乎不會(huì)產(chǎn)生數(shù)據(jù)庫(kù)請(qǐng)求,因此不管網(wǎng)站訪問(wèn)量和交易量多高,數(shù)據(jù)庫(kù)都不會(huì)產(chǎn)生壓力瓶頸。在系統(tǒng)峰值期間,只需為Web和服務(wù)添加服務(wù)器即可,實(shí)現(xiàn)了高伸縮目標(biāo)。

效果


  • 性能:最高峰值2.6億次/天,平均耗時(shí)60毫秒/次,后續(xù)對(duì)編譯器和執(zhí)行引擎進(jìn)行優(yōu)化,性能還有更大的提升空間。

  • 伸縮性:在一定條件下接近線性伸縮,所有使用產(chǎn)品服務(wù)的地方無(wú)須出于性能和系統(tǒng)壓力原因額外設(shè)計(jì)其他方案,直接調(diào)用產(chǎn)品服務(wù)即可。

  • 通用性:不會(huì)因?yàn)殡娚唐脚_(tái)性能和伸縮性要求而受到任何限制,可以像開發(fā)內(nèi)部管理系統(tǒng)PDM一樣設(shè)計(jì)產(chǎn)品數(shù)據(jù)模型,并且直接用于其他在線服務(wù)和前臺(tái)Web應(yīng)用,盡可能達(dá)到通用靈活的目的。

  • 擴(kuò)展性:通過(guò)邏輯模型屏蔽了底層的數(shù)據(jù)模型,將數(shù)據(jù)模型的優(yōu)化、擴(kuò)展工作量以及影響范圍降低到最小限度,提升了電商平臺(tái)中產(chǎn)品服務(wù)的可維護(hù)性和擴(kuò)展性。


以查詢引擎為核心的產(chǎn)品服務(wù)是一個(gè)魚與熊掌兼得的架構(gòu)設(shè)計(jì)案例,通用性、擴(kuò)展性、伸縮性等在電商平臺(tái)中相互制約、矛盾的一組核心架構(gòu)目標(biāo)全部得到滿足。

……

作者劉志斌,海爾電商首席架構(gòu)師


來(lái)源:CSDN

原文:http://kb.cnblogs.com/page/511435/

轉(zhuǎn)載文章,向原作者致敬!如有侵權(quán)或不周之處,敬請(qǐng)勞煩聯(lián)系若飛(微信:13511421494)馬上刪除,謝謝!

·END·





架構(gòu)師

我們都是架構(gòu)師!




    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多