天天看點

網站架構模式

1、分層:

       分層是企業應用系統中最常見的一種架構模式,将系統在橫向次元上切分成幾個部分,每個部分負責一部分比相對比較單一的職責 ,然後通過上層對下層的依賴和調用組成一個完整的系統。

       分層結構無處不在,例如網絡7層通信協定,計算機硬體、作業系統、軟體也可以看做是分層結構。在大型網站中也采用分層結構。将網站分為應用層、服務層、資料通路層, 通過分層,可以将一個龐大的系統切分成不同的部分,便于分工合作開發和維護,各層之間具有一定的獨立性,隻要維持調用接口不變,各層可以根據具體的業務變化獨立演變發展而不影響其他的層。

       在分層架構中,必須合理劃分層次邊界和接口,嚴禁跨越層次調用。

       大的分層機構内部還可以繼續分層,比如應用層可以分為視圖層、業務邏輯層等。

       分層結構是邏輯上的,在實體部署上,三層結構可以部署在同一個實體機器上,但是随着網站業務的增大,可能需要将已經分層的 子產品進行分離部署,以便網站可以應用更多的資源來應對更多使用者的通路。分層結構的最開始是為了使得軟體子產品劃厘清晰和容易維護,在網站的不斷發展演變過程中,分層結構對于網站從單機部署到分布式方向發展是至關重要,是以在網站的演變初期就應該使用分層結構,将來的網站才能更好的演變。

2、分割:

       分層結構是在橫向次元上進行切分的,而分割是在縱向次元上進行分割。随着網站越來越大,功能越來越複雜,這個時候可以把不同功能的業務分割開來進行獨立的部署,一方面可以簡化維護,另一方面可以使得在整個網站中并發量最大的業務分離開來獨立享受資源。

3、分布式:

       分層和分割的主要目的是為了對切分後的子產品便于分布式部署,也就是将不同的子產品部署在不同的機器上面,通過遠端調用完成相應的業務。

      分布式意味着網站可以使用更多的計算機資源來應對高并發的通路,為更過的使用者提供通路。

      但是分布式也帶來了很多的弊端。處在同一分布式中的機器互相通路必須要通過網絡作為中間媒體,假如說為了完成某個業務,需要通過多台機器來進行計算處理,那麼在計算的過程中必須要依賴網絡的品質,可能會影響計算處理的速度。再者,伺服器越多,伺服器當機的機率也大。 某台機器上的服務不可用使得網站的可用性降低。還有就是在分布式中,分布式事務也難保證一緻,這對網站的業務會造成很嚴重的 影響。分布式導緻網站以來錯綜複雜,提高了網站開發維護的難度。

     分布式方案可以分為以下幾種:

        分布式應用和服務:将分層和分割後的業務進行分布式部署,可以使得網站應對更大的并發量。

        分布式靜态資源:也就是将網站的靜态資源(js、image、css、logo等)獨立部署,并采用獨立的域名,這也就是人們常說的"動靜分離",這樣可以減輕業務伺服器的通路壓力,可以使浏覽器快速的響應。

        分布式資料和存儲:單台機器無法存儲大資料,是以需要更多地機器來聯合存儲,除了對傳統的關系型資料庫進行分布式部署之外,為網站的大資料存儲應運而生的nosql産品幾乎都是分布式的。

        分布式計算:網站某些部分處理的資料量非常之大,這個時候就需要把計算程式分發到各台機器上一邊加速計算和響應。

4、叢集:使用分布式雖然已經将分層和分割後的子產品進行部署,但是對于大型網站的首頁(通路量巨大)還需要獨立部署,即多台機器部署相同的應用構成一個叢集,同時通過負載均衡裝置共同對外提供服務。當需要應對更大的并發時,隻需要向叢集中加入機器即可。

本文内容摘自李智慧《大型網站技術架構 核心原理與案例分析》

待續。。。。

繼續閱讀