【大型網站技術架構筆記】(二)大型網站架構模式與核心要素

架構模式

系統朝大型系統衍變的過程中,如下幾個架構模式是我們應該考慮也終將經歷的。

分層

即對系統進行橫向劃分。比如進行MVC分層,又可分為接入層、業務層、核心數據層。應當禁止跨層調用以及逆向調用

分割

即對系統進行縱向劃分。比如在業務層上拆解業務,核心數據層上劃分不同類型的數據,以方便流量控制等。

分佈式

分佈式部署一般耳熟能詳。也是SOA中重要的一環。但是在沒有高效分佈式事務的前提下,如何在分佈式中保證數據一致性,是首當其衝需要考慮的。分佈式概念衍生出很多我們生產環境中常規的一些設計思路,比如將應用和服務分佈式化;靜態資源分佈式部署即動靜分離,以方便通過反向代理,加速等手段來加速與優化;nosql、sql等方式存儲數據;分佈式配置;分佈式權限控制;分佈式封禁;分佈式鎖;分佈式文件系統如NFS;分佈式計算,如阿里的天梯系統等。

集群

到了後期,為保證服務的性能和高可用,一般都會進行集群化部署,即將服務進行虛擬化處置。這中間就需要考慮負載均衡,健康檢查,自動剔除等。

緩存

緩存在大型系統中的地位極其重要。其可以充當數據層的緩衝層,通過緩存熱點數據,以及不常改變的數據來達到提升性能,減少數據持久層的壓力等目的。緩存從前到後可以分為:CDN加速、反向代理、本地緩存、分佈式緩存。

異步化

當併發過大超過服務吞吐能力時,採用消息隊列(比如RabbitMQ, ActiveMQ, Kafka)可以達到削峰的目的。

冗餘

進行適當的熱備、冷備也是比較重要的。比如RabbitMQ就可以通過冗餘來保證數據的可靠性。

自動化

自動化部署、發佈、測試、監控、報警、降級、資源分配等都是一個必須要考慮的議題。

安全

手機驗證碼、圖形驗證碼、以及敏感信息過濾、防SQL注入、防XSS攻擊(如CSRF)等。

核心架構要素

性能

幾個tips:

瀏覽器端利用瀏覽器緩存、使用頁面壓縮、減少Cookie傳輸;

傳輸上採用CDN加速和反向代理服務器;

服務器端利用本地/分佈式緩存;結合消息隊列實現異步化;集群化虛擬化;

代碼層面採用多線程,以及JVM優化,利用弱鍵等其他手段

數據庫端,適當採用索引,利用DB緩存(默認打開),SQL優化,利用NOSQL,NEWSQL優化

性能的衡量標準一般可以看平響、吞吐量(TPS、QPS)等。

可用性

一般就三個手段、冗餘、集群化、分佈式。

伸縮性

服務儘量同構。DB、cache在考慮分佈式時儘量提前設計好擴展方案。也可以採用一些主流的對水平伸縮支持較好的nosql、memcached、hbase等。

擴展性

這個沒啥好說。擴展性依賴於前期良好的架構設計。合理業務邏輯抽象,水平/垂直切割分佈式化等等。

安全性

如上。


分享到:


相關文章: