首頁  >  文章  >  10分鐘速解 | 大型分散式電商系統架構

10分鐘速解 | 大型分散式電商系統架構

Java后端技术全栈
Java后端技术全栈轉載
2023-08-23 15:03:02700瀏覽


本文是學習大型分散式網站架構的技術總結。 對架構一個高效能、高可用、可伸縮及可擴展的分散式網站進行了概要性描述,並給予一個架構參考。 文中一部分為閱讀筆記,一部分是個人經驗總結,對大型分散式網站架構有較好的參考價值。

大型分散式網站架構技術

#1、大型網站的特性

  • #用戶多,分佈廣泛
  • 大流量,高並發
  • ##海量數據,服務高可用
  • 安全環境惡劣,易受網路攻擊
  • 功能多,變更快,頻繁發布
  • #從小到大,漸進發展
  • 以使用者為中心
  • #免費服務,付費體驗

2、大型網站架構目標

  • #高效能:提供快速的存取體驗。
  • 高可用:網站服務一直可以正常存取。
  • 可擴展:透過硬體增加/減少,提高/降低處理能力。
  • 安全性:提供網站安全存取和資料加密、安全儲存等策略。
  • 擴充:方便地透過新增/移除方式,增加/減少新的功能/模組。
  • 敏捷性:隨需應變,快速回應;
10分鐘速解 | 大型分散式電商系統架構

3 、大型網站架構模式

10分鐘速解 | 大型分散式電商系統架構
  • #分層:一般可分為應用層、服務層、資料層、管理階層與分析層;
  • 分割:一般依照業務/模組/功能特性劃分,例如應用層分為首頁、使用者中心。
  • 分散式:將應用程式分開部署(例如多台實體機),透過遠端呼叫協同工作。
  • 叢集:一個應用程式/模組/功能部署多份(如:多台實體機),透過負載平衡共同提供對外存取。
  • 快取:將資料放在距離應用程式或使用者最近的位置,加快存取速度。
  • 非同步:將同步的操作非同步化。客戶端發出請求,不等待服務端回應,等服務端處理完畢後,使用通知或輪詢的方式告知請求方。一般指:請求-回應-通知模式。
  • 冗餘:增加副本,提高可用性、安全性與效能。
  • 安全:對已知問題有有效的解決方案,對未知/潛在問題建立發現和防禦機制。
  • 自動化:將重複的、不需要人工參與的事情,透過工具的方式,使用機器完成。
  • 敏捷性:積極接受需求變更,快速回應業務發展需求。
  • 4、高效能架構

    #以使用者為中心,提供快速的網頁存取體驗。主要參數有較短的反應時間、較大的同時處理能力、較高的吞吐量與穩定的效能參數。

    可分為前端最佳化、應用層最佳化、程式碼層最佳化與儲存層最佳化。

    • 前端優化:網站業務邏輯之前的部分;
    • #瀏覽器優化:減少HTTP請求數,使用瀏覽器緩存,啟用壓縮,CSS JS位置,JS非同步,減少Cookie傳輸;CDN加速,反向代理;
    • 應用程式層最佳化:處理網站業務的伺服器。使用緩存,異步,集群
    • 程式碼最佳化:合理的架構,多線程,資源復用(物件池,線程池等),良好的資料結構,JVM調優,單例,Cache等;
    • 儲存最佳化:快取、固態硬碟、光纖傳輸、最佳化讀寫、磁碟冗餘、分散式儲存(HDFS)、NoSQL等。

    5、高可用架構

    #大型網站應該在任何時候都可以正常訪問,正常提供對外服務。因為大型網站的複雜性,分散式,廉價伺服器,開源資料庫,作業系統等特點,要確保高可用是很困難的,也就是說網站的故障是不可避免的。

    如何提高可用性,就是需要迫切解決的問題。首先,需要從架構層級考慮,在規劃的時候,就考慮可用性。產業內一般用幾個9表示可用性指標,例如四個9(99.99),一年內允許的不可用時間是53分鐘。

    不同層級使用的策略不同,一般採用冗餘備份和失效轉移解決高可用問題。

    • 應用程式層:一般設計為無狀態的,對於每個請求,使用哪一台伺服器處理是沒有影響的。一般使用負載平衡技術(需要解決Session同步問題)實現高可用。
    • 服務層:負載平衡,分級管理,快速失敗(超時設定),非同步調用,服務降級,冪等設計等。
    • 資料層:冗餘備份(冷,熱備[同步,非同步],溫備),失效轉移(確認,轉移,恢復)。數據高可用方面著名的理論基礎是CAP理論(持久性,可用性,數據一致性[強一致,用戶一致,最終一致])

    6 、可伸縮架構

    伸縮性是指在不改變原有架構設計的基礎上,透過增加/減少硬體(伺服器)的方式,提高/降低系統的處理能力。

    • 應用層:對應用進行垂直或水平切分。然後針對單一功能進行負載平衡(DNS、HTTP[反向代理]、IP、連結層)。
    • 服務層:與應用層類似;
    • #資料層:分庫、分錶、NoSQL等;常用演算法Hash,一致性Hash。

    7、可擴展架構

    #可以方便地進行功能模組的新增/移除,提供程式碼/模組等級良好的可擴充性。

    • 模組化,組件化:高內聚,低耦合,提高復用性,擴展性。
    • 穩定接口:定義穩定的接口,在接口不變的情況下,內部結構可以「隨意」變化。
    • 設計模式:應用物件導向思想,原則,使用設計模式,進行程式碼層面的設計。
    • 訊息佇列:模組化的系統,透過訊息佇列進行交互,使模組之間的依賴解耦。
    • 分散式服務:公用模組服務化,提供其他系統使用,提高可重複使用性,擴充性。

    8、安全架構

    #對已知問題有有效的解決方案,對未知/潛在問題建立發現和防禦機制。對於安全問題,首先要提高安全意識,建立一個安全的有效機制,從政策層面,組織層面進行保障,例如伺服器密碼不能洩露,密碼每月更新,並且三次內不能重複;每周安全掃描等。以製度化的方式,加強安全體系的建構。同時,需要注意與安全有關的各個環節。安全問題不容忽視,包括基礎設施安全,應用系統安全,資料保密安全等。

    • 基礎設施安全:硬體採購,作業系統,網路環境方面的安全。一般採用正規管道購買高品質的產品,選擇安全的作業系統,及時修補漏洞,安裝防毒軟體防火牆。防範病毒,後門。設定防火牆策略,建立DDOS防禦系統,使用攻擊偵測系統,進行子網路隔離等手段。
    • 應用系統安全:在程式開發時,對已知常用問題,使用正確的方式,在程式碼層面解決掉。防止跨站腳本攻擊(XSS),注入攻擊,跨站請求偽造(CSRF),錯誤訊息,HTML註釋,檔案上傳,路徑遍歷等。也可以使用Web應用防火牆(例如:ModSecurity),進行安全漏洞掃描等措施,加強應用程式層級的安全。
    • 資料保密安全:儲存安全(儲存在可靠的設備,即時,定時備份),保存安全(重要的資訊加密保存,選擇合適的人員複雜保存和偵測等) ,傳輸安全性(防止資料竊取和資料篡改);

    常用的加解密演算法(單項雜湊加密[MD5、SHA],對稱加密[DES、3DES、RC]) ,非對稱加密[RSA]等。

    9、敏捷性

    網站的架構設計,維運管理要適應變化,提供高伸縮性,高擴展性。方便的因應快速的業務發展,突增高流量存取等要求。

    除上述介紹的架構要素外,還需要引進敏捷管理,敏捷開發的想法。使業務,產品,技術,維運統一起來,隨需應變,快速回應。

    10、大型架構範例

    10分鐘速解 | 大型分散式電商系統架構

    #以上採用七層邏輯架構,第一層客戶層,第二層前端最佳化層,第三層應用層,第四層服務層,第五層資料儲存層,第六層大資料儲存層,第七層大資料處理層。

    • 客戶層:支援PC瀏覽器和手機APP。差別是手機APP可以直接透過IP訪問,反向代理伺服器。
    • 前端層:使用DNS負載平衡,CDN本地加速以及反向代理服務;
    • 應用層:網站應用叢集;依照業務進行垂直拆分,例如商品應用,會員中心等;
    • 服務層:提供公用服務,例如用戶服務,訂單服務,支付服務等;
    • #資料層:支援關係型資料庫叢集(支援讀寫分離),NOSQL集群,分散式檔案系統叢集;以及分散式Cache;
    • 大資料儲存層:支援應用層和服務層的日誌資料收集,關聯式資料庫和NOSQL資料庫的結構化和半結構化資料收集;
    • 大資料處理層:透過Mapreduce進行離線資料分析或Storm即時數據分析,並將處理後的數據存入關係型資料庫。 (實際使用中,離線資料和即時資料會依照業務要求進行分類處理,並存入不同的資料庫中,供應用層或服務層使用)。

    大型電商網站系統架構演進流程

    一個成熟的大型網站(如淘寶、天貓、騰訊等)的系統架構並不是一開始設計時就具備完整的高性能、高可用、高伸縮等特性的,它是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。

    所以成熟的系統架構是隨著業務的擴展而逐步完善的,並不是一蹴而就;不同業務特徵的系統,會有各自的重點,例如淘寶,要解決海量的商品信息的搜索、下單、支付;例如騰訊,要解決數億用戶的即時訊息傳輸;百度它要處理海量的搜尋請求。

    他們都有各自的業務特性,系統架構也有所不同。儘管如此我們也可以從這些不同的網站背景中,找出其中共用的技術,這些技術和手段廣泛運用在大型網站系統的架構中,下面就透過介紹大型網站系統的演化過程,來認識這些技術和手段。

    最開始的網站架構

    最初的架構,應用程式、資料庫、檔案都部署在一台伺服器上,如圖:

    10分鐘速解 | 大型分散式電商系統架構

    2、應用程式、資料、檔案分離

    隨著業務的擴展,一台伺服器已經無法滿足效能需求,故將應用程式、資料庫、檔案各自部署在獨立的伺服器上,並且根據伺服器的用途配置不同的硬件,達到最佳的效能效果。

    10分鐘速解 | 大型分散式電商系統架構

    3、利用快取改善網站效能

    在硬體優化效能的同時,同時也透過軟體進行效能優化,在大部分的網站系統中,都會利用快取技術改善系統的效能,使用快取主要源自於熱點資料的存在,大部分網站存取都遵循28原則(即80%的存取請求,最終落在20%的資料上),所以我們可以對熱點資料進行緩存,減少這些資料的存取路徑,提高使用者體驗。

    10分鐘速解 | 大型分散式電商系統架構

    快取實作常見的方式是本機快取、分散式快取。當然還有CDN、反向代理等,這個後面再說。本地緩存,顧名思義是將資料緩存在應用程式伺服器本地,可以存在記憶體中,也可以存在文件,OSCache就是常用的本地快取元件。本地快取的特點是速度快,但因為本地空間有限所以快取資料量也有限。分散式快取的特點是,可以快取海量的數據,並且擴展非常容易,在門戶類網站中常被使用,速度按理沒有本地緩存快,常用的分佈式緩存是Memcached、Redis。

    4、使用叢集改善應用程式伺服器效能

    #應用程式伺服器作為網站的入口,會承擔大量的請求,我們往往透過應用伺服器集群來分擔請求數。應用程式伺服器前面部署負載平衡伺服器調度使用者請求,根據分發策略將請求分發到多個應用程式伺服器節點。

    10分鐘速解 | 大型分散式電商系統架構

    常用的負載平衡技術硬體的有F5,價格比較貴,軟體的有LVS、Nginx、HAProxy。 LVS是四層負載平衡,根據目標位址和連接埠選擇內部伺服器,Nginx和HAProxy是七層負載平衡,可以根據封包內容選擇內部伺服器,因此LVS分發路徑優於Nginx和HAProxy,效能要高些,而Nginx和HAProxy則較具配置性,如可用來做動靜分離(根據請求封包特徵,選擇靜態資源伺服器或應用伺服器)。

    5、資料庫讀寫分離與分庫分錶

    #隨著使用者量的增加,資料庫成為最大的瓶頸,改善資料庫效能常用的手段是進行讀寫分離以及分庫分錶,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,透過主備功能實現資料同步。分庫分錶則分為水平切分和垂直切分,水平切分則是對一個資料庫特大的表進行拆分,例如使用者表。垂直切分則是根據業務的不同來切分,如用戶業務、商品業務相關的表格放在不同的資料庫中。

    10分鐘速解 | 大型分散式電商系統架構

    6、使用CDN和反向代理程式來提高網站效能

    假如我們的伺服器都部署在成都的機房,對於四川的用戶來說訪問是較快的,而對於北京的用戶訪問是較慢的,這是由於四川和北京分別屬於電信和聯通的不同發達地區,北京用戶訪問需要通過互聯路由器經過較長的路徑才能存取到成都的伺服器,返迴路徑也一樣,所以資料傳輸時間比較長。對於這種情況,常常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網絡訪問的路徑。比較專業的CDN業者有藍汛、網宿。

    而反向代理,則是部署在網站的機房,當用戶要求達到時首先訪問反向代理伺服器,反向代理伺服器將快取的資料傳回給用戶,如果沒有快取資料才會繼續訪問應用程式伺服器獲取,這樣做減少了獲取數據的成本。反向代理有Squid、Nginx。

    10分鐘速解 | 大型分散式電商系統架構

    7、使用分散式檔案系統

    用戶一天天增加,業務量越來越大,產生的檔案越來越多,單一的檔案伺服器已經無法滿足需求,這時就需要分散式檔案系統的支援。常用的分散式檔案系統有GFS、HDFS、TFS。

    10分鐘速解 | 大型分散式電商系統架構

    8、使用NoSQL和搜尋引擎

    #對於海量資料的查詢和分析,我們使用NoSQL資料庫加上搜尋引擎可以達到更好的效能。並不是所有的數據都要放在關係型數據中。常用的NoSQL有MongoDB、HBase、Redis,搜尋引擎有Lucene、Solr、Elasticsearch。

    10分鐘速解 | 大型分散式電商系統架構

    9、將應用程式伺服器進行業務分割

    隨著業務進一步擴展,應用程式變得非常臃腫,這時我們需要將應用程式進行業務拆分,如百度分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間透過訊息進行通訊或共享資料庫來實現。

    10分鐘速解 | 大型分散式電商系統架構

    10、建立分散式服務

    這時我們發現各個業務應用程式都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支援各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務架構建構分散式服務。阿里的Dubbo是一個不錯的選擇。

    10分鐘速解 | 大型分散式電商系統架構

    一張圖說明電商架構

    10分鐘速解 | 大型分散式電商系統架構

    #大型電商網站架構案例

    #1、電商案例的原因

    分散式大型網站,目前看主要有幾類:

    • 大型門戶,如網易,新浪等;
    • SNS網站,如校內,開心網等;
    • 電商網站,如阿里巴巴,京東商城,國美在線,汽車之家等。

    大型門戶一般是新聞類信息,可以使用CDN,靜態化等方式優化,開心網等交互性比較多,可能會引入更多的NoSQL,分佈式緩存,使用高效能的通訊框架等。電商網站具備以上兩類的特點,例如產品詳情可以採用CDN,靜態化,互動性高的需要採用NoSQL等技術。因此,我們採用電商網站作為案例,進行分析。

    2、電商網站需求

    客戶需求:

    • 建立全品類別的電子商務網站(B2C),用戶可以在線上購買商品,可以在線上支付,也可以貨到付款;
    • 用戶購買時可以在線上與客服溝通;
    • 用戶收到商品後,可以給商品評分,評價;
    • 目前有成熟的進銷存系統;需要與網站對接;
    • 希望能夠支援3~5年,業務的發展;
    • #預計3~5年用戶數達到1000萬;
    • 定期舉辦雙11、雙12、三八男人節等活動;
    • #其他的功能參考京東或國美在線等網站。

    客戶就是客戶,不會告訴你具體要什麼,只會告訴你他想要什麼,我們很多時候要引導,挖掘客戶的需求。好在提供了明確的參考網站。因此,下一步要進行大量的分析,結合產業,以及參考網站,提供給客戶方案。 需求功能矩陣需求管理傳統的做法,會使用使用案例圖或模組圖(需求清單)進行需求的描述。這樣做常常忽略掉一個很重要的需求(非功能需求),因此推薦大家使用需求功能矩陣,進行需求描述。本電商網站的需求矩陣如下:

    10分鐘速解 | 大型分散式電商系統架構

    #################################################################### ######一般網站,剛開始的做法,是三台伺服器,一台部署應用,一台部署資料庫,一台部署NFS檔案系統。 ######這是前幾年比較傳統的做法,之前見到一個網站10萬多會員,垂直服裝設計門戶,N多圖片。使用了一台伺服器部署了應用,資料庫以及圖片儲存。出現了很多效能問題。如下圖:###
    10分鐘速解 | 大型分散式電商系統架構

    #但是,目前主流的網站架構已經發生了翻天覆地的變化。一般都會採用集群的方式,進行高可用設計。至少是下面這個樣子:

    10分鐘速解 | 大型分散式電商系統架構

    #使用集群對應用伺服器進行冗餘,實現高可用;(負載平衡設備可與應用一塊部署)#使用資料庫主備模式,實現資料備份和高可用;

    • 4、系統容量預估
    • #預估步驟:
    • ##註冊用戶數-日均UV量-每日的PV量-每天的併發量;
    峰值預估:平常量的2~3倍;

    ### ####根據並發量(並發,事務數),儲存容量計算系統容量。 ############根據客戶需求:3~5年用戶數達到1000萬註冊用戶,可以做每秒並發數預估:###
    • 每天的UV為200萬(二八原則);
    • #每日每天點擊瀏覽30次;
    • PV量:200*30=6000萬;
    • 集中訪問量:240.2=4.8小時會有6000萬0.8=4800萬(二八原則);
    • 每分鐘同時發量:4.8*60=288分鐘,每分鐘訪問4800/288=16.7萬(約等於);
    • #每秒並發量:16.7萬/60=2780(約等於);
    • 假設:高峰期為平常值的三倍,則每秒的並發數可以達到8340次。
    • 1毫秒=1.3次存取;

    #沒好好學數學後悔了吧? ! (不知道以上算是否有錯誤,呵呵~~) 伺服器預估:(以tomcat伺服器舉例) 按一台web伺服器,支援每秒300個並發計算。平常需要10台伺服器(約等於);[tomcat預設配置是150],高峰期需要30台伺服器;容量預估:70/90原則 系統CPU一般維持在70%左右的水平,高峰期達到90%的水平,是不浪費資源,並比較穩定的。內存,IO類似。以上預估僅供參考,因為伺服器配置,業務邏輯複雜度等都有影響。在此CPU,硬碟,網路等不再進行評估。 5.網站架構分析 根據上述預估,有幾個問題:

    • 需要部署大量的伺服器,高峰期計算,可能要部署30台Web伺服器。而這三十台伺服器,只有秒殺,活動時才會用到,有大量的浪費。
    • 所有的應用程式部署在同一台伺服器,應用程式之間耦合嚴重。需要進行垂直切分和水平切分。
    • 大量應用存在冗餘程式碼
    • 伺服器Session同步耗費大量記憶體和網路頻寬
    • 資料需要頻繁存取資料庫,資料庫存取壓力巨大。

    大型網站一般需要做以下架構優化(優化是架構設計時,就要考慮的,一般從架構/程式碼層級解決,調優主要是簡單參數的調整,例如JVM調優;如果調優涉及大量程式碼改造,就不是調優了,屬於重構):

    • 業務分割
    • 應用程式叢集部署(分散式部署,叢集部署與負載平衡)
    • 多層快取
    • 單一登入(分散式Session)
    • #資料庫叢集(讀寫分離,分庫分錶)
    • 服務化
    • 訊息佇列
    • #其他技術

    6、網站架構優化

    6.1業務拆分

    根據業務屬性進行垂直切分,分割為產品子系統,購物子系統,支付子系統,評論子系統,客服子系統,介面子系統(對接如進銷存,簡訊等外部系統)。依業務子系統進行等級定義,可分為核心系統與非核心系統。核心系統:產品子系統,購物子系統,支付子系統;非核心:評論子系統,客服子系統,介面子系統。

    • 業務分割作用:提升為子系統可由專門的團隊和部門負責,專業的人做專業的事,解決模組之間耦合以及擴展性問題;每個子系統單獨部署,避免集中部署導致一個應用程式掛了,全部應用不可用的問題。
    • 等級定義作用:用於流量突發時,對關鍵應用進行保護,實現優雅降級;保護關鍵應用不受到影響。

    拆分後的架構圖:

    10分鐘速解 | 大型分散式電商系統架構

    #參考部署方案2

    10分鐘速解 | 大型分散式電商系統架構

    如上圖每個應用程式單獨部署,核心系統和非核心系統組合部署

    6.2應用叢集部署(分佈式,集群,負載平衡)

    • #分散式部署:將業務分割後的應用單獨部署,應用直接透過RPC進行遠端通訊;
    • 叢集部署:電商網站的高可用要求,每個應用程式至少部署兩台伺服器進行叢集部署;
    • 負載平衡:是高可用系統必須的,一般應用透過負載平衡實現高可用,分散式服務透過內建的負載平衡實現高可用,關係型資料庫透過主備方式實現高可用。

    叢集部署後架構圖:

    10分鐘速解 | 大型分散式電商系統架構

    #6.3 多級快取

    快取依存放的位置一般可分為兩類本機快取和分散式快取。本案例採用二級緩存的方式,進行緩存的設計。一級快取為本地緩存,二級緩存為分散式快取。 (還有頁面緩存,片段緩存等,那是更細粒度的劃分) 一級緩存,緩存資料字典,和常用熱點資料等基本不可變/有規則變化的信息,二級緩存緩存需要的所有緩存。當一級快取過期或不可用時,存取二級快取的資料。如果二級快取也沒有,則存取資料庫。快取的比例,一般1:4,即可考慮使用快取。 (理論上是1:2即可)。

    10分鐘速解 | 大型分散式電商系統架構

    可根據業務特性可使用下列快取過期策略:

    • ##快取自動過期;
    • 快取觸發過期;

    #6.4單一登入(分散式Session)

    系統分割為多個子系統,獨立部署後,不可避免的會遇到會話管理的問題。一般可採用Session同步,Cookies,分散式Session方式。電商網站一般採用分散式Session實作。再進一步可以根據分散式Session,建立完善的單一登入或帳號管理系統。

    10分鐘速解 | 大型分散式電商系統架構

    #流程說明

    • 使用者第一次登入時,將會話資訊(使用者Id和使用者資訊),例如以使用者Id為Key,寫入分散式Session;
    • 使用者再次登入時,取得分散式Session,是否有會話訊息,如果沒有則調到登入頁;
    • 一般採用Cache中間件實現,建議使用Redis,因此它有持久化功能,方便分散式Session宕機後,可以從持久化儲存中載入會話資訊;
    • 存入會話時,可以設定會話保持的時間,例如15分鐘,超過後自動逾時;

    結合Cache中間件,實現的分散式Session,可以很好的模擬Session會話。

    6.5資料庫叢集(讀寫分離,分庫分錶)

    大型網站需要儲存海量的數據,為達到大量資料存儲,高可用,高效能一般採用冗餘的方式進行系統設計。一般有兩種方式讀寫分離和分庫分錶。讀寫分離:一般解讀比例遠大於寫比例的場景,可採用一主一備,一主多備或多主多備方式。本案例在業務拆分的基礎上,結合分庫分錶和讀寫分離。如下圖:

    10分鐘速解 | 大型分散式電商系統架構

    • #業務分割後:每個子系統都需要單獨的函式庫;
    • 如果單獨的庫太大,可以根據業務特性,進行再次分庫,例如商品分類庫,產品庫;
    • 分庫後,如果表中有資料量很大的,則進行分錶,一般可以按照Id,時間等進行分錶;(高級的用法是一致性Hash)
    • 在分庫、在分錶的基礎上,進行讀寫分離;

    相關中間件可參考Cobar(阿里,目前已不在維護),TDDL(阿里),Atlas(奇虎360), MyCat。分庫分錶後序列的問題,JOIN,事務的問題,會在分庫分錶主題分享中,介紹。

    6.6服務化

    將多個子系統公用的功能/模組,進行抽取,作為公用服務使用。例如本案例的會員子系統就可以抽取為公用的服務。

    10分鐘速解 | 大型分散式電商系統架構

    6.7訊息佇列

    訊息佇列可以解決子系統/模組之間的耦合,實現異步,高可用,高效能的系統。是分散式系統的標準配置。本案例中,訊息佇列主要應用在購物,配送環節。

    • 用戶下單後,寫入訊息佇列,然後直接返回客戶端;
    • 庫存子系統:讀取訊息佇列信息,完成減庫存;
    • 配送子系統:讀取訊息佇列信息,進行配送;
    10分鐘速解 | 大型分散式電商系統架構

    ##目前使用較多的MQ有Active MQ、Rabbit MQ、Zero MQ、MS MQ等,需要根據特定的業務場景進行選擇。建議可以研究下Rabbit MQ。

    6.8其他架構(技術)

    #除了以上介紹的業務拆分,應用集群,多層緩存,單點登錄,資料庫集群,服務化,訊息隊列外。還有CDN,反向代理,分散式檔案系統,大數據處理等系統。這裡不詳細介紹,大家可以問度娘/Google,有機會的話也可以分享給大家。

    架構總結

    10分鐘速解 | 大型分散式電商系統架構

    ############################大型網站的架構是根據業務需求不斷完善的,根據不同的業務特徵會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段,希望能給大家帶來啟發。 ##########

    以上是10分鐘速解 | 大型分散式電商系統架構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:Java后端技术全栈。如有侵權,請聯絡admin@php.cn刪除