1. 程式人生 > 實用技巧 >專案成長記(五) —— 大型架構設計

專案成長記(五) —— 大型架構設計

自從老闆說可以提供大量資金,我就徹底放開了,打算要大幹一場,但是俗話說工欲善其事必先利其器,所以就開始“利其器”吧!

大家都知道,使用者訪問到頁面會經過很多層級,比如DNS層、負載均衡層、web層等等,我在這裡大概總結出6層,如下圖

wKiom1LOmeHjgtCOAAGWTpPbVf8701.jpg

如果細分的話肯定不止這幾層,這裡就抽象出這幾層來說,如果能優化好這幾層就已經很好了。這裡的每一層都可以作為單獨的專案來設計架構。

1、首先來說的是DNS層,這一層的技術難點在於大併發的QPS和智慧解析使用者IP到不同的服務IP,可以通過DNS做最基本的負載均衡。普通的DNS併發可能在20W QPS,可是對於像淘寶這樣有800萬賣家獨立域名來說,這些是遠遠不夠的,所以淘寶單獨研發了一款千萬QPS能力的高效能DNS防護系統,這些東西可能是遠非小公司或者個人能力能解決的,所以這裡我們可以用一些第三方的服務,比如DNSPod等。


2、其次要說的是CDN。CDN在大併發壓力下,提升效果明顯,下圖是我設計的CDN架構,大家可以在這個基礎上進行擴充套件和改造,比如可以把能快取的都快取起來,比如前端頁面,而對於動態的內容通過非同步載入進來,對於失效可以採用主動失效方式,比如更新裡頁面的模版,就發起快取失效請求,這樣可以做到頁面的實時更新並且快取命中率大幅提高。

wKioL1LOmdTBFsb6AAFs6uN63p8843.jpg


3、負載均衡層可以根據規模做多層負載均衡,比如LVS做第一層,Nginx做第二層,可以無限擴充套件和無單點。一下是負載均衡層的簡單架構圖:

wKioL1LOmdWTyweAAAHqgeSJxPU966.jpg

4、Web Server層是各個應用的層級,這裡有很多應用,他們之間相互隔離但都相互聯絡,所以我這裡推薦SOA架構,即面向服務結構,把不同的服務介面話,這種架構的好處很多,大家可以google百度一下好處和設計方式,然後應用到自己的專案中。一下是我設計的web server架構。


wKioL1LRCtnixAEMAACQ7asZbmQ815.jpg


5、檔案系統的功能就是共享儲存,對於訪問量不大的服務來說,通過NFS+heartbear+DRBD架構就很穩定,而對於大併發服務來說,就需要分散式架構了,這裡推薦MFS分散式儲存系統,這裡從網上借了兩張MFS的架構圖(第一張是讀操作,第二張是寫操作),僅供參考。

wKiom1LRDZDxesv8AAEUzHk9MMs274.jpg

wKiom1LRDZDxqbNgAAF9-ZZ5pRg665.jpg


6、資料層的組成有很多種,我這裡只舉幾個大家比較常用的,比如MySQL、Memcached、Redis、Mongodb等,下面我通過一個簡單的架構圖來展示資料層的設計。

wKiom1LREdnzfm9vAAF4WOckjYs932.jpg


總結:大概的框架已經瞭解了,每一層都可以很深入的挖掘,這樣每一層相互配合,專案不穩定高效才怪呢。又一個週六忙活過了,下一個目標就是具體的細節了,通過壓力測試進行驗證架構的正確性。

預知後事如何,請聽下回分解……



轉載於:https://blog.51cto.com/weijingwu/1350877