購物商城學習--第一講(電商系統架構介紹)


學習了taotao商城第二版對應系列的視頻,下面開始總結對應用到的技術點以及逐步開發使用到的技術,為以后springboot系列打下堅實的基礎吧。以下是B2C電商系統架構,這期視頻會涉及到其中一些模塊。

傳統架構使用表現層+業務層+持久層,訪問數據庫,單表單庫,在並發量小的時候可以應付,但當並發量達到千級別之后,tomcat理論上的處理並發能力在windows上為200個線程,具體tomcat支持並發的相關數據參考https://my.oschina.net/wuminghai/blog/803299所述。單體tomcat超過最大線程數的處理邏輯參照https://blog.csdn.net/Ideality_hunter/article/details/72770813。理論上不建議超過150個線程,這時候就可以考慮tomcat集群,通過nginx反向代理的方式做負載均衡,注意需要處理session共享的問題。原理就是tomcat間隔一定時間廣播自己的session信息,從而達到session共享。可是並發量繼續往上的話,session廣播會造成廣播風暴,這個時候就需要考慮將各個功能模塊拆分成獨立的功能,將所有的session放置在單點登錄系統中,通過系統間的配合完成整個業務邏輯,稱之為分布式。單獨每個功能模塊就可以繼續使用集群的方式來處理高並發的場景。這樣系統架構就被拆分成以下方式:

上面涉及到兩個概念:

  • 分布式:多個子系統相互協作完成的業務流程,系統間需要通信;
  • 集群:同一個工程部署到多個服務器上,

基於以上分布式架構部署方式,引入了SOA(service oriented architecture)面向服務的概念,將工程拆分成服務層和表現層。服務層沒有界面,只對外提供服務即可。表現層處理和頁面的交互,通過調用服務層的服務來實現。比如訂單系統需要查詢商品服務,前台系統也需要查詢商品服務,因為把商品服務獨立出來了,做到了代碼復用,調用接口即可。

因為引入分布式架構,需要系統間通信,可以使用基於soap協議(http+xml)的webservice通信方式,也可以使用restful(http+json)風格,或者使用socket協議(典型的如dubbo消息中間件)通信方式進行數據傳遞(socket(tcp/udp在網絡層)傳輸效率高於http協議(在應用層))。服務層和數據庫之間添加了redis緩存NoSQL數據庫,提升重復性查詢效率。持久層為mysql集群,由mycat數據庫中間件來管理。solr服務處理查詢,通過建立索引庫來實現。消息隊列專門用來處理各個模塊之間的消息。最終我們的商城系統架構圖如下圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM