[收藏]
摘要:本文重點介紹了海爾電商平台的架構方案,也用不少篇幅闡述面臨的場景和挑戰,以及在架構方案決策過程中的關注點。其實作為乙個優秀的電商平台,提供極致的使用者體驗、讓技術最大化地創造價值,才是架構的終極目標。
多數電商平台都會經歷相似的過程,流量和業績每年以幾倍至十幾倍的速度增長,每年都要接受幾次大規模、全方位的系統檢閱,例如雙 11、周年慶等購物狂歡節,期間流量和訂單可能是日常的十幾倍甚至幾十倍,產生的峰值對平台形成極其強烈的衝擊,對電商平台的架構帶來巨大的考驗。因此, 對電商平台的規劃和架構工作不僅要**遠矚,而且要細緻入微,否則將導致平台無法滿足高速增長的業務發展,細微處的失誤也可能造成嚴重後果,不僅影響業務 指標的實現,還可能導致對系統進行重新架構,勞時費力又傷錢。
從2023年開始,海爾進入了網路化發展階段,企業平台化、使用者個性化和員工創客化的「三化」做法為電商的蓬勃發展提供了很好的土壤,也是海爾 在面對網際網路轉型時的乙個重點。海爾電商平台在發展過程中也同樣經歷了上述的問題。下面就拋磚引玉,為大家分享海爾電商平台應對電商峰值的架構設計經驗。
隨著電商業務開展和業績增長,系統結構和邏輯變得越來越複雜。為應對業務規模和複雜性的增長,需要將系統按照細分專業領域拆分;為應對流量和交 易的增長,需要將**進行大量子站拆分。這種狀況下,soa在保持清晰的系統結構和良好的邏輯組織方面提供了有力保障,為業務優化調整及新業務的開展帶來 巨大收益。
通過服務封裝和嚴格分離,為電商平台實現高伸縮性打下堅實基礎。實現高伸縮性的主要工作集中在服務內部,對客戶端影響的評估和改造工作也變得非常清晰。這將大大降低了實現高伸縮性的難度、工作量和實施週期。
dubbo是阿里提供的乙個優秀的開源服務框架,在高併發情況下具有優秀的效能表現,海爾電商的soa架構全面基於dubbo服務框架。關於dubbo框架的詳細介紹可以參考github上的dubbo專案文件。下面對dubbo框架工作機制進行簡單介紹。
如圖1所示,每個服務提供者啟動時都會註冊到註冊中心,並且通過長連線與註冊中心保持心跳檢測。這樣註冊中心就擁有乙份完整、可用的服務提供者 清單,某個服務提供者下線或由於故障中斷,註冊中心都能感知到並從清單中刪除這個提供者。消費者啟動時從註冊中心獲得服務提供者清單,並與提供者建立長連 接,後續直接呼叫服務提供者,不再經過註冊中心,避免註冊中心成為瓶頸。每個消費者同樣與註冊中心保持長連線,這樣有新的提供者註冊或者某個提供者下線, 都由註冊中心通知到每個消費者。消費者在呼叫服務提供者時支援各種負載均衡和故障容錯策略。監控中心則負責執行狀態統計,例如每分鐘的呼叫次數和平均耗時 等。
圖1 dubbo服務部署架構示意圖
dubbo框架不僅實現了高效能、高可用性,而且使用方便,擴充套件性非常好。海爾電商所有服務都基於dubbo框架開發,圖2是系統整體soa架構情況。
圖2 海爾電商soa架構示意圖
面臨的挑戰
產品的檢索和展示在電商平台中具有舉足輕重的地位,貫穿使用者瀏覽、購物整個過程,以及訂單交付全流程。產品服務需要為整個平台提供資料請求和檢索服務,而各品類的產品差異性非常大,這給產品服務設計帶來了巨大的挑戰。
將頁面或者部分頁面的靜態化是一種非常有效的優化方式,可以極大地降低對後台服務和資料的請求。但靜態化帶來的最大弊端就是服務端喪失了控制力,使得一些深入的自動化、智慧型化策略難以應用。因此,我們希望通過提公升服務端的效能和伸縮性,來避免靜態化的方案。
效能和伸縮性是電商平台的關鍵指標。為了保障系統效能和伸縮性,不少時候我們需要犧牲或者完全拒絕某些功能,或者降低系統的靈活性和擴充套件性等。在產品服務架構設計階段,我們努力思考和研究著一種可以魚和熊掌兼得的解決方案。
解決方案
如圖3所示,在資料庫層允許複雜的產品儲存結構設計,以細粒度、深度優化的關係模型充分實現產品資料模型的通用性、可擴充套件性。在資料模型設計時完全不用關心客戶端檢索查詢的複雜性和效能問題。
圖3 產品服務邏輯架構示意圖
產品查詢引擎將複雜的資料儲存模型封裝成乙個簡單的邏輯模型。這個邏輯模型實現的效果,完全等同於產品的所有屬性都儲存在同一張資料庫表中,邏 輯模型的每個屬性對應資料庫表中的乙個字段。在這個邏輯模型的基礎上實現了乙個簡潔的dsl,供客戶端進行檢索查詢。客戶端工作在邏輯模型和dsl之上, 檢索查詢簡單、靈活,同樣完全不用關心產品資料儲存模型的複雜性和效能問題。
產品查詢語言dsl
產品查詢語言dsl的語法類似sql中的where條件語法,任何乙個開發人員都很容易掌握。客戶端將dsl表示式傳給服務端,即可得到滿足條件的產品列表及相關屬性資料(圖4)。
圖4 查詢語言dsl工作原理
dsl還支援中文語法,更方便使用,尤其對於業務人員進行複雜的後台檢索查詢,或者為前台頁面及欄位設定產品展示的過濾條件等情況。
產品查詢引擎
圖5描述了查詢引擎的核心元件及關鍵的執行流、資料流。編譯器基於antlr開發,職責是將dsl表示式編譯為語法樹,並完成一系列編譯優化操 作。執行引擎使用語法樹逐個對產品進行匹配,得到符合條件的產品列表。智慧型排序引擎基於產品綜合競爭力評估模型,為結果集進行排序,實現最大化提公升轉換率 的目的。結果構造器則根據客戶端在呼叫服務時指定的要求,將客戶端所需屬性載入到結果集中。
圖5 查詢引擎工作機制
在服務啟動時將產品資料快取到記憶體中,通過訂閱mq訊息佇列,在資料發生變化時重新整理有變化的資料。
產品服務架構
產品服務分不同集群進行部署,面向web應用和其他服務的集群在執行期間幾乎不會產生資料庫請求,因此不管**訪問量和交易量多高,資料庫都不會產生壓力瓶頸。在系統峰值期間,只需為web和服務新增伺服器即可,實現了高伸縮目標。
效果以查詢引擎為核心的產品服務是乙個魚與熊掌兼得的架構設計案例,通用性、擴充套件性、伸縮性等在電商平台中相互制約、矛盾的一組核心架構目標全部得到滿足。
作者劉志斌,海爾電商首席架構師,資深技術控,10多年專注於**鏈和電商領域,曾先後在麥考林和麥包包任職架構師。
電商系統架構總論篇
本篇為電商性系統架構總論,總體概述系統架構要求與解決思路。社群電商系統是以事務為劃分邊界的軟體系統,系統要求保持資料事務性與原子性。交易性系統有如下特點 1.高併發量,低延遲。系統要求能負載高峰時段的並行壓力,並且能滿足在足夠短的時間內響應。2.分布式。系統要求可以水平方向增加或者減少主機例項來完成...
電商概述 電商分類
按模式 b2c business to consumer 商家與個人的交易行為 b2b business to business 企業與企業的行為 例子 阿里巴巴,聰慧網,或者日常生活中的批發 c2c consumer to consumer 個人向個人提供商品或者服務 c2b consumer t...
電商平台的系統組織架構
參與電商系統開發已有兩年,我一直負責的工作就是跟電商平台對接,起初對接的平台只有 天貓 京東這幾個主流大平台,後來隨著各品牌的業務拓展,後續逐漸對接其他比較有規格的電商平台 目前已對接 唯品會,蘇寧易購,小紅書,寺庫,網易考拉,噹噹,後續還會繼續對接其他渠道 一開始我對於對接這麼多平台並不是很理解,...