1.如何解決高并發(fā)問題
電腦系統(tǒng)架構(gòu)一般如下所示:
傳統(tǒng)的系統(tǒng)機構(gòu)一般是表現(xiàn)層-業(yè)務處-持久層-數(shù)據(jù)庫,如下圖所示
對于訪問量下的網(wǎng)上電子商城系統(tǒng),沒有問題,如果如果訪問量大,根本無法支撐。比如如果服務器用tomcat,tomcat支持的最大并發(fā)數(shù)理論值也就500左右。實際應用中,能到200,300就很不錯了。
1.1 如果解決訪問量大的問題?
一般采用負載均衡,進行l(wèi)oadbalance,我們常說的nginx反向代理實現(xiàn)負載均衡,其實是作用于代理層到服務層,在實際應用中,一個負載均衡的系統(tǒng)如下所示:
參考文檔:http://developer.51cto.com/art/201609/517313.htm
hash算法解釋,本質(zhì)是一個壓縮映射,好的hash算法可以減少沖突,并且使結(jié)果相對均勻。一個好的hashcode方法通常最好是不相等的對象產(chǎn)生不相等的hash值,理想情況下,hashcode方法應該把集合中不相等的實例均勻分布到所有可能的hash值上面:
1.2 如何處理session,數(shù)據(jù)共享
網(wǎng)上商城系統(tǒng)網(wǎng)站分布式環(huán)境下,每次請求可能分布到不同到server,如何記錄用戶到狀態(tài)?比如用戶登錄后,點擊收件箱,然后再進入發(fā)件箱,這個請求被分發(fā)到另外到server,而這個server根本沒有當前用戶到session。所以在分布式環(huán)境下解決session共享問題,主要有一下集中策略:
1.粘性session
利用ip hash,同一個用戶到請求分發(fā)到一個server??梢赃@么做,但是不建議。
站點層無狀態(tài)是分布式架構(gòu)設計的基本原則之一,session最好放到數(shù)據(jù)層存儲
2.session復制(多個tomcat可以配置集群,實現(xiàn)session同步)
每當session變化時,比如新建或者修改,廣播給所有的server,進行session同步
3.session集中存儲
利用redis集中管理session
4.session持久化到數(shù)據(jù)庫
第三種是我們常用到方法,也是比較簡單到
1.3 系統(tǒng)拆分
除了增加服務節(jié)點,提供系統(tǒng)處理能力,把系統(tǒng)拆分,因為各個模塊到并發(fā)程度不同,我們可以分別處理。服務拆分后,業(yè)務功能就需要多個service協(xié)調(diào)完成,這個就是分布式系統(tǒng)。分布式系統(tǒng)和集群到概念不同:
分布式:多個servcie協(xié)同完成業(yè)務處理,service需要相互通信
集群:同一個工程到部署到多個server
分布式架構(gòu)的優(yōu)點:
1.把模塊拆分,使用接口通信,降低模塊之間的耦合度。
2.把項目拆分成若干個子項目,不同的團隊負責不同的子項目。
3.增加功能時只需要再增加一個子項目,調(diào)用其它系統(tǒng)的接口就可以。
4.可以靈活的進行分布式部署。
有優(yōu)點就有缺點,缺點如下:
1.系統(tǒng)之間交互需要使用遠程通信,接口開發(fā)增加工作量。
2.各個模塊有一些通用的業(yè)務邏輯無法共用。
文章來源:CSDN
<數(shù)商云(www.zhimaihui.cn)是國內(nèi)知名企業(yè)級電商平臺提供商,為企業(yè)級商家提供最佳的系統(tǒng)開發(fā)(多種模式電商平臺搭建:B2B/B2B2C/B2C/O2O/新零售等)、供應商系統(tǒng)搭建及電商解決方案服務>
評論