大型網站架構系列:電商網站架構案例(3)

大型網站架構系列:電商網站架構案例(3)

 本文章是電商網站架構案例的第三篇,主要介紹數據庫集羣,讀寫分離,分庫分表,服務化,消息隊列的使用,以及本電商案例的架構總結。數據庫

6.5數據庫集羣(讀寫分離,分庫分表)

大型網站須要存儲海量的數據,爲達到海量數據存儲,高可用,高性能通常採用冗餘的方式進行系統設計。通常有兩種方式讀寫分離和分庫分表。緩存

讀寫分離:通常解決讀比例遠大於寫比例的場景,可採用一主一備,一主多備或多主多備方式。架構

本案例在業務拆分的基礎上,結合分庫分表和讀寫分離。以下圖:負載均衡

 

(1)       業務拆分後:每一個子系統須要單獨的庫;異步

(2)       若是單獨的庫太大,能夠根據業務特性,進行再次分庫,好比商品分類庫,產品庫;分佈式

(3)       分庫後,若是表中有數據量很大的,則進行分表,通常能夠按照Id,時間等進行分表;(高級的用法是一致性Hash)性能

(4)       在分庫,分表的基礎上,進行讀寫分離;大數據

 

相關中間件可參考Cobar(阿里,目前已不在維護),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基礎上,國內不少牛人,號稱國內第一開源項目)。優化

分庫分表後序列的問題,JOIN,事務的問題,會在分庫分表主題分享中,介紹。網站

6.6服務化

         將多個子系統公用的功能/模塊,進行抽取,做爲公用服務使用。好比本案例的會員子系統就能夠抽取爲公用的服務。

        

6.7消息隊列

         消息隊列能夠解決子系統/模塊之間的耦合,實現異步,高可用,高性能的系統。是分佈式系統的標準配置。本案例中,消息隊列主要應用在購物,配送環節。

(1)       用戶下單後,寫入消息隊列,後直接返回客戶端;

(2)       庫存子系統:讀取消息隊列信息,完成減庫存;

(3)       配送子系統:讀取消息隊列信息,進行配送;

 

目前使用較多的MQ有Active MQ,Rabbit MQ,Zero MQ,MS MQ等,須要根據具體的業務場景進行選擇。建議能夠研究下Rabbit MQ。

6.8其餘架構(技術)

除了以上介紹的業務拆分,應用集羣,多級緩存,單點登陸,數據庫集羣,服務化,消息隊列外。還有CDN,反向代理,分佈式文件系統,大數據處理等系統。

此處不詳細介紹,你們能夠問度娘/Google,有機會的話也能夠分享給你們。

7、架構總結

 

以上是本次分享的架構總結,其中細節可參考前面分享的內容。其中還有不少能夠優化和細化的地方,由於是案例分享,主要針對重要部分作了介紹,工做中須要你們根據具體的業務場景進行架構設計。 

以上是電商網站架構案例的分享一共有三篇,從電商網站的需求,到單機架構,逐步演變爲經常使用的,可供參考的分佈式架構的原型。除具有功能需求外,還具有必定的高性能,高可用,可伸縮,可擴展等非功能質量需求(架構目標)。

關於負載均衡,業務拆分,集羣架構,讀寫分離,分庫分表,服務化,消息隊列等經常使用技術和架構實現,本博客將會推出系列文章,進行介紹。歡迎小夥伴們圍觀。

相關文章
相關標籤/搜索