小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

海爾電商峰值系統(tǒng)架構設計

 ellesmere 2016-01-14


導語

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



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

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

站在巨人肩膀上的SOA架構

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

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

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

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


圖1 Dubbo服務部署架構示意圖

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


圖2 海爾電商SOA架構示意圖

魚與熊掌兼得的產(chǎn)品服務架構

面臨的挑戰(zhàn)

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


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

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

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


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

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

解決方案

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


圖3 產(chǎn)品服務邏輯架構示意圖

產(chǎn)品查詢引擎將復雜的數(shù)據(jù)存儲模型封裝成一個簡單的邏輯模型。這個邏輯模型實現(xiàn)的效果,完全等同于產(chǎn)品的所有屬性都存儲在同一張數(shù)據(jù)庫表中,邏輯模型的每個屬性對應數(shù)據(jù)庫表中的一個字段。在這個邏輯模型的基礎上實現(xiàn)了一個簡潔的DSL,供客戶端進行檢索查詢。客戶端工作在邏輯模型和DSL之上,檢索查詢簡單、靈活,同樣完全不用關心產(chǎn)品數(shù)據(jù)存儲模型的復雜性和性能問題。

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

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


圖4 查詢語言DSL工作原理

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


產(chǎn)品查詢引擎

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


圖5 查詢引擎工作機制

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

產(chǎn)品服務架構

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

效果


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

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

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

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


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

……

作者劉志斌,海爾電商首席架構師


來源:CSDN

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

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

·END·





架構師

我們都是架構師!




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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多