《大型網站技術架構》總結---架構技術

       上一篇寫到了網站架構的演化過程,一個小型網站是如何發展成爲大型網站的。裏面用到了很多的技術,很多是我在看這本書的時候第一次遇到,因此有必要做一個總結。

一.大型網站的架構模式

       模式的關鍵在於模式的可重複性,問題和場景的可重複性帶來解決方案的可重複使用。

1.分層

分層是最常用的的一種架構模式,將系統在橫向維度上分爲幾個部分,每個部分負責相對單一的職責,然後通過上層對下層的依賴和調用組成一個完整的系統。分層在計算機世界中無處不在,如網絡的7層通信協議。在大型網站中一般講軟件系統分爲應用層,服務層和數據層。應用層負責具體的業務和視圖展示,服務層是爲應用層提供服務支持,數據層則提供數據的存儲訪問等。在實踐中還可將應用層分爲視圖層和業務邏輯層。我之前學的MVC就是這樣的。

分層的最初目的是爲了規劃軟件清晰的邏輯結構便於開發維護,到後來分層架構對分佈式方向發展至關重要。

2.分割

分割是在縱向方面對軟件進行切分。如在應用層,將不同業務進行分割,例如將購物,論壇,搜素等分割成不同的應用,有獨立團隊負責,部署在不同的服務器上。

3.分佈式

分層和分割的主要目的就是爲了使切分後的模塊便於分佈式部署。分佈式方案有如下的: 分佈式應用;分佈式靜態資源(靜態資源如JS,CSS,Logo圖片等獨立分佈式部署,即人們常說的動靜分離);分佈式數據和存儲(NoSQL);分佈式計算(Hadoop);分佈式文件系統(HDFS)等等。

4集羣

雖然採用了分佈式部署,但對於用戶集中的塊,還要將獨立部署的服務器集羣化。集羣:多臺服務器部署相同應用構成一個集羣,通過負責均衡設備共同對外提供服務。

5.緩存 Cache

緩存就是將數據存放在離計算最近的位置以加快處理速度。緩存是改善軟件性能的第一手段。注意這裏的緩存並不一定就是內存,也可能是磁盤。

CDN:內容分發網絡(Content Delivery Network),部署在裏終端用戶最近的網絡服務商,用戶的網絡請求總是先到達他的網絡服務商那裏,在那存儲了網站的一些靜態資源。這樣可以就近以最快的速度返回給用戶。如視頻網站會將用戶訪問量大的熱點內容緩存在CDN。

反向代理:它屬於網站前端架構的一部分,當用戶到達網站時,最先訪問的就是反向代理服務器。反向代理正好與正向代理相反,對於客戶端而言代理服務器就像是原始服務器,並且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接着反向代理將判斷向何處(原始服務器)轉交請求,並將獲得的內容返回給客戶端。 反向代理的作用有:保護和隱藏正真的服務器,還有就是具有緩存和負載均衡的作用。正向代理服務器,客戶端需要進行設置,舉個例子如“翻牆”。具體的區別見 http://z00w00.blog.51cto.com/515114/1031287 

6.異步

業務之間的消息傳遞不是同步調用,而是將一個業務操作分爲多個階段,每個階段之間通過共享數據的方式異步執行進行協作。消息隊列就是一種異步操作方式,允許你把一個消息放入隊列,但並不立即處理它,採用了生產者消費者模式。消息隊列可以加快網站的響應速度,具有很好的削峯作用(通過一步處理,將短時間高併發產生的消息存儲在消息隊列中,從而削平高峯期的併發事務)。

7.冗餘

定義:多餘的、重複內容。這裏主要是指數據的冗餘備份,保證在服務器宕機時數據不丟失。數據庫除了定期備份(冷備份),還要對數據庫進行主從分離,實時同步熱備份。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章