高訪問量的系統(tǒng)架構(gòu)是怎樣的?
一直以來,Windows架構(gòu)體系都是飽受詬病的,因?yàn)閃indows體系的特殊性使得其擴(kuò)展性及生態(tài)性上比其它體系要弱一些、實(shí)施代價(jià)大一些,但這并不代表Windows體系支撐不了高并發(fā)的項(xiàng)目。
高并發(fā)高流量站點(diǎn)面臨的挑戰(zhàn)有哪些?高并發(fā)、高流量的站點(diǎn)對(duì)于系統(tǒng)軟硬件的要求是極高的,若軟、硬件中某一項(xiàng)不達(dá)標(biāo)可能都會(huì)使得站點(diǎn)異常。總體來說高并發(fā)站點(diǎn)面臨的挑戰(zhàn)有以下幾大方面:
1、單一服務(wù)器的性能瓶頸
每臺(tái)服務(wù)器都是有性能上限的,單一服務(wù)器根本抗不住高并發(fā)大流量的沖擊,所以需要需要足夠多的服務(wù)器以提升處理能力。
2、服務(wù)器上行帶寬不夠
用戶對(duì)服務(wù)器發(fā)出請(qǐng)求,服務(wù)器返回?cái)?shù)據(jù)是需要消耗帶寬的。在大量用戶訪問時(shí)服務(wù)器帶寬壓力也就會(huì)變得很大。
3、數(shù)據(jù)庫讀/寫速度慢
數(shù)據(jù)庫的讀/寫操作會(huì)受到鎖機(jī)制的影響,本身就存在I/O開銷,訪問量較大時(shí)數(shù)據(jù)庫性能也會(huì)跟著下降。
Windows體系高并發(fā)架構(gòu)方案根據(jù)上面提到的高并發(fā)站點(diǎn)受到的挑戰(zhàn),我們就可以針對(duì)性的來做架構(gòu)方案以使Windows體系也能承受高并發(fā)。
1、負(fù)載均衡
通過負(fù)載均衡技術(shù),可將流量分?jǐn)偟蕉嗯_(tái)節(jié)點(diǎn)服務(wù)器上,這樣單一服務(wù)器的負(fù)載壓力就會(huì)變小。我們可以在多臺(tái)Windows服務(wù)器上部署IIS站點(diǎn),然后拿一臺(tái)服務(wù)器作為前置代理服務(wù)器,此代理服務(wù)器架構(gòu)模式為:Linux + Nginx 。
2、主從同步 + 讀寫分離
SQL Server可以通過發(fā)布與訂閱來實(shí)現(xiàn)主從同步,MySQL通過binlog來實(shí)現(xiàn)主從同步。
主從同步是為了讀寫分離作準(zhǔn)備的,因?yàn)榻^大多數(shù)都是讀多寫少,而寫鎖環(huán)境下數(shù)據(jù)庫查詢速度會(huì)很慢,所以我們將讀、寫操作分離保讀數(shù)據(jù)讀取速度不受寫操作的影響。主庫負(fù)責(zé)寫入、從庫負(fù)責(zé)查詢。
3、熱點(diǎn)數(shù)據(jù)緩存,緩解數(shù)據(jù)庫壓力
很多熱點(diǎn)數(shù)據(jù)完全可以從緩存中讀取,而不是每次都從數(shù)據(jù)庫中查詢。我們建議使用Redis等NoSQL產(chǎn)品來緩存熱點(diǎn)數(shù)據(jù),從而緩解數(shù)據(jù)庫壓力。
4、前端優(yōu)化,加快響應(yīng)
前端也有很多細(xì)節(jié)優(yōu)化會(huì)直接影響網(wǎng)站的加載速度,另外也可以節(jié)省服務(wù)器帶寬壓力,比如說:
前端資源走CDN加速,這也就是動(dòng)靜分離;
圖片惰性加載,避免加載了不必要的資源,節(jié)省了帶寬;
圖片動(dòng)態(tài)裁剪,使得圖片加載速度較快;
請(qǐng)求合并,減少前端資源的排隊(duì)時(shí)間等。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!