《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第4篇 架構師(附 大型網站架構技術一覽)

第4篇 架構師

14 架構師領導藝術 190

14.1 關注人而不是產品 191

必定要堅信:一羣優秀的人作一件他們熱愛的事,必定能取得成功。前端

領導的真諦:尋找一個值得奮鬥的目標,營造一個讓你們都能最大限度發揮自我價值的工做氛圍。數據庫

14.2 發掘人的優秀 191

發掘人的優秀比發掘優秀的人更有意義:調查某個技術功能的實現,實際上有開源代碼實現瀏覽器

14.3 共享美好藍圖 192

藍圖應該是表述清楚的:產品要作什麼,不作什麼,要達到什麼業務目標緩存

藍圖應該是形象的:產品能爲用戶創造什麼價值,能實現什麼市場目標,產品最終會長成什麼樣安全

藍圖應該是簡單的:能一句話說明白,咱們在作什麼性能優化

14.4 共同參與架構 193

1.不要只有架構師一我的擁有架構:項目參與者對架構充分討論,你們越以爲本身是項目架構的貢獻者,越願意對開發過程承擔責任,越願意共同維護架構和改善軟件。服務器

2.讓其餘人維護框架或架構文檔:框架是架構的實現。網絡

14.5 學會妥協 194

不在項目中證實本身是正確的,你是來作軟件的,不是作老大的。架構

14.6 成就他人 194

每一個人都以爲本身在項目中相當重要。併發

15 網站架構師職場攻略 196

1.把」個人問題「表述成」咱們的問題「

2.給上司提封閉式問題,下屬提開放式問題,」元芳,你怎麼看?「,沒有」大人,你怎麼看?「

3.提出問題而不是批評人

4.用贊同的方式題出問題

5.在解決個人問題以前,先解決你的問題

6.適當逃避問題,員工提不靠譜的方案,直接說」不行「會打消他積極性,適當逃避

16 漫話網站架構師 203

 

附 大型網站架構技術一覽 208

1.前端架構

        前端指用戶請求到達網站應用服務器以前經歷的環節,一般不包含網站業務邏輯,不處理動態內容。

瀏覽器優化技術

        並非優化瀏覽器,而是經過優化響應頁面,加快瀏覽器頁面的加載和顯示,經常使用的有頁面緩存、合併HTTP減小請求次數、使用頁面壓縮等。

CDN

        內容分發網絡,部署在網絡運營商機房,經過將靜態頁面內容分發到離用戶最近最近的CDN服務器,使用戶能夠經過最短路徑獲取內容。

動靜分離,靜態資源獨立部署

        靜態資源,如JS、CSS等文件部署在專門的服務器集羣上,和Web應用動態內容服務分離,並使用專門的(二級)域名。

圖片服務

        圖片不是指網站Logo、按鈕圖標等,這些文件屬於上面提到的靜態資源,應該和JS、CSS部署在一塊兒。這裏的圖片指用戶上傳的圖片,如產品圖片、用戶頭像等,圖片服務同

樣適用獨立部署的圖片服務器集羣,並使用獨立(二級)域名。

反向代理

        部署在網站機房,在應用服務器、靜態資源服務器、圖片服務器以前,提供頁面緩存服務。

DNS

        域名服務,將域名解析成IP地址,利用DNS能夠實現DNS負載均衡,配置CDN也須要修改DNS,使域名解析後指向CDN服務器。

2.應用層架構

        應用層是處理網站主要業務邏輯的地方。

開發框架

        網站業務是多變的,網站的大部分軟件工程師都是在加班加點開發網站業務,一個好的開發框架相當重要。一個好的開發框架應該可以分離關注面,使美工、開發工程師能夠各

司其事,易於協做。同時還應該內置一些安全策略,防禦Web用攻擊。

頁面渲染

        將分別開發維護的動態內容和靜態頁面模板集成起來,組合成最終顯示給用戶的完整頁面。

負載均衡

        將多臺應用服務器組成一個集羣,經過負載均衡技術將用戶請求分發到不一樣的服務器上,以應對大量用戶同時訪問時產生的高併發負載壓力。

Session管理

        爲了實現高可用的應用服務器集羣,應用服務器一般設計爲無狀態,不保存用戶請求上下文信息,可是網站業務一般須要保持用戶會話信息,須要專門的機制管理Session,使

集羣內甚至跨集羣的應用服務器能夠共享Session。

動態頁面靜態化

        對於訪問量特別大而更新又不很頻繁的動態頁面,能夠將其靜態化,即生成一個靜態頁面,利用靜態頁面的優化手段加速用戶訪問,如反向代理、CDN、瀏覽器緩存等。

業務拆分

        將複雜而龐大的業務拆分開來,造成多個規模較小的產品,獨立開發、部署、維護,除了下降系統耦合度,也便於數據庫業務分庫。按業務對關係數據庫進行拆分,技術難度相

對較小,而效果又相對較好。

虛擬化服務器

        將一臺物理服務器虛擬化成多態虛擬服務器,對於併發訪問較低的業務,更容易用較少的資源構架高可用的應用服務器集羣。

3.服務層架構

        提供基礎服務,供應用層調用,完成網站業務。

分佈式消息

        利用消息隊列機制,實現業務和業務、業務和服務之間的異步消息發送及低耦合的業務關係。

分佈式服務

        提供高性能、低耦合、易複用、易管理的分佈式服務,在網站實現面向服務架構(SOA)。

分佈式緩存

        經過可伸縮的服務器集羣提供大規模熱點數據的緩存服務,是網站性能優化的重要手段。

分佈式配置

        系統運行須要配置許多參數,若是這些參數須要修改,好比分佈式緩存集羣加入新的緩存服務器,須要修改應用程序客戶端的緩存服務器列表配置,並重啓應用程序服務器。分

布式配置在系統運行期提供配置動態推送服務,將配置修改實時推送到應用系統,無需重啓服務器。

4.存儲層架構

        提供數據、文件的持久化存儲訪問與管理服務。

分佈式文件

        網站在線業務須要存儲的文件大部分都是圖片、網頁、視頻等比較小的文件,可是這些文件的數量很是龐大,並且一般都在持續增長,須要伸縮性設計比較好的分佈式文件系統。

關係數據庫

        大部分萬丈的主要業務是基於關係數據庫開發的,可是關係數據庫對集羣伸縮性的支持表較差。經過在應用程序的數據訪問層增長數據庫訪問的路由功能,根據業務配置將數據

庫訪問路由到不一樣的物理數據庫上,可實現關係數據庫的分佈式訪問。

NoSQL數據庫

        目前各類NoSQL數據庫層出不窮,在內存管理、數據模型、集羣分佈式管理等方面各有優點,不過從社區活動性角度看,HBase無疑是目前最好的。

數據同步

        在支持全球範圍內數據共享的分佈式數據庫技術成熟以前,擁有多個數據中心的網站必須在多個數據中心之間進行數據同步,以保證每一個數據中心都擁有完整的數據。在實踐

中,爲了減輕數據庫壓力,將數據庫的事物日誌(或者NoSQL的寫操做Log)同步到其餘數據中心,根據Log進行數據重演,實現數據同步。

5.後臺架構

        網站應用中,除了要處理用戶的實時訪問請求外,還有一些後臺非實時數據分析要處理。

搜索引擎

        即便是網站內部的搜索引擎,也須要進行數據增量更新及全量更新、構建索引等。這些操做經過後臺系統定時執行。

數據倉庫

        根據離線數據,提供數據分析與數據挖掘服務。

推薦系統

        社交網站及購物網站經過挖掘人與人之間的關係,人和商品之間的關係,發展潛在的人際關係和購物興趣,爲用戶提供個性化推薦服務。

6.數據採集與監控

        監控網站訪問狀況與系統運行狀況,爲網站運營決策和運維管理提供支持保障。

瀏覽器數據採集

        經過在網站頁面中嵌入JS腳本採集用戶瀏覽器環境與操做記錄,分析用戶行爲。

服務器業務數據採集

        服務器業務數據包括兩種,一種是採集在服務器端記錄的用戶請求操做日誌;一種是採集應用程序運行期業務數據,好比待處理消息數目等。

服務器性能數據採集

        採集服務器性能數據,如系統負載、內存使用率、網卡流量等。

系統監控

        將前述採集的數據以圖表的方式展現,以便運營和運維人員監控網站運行情況,作到這一步僅僅是系統監視。更先進的作法是根據採集的數據進行自動化運維,自動處理系統異

常情況,是吸納自動化控制。

系統報警

        若是採集來的數據超過預設的正常狀況的閥值,好比系統負載太高,就經過郵件、短信、語音電話等方式發出警報信號,等待工程師干預。

7.安全架構

        保護網站免遭攻擊及敏感信息泄露。

Web攻擊

        以HTTP請求的方式發起的攻擊,危害最大的就是XSS和SQL注入攻擊。可是隻要措施得當,這兩種攻擊都是比較容易防範的。

數據保護

        敏感信息加密傳輸與存儲,保護網站和用戶資產。

8.數據中心機房架構

        大型網站須要的服務器規模數以十萬計,機房物理架構也須要關注。

機房架構

        對於一個擁有十萬臺服務器的大型網站,每臺服務器耗電(包括服務器自己耗電及空調耗電)每一年大約須要人民幣2000元,那麼網站每一年機房電費就須要兩億人民幣。數據中

心能耗問題日趨嚴重,Google、Facebook選擇數據中心地理位置的時候趨向選擇散熱良好,供電充裕的地方。

機櫃架構

        包括機櫃大小,網線佈局、指示燈規格、不間斷電源、電壓規格(是48V直流電仍是220V民用交流電)等一系列問題。

服務器架構

          大型網站因爲服務器採購規模龐大,大都採用定製服務器的方式代替購買服務器整機。根據網站應用需求,定製硬盤、內存、甚至CPU,同時去除沒必要要的外設接口(顯示器輸出接口,鼠標、鍵盤輸入接口),並使空間結構利於散熱。

相關文章
相關標籤/搜索