【正文】
同一個用戶在不同頁面訪問相同圖片時不會再次從服務器(基于是緩存服務器)取數(shù)據(jù),不但快速,而且還省了帶寬。利用開源的lsync監(jiān)聽某一目錄,如果目錄內(nèi)文件發(fā)生增、刪、改,利用Rsync 協(xié)議自動同步到多臺服務器。而NFS一般沒有這么巨大的規(guī)模。目前Google擁有超過 200個的 GFS集群,其中有些集群的 PC數(shù)量超過5000大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第23頁臺。而GFS則沒有這一特點,文件只能被集群系統(tǒng)中的PC所訪問,而且這些PC 的操作系統(tǒng)一般是Linux ??蛻舳讼葟腗aster 上得到文件的 Metadata,根據(jù)要讀取的數(shù)據(jù)在文件中的位置與相應的 TrunkServer通信,獲取文件數(shù)據(jù)。GFS中文件備份成固定大小的 Trunk分別存儲在不同的 TrunkServer上,每個Trunk有多份 (比如3)拷貝,也存儲在不同的TrunkServer上。被共享的目錄和文件存放在服務器上,客戶機遠程地訪問保存在服務器上的數(shù)據(jù)。所以從功能上看,它們兩者是完全不同的概念。GFS是一個可擴展的分布式文件系統(tǒng),用于大型的、分布式的、對大量數(shù)據(jù)進行訪問的應用。通過使用NFS,用戶和程序訪問遠端系統(tǒng)上的文件就像訪問本地文件一樣。NFS即網(wǎng)絡(luò)文件系統(tǒng),是由SUN公司開發(fā)的。一個HDFS集群是由一個Namenode和一定數(shù)目的Datanodes組成。大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第21頁 文件存儲1. 文件共享1) HDFS(GFS)HDFS是Apache Hadoop項目中的一個分布式文件系統(tǒng)實現(xiàn),基于Google于2022年10月發(fā)表的Google File System(GFS)論文。另外,在將所有備份文件從服務器上轉(zhuǎn)移出來之前要進行壓縮和加密。3. 擁有良好的DB配置和備份很多公司都沒有良好的備份機制,也不知道如 何恰當?shù)赝瓿蛇@項工作。因此,即便在開始時使用同一臺數(shù)據(jù)庫服務器,也要盡早計劃在PHP 中使用分離的 DB連接來進行讀寫操作。更一般地,這意味著建立主/從副本系統(tǒng),其中 程序會對主庫編寫所有的Update、Insert和Delete變更語句,而所有Select的數(shù)據(jù)都讀取自從數(shù)據(jù)庫(或者多個從數(shù)據(jù)庫)。使用讀/寫數(shù)據(jù)庫分離,隨著系統(tǒng)變得越來越龐大,特別是當它們擁有 很差的SQL時,一臺數(shù)據(jù)庫服務器通常不足以處理負載。大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第20頁 數(shù)據(jù)庫配置及優(yōu)化1. 數(shù)據(jù)庫集群對生產(chǎn)數(shù)據(jù)庫采用RAC實現(xiàn)數(shù)據(jù)庫的集群。在進行html靜態(tài)化的時候還可以使用一種折中的方法,就是前端繼續(xù)使用動態(tài)實現(xiàn),在一定的策略下通過后臺模塊進行定時把動態(tài)網(wǎng)頁生成靜態(tài)頁面,并定時判斷調(diào)用,這個能實現(xiàn)很多靈活性的操作。對于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動去挨個實現(xiàn)頁面靜態(tài)化,所以我們需要引入常見的信息發(fā)布系統(tǒng)(CMS),信息發(fā)布系統(tǒng)(CMS)可以實現(xiàn)最簡單的信息錄入自動生成靜態(tài)頁面,對于一個大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。從服務器運行的那個時間片來看,這個傳輸過程僅僅占用了很小的CPU資源。大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第19頁 頁面靜態(tài)化靜態(tài)的HTML頁面嚴格地由標準的HTML標示語言構(gòu)成,并不需要服務器端即時運算生成。1) 用戶基本信息及狀態(tài)的信息緩沖2) 列表緩存,就像論壇里帖子的列表3) 記錄條數(shù)的緩存,比如一個論壇板塊里有多少個帖子,這樣才方便實現(xiàn)分頁。Memcached是以Key/Value的形式單個對象緩存。2) Memcachedmemcached是高性能的分布式內(nèi)存緩存服務器。 4) 支持集群:集群緩存數(shù)據(jù)能被單個的進行參數(shù)配置,不需要修改代碼。 2) 擁有全面的API:OSCache API允許你通過編程的方式來控制所有的OSCache特性。OSCache是當前運用最廣的緩存方案,JBoss,Hibernate,Spring等都對其有支持。支持集群集群緩存數(shù)據(jù)能被單個的進行參數(shù)配置,不需要修改代碼。擁有全面的APIOSCache API給你全面的程序來控制所有的OSCache特性。2. 應用程序方面的緩存1) OSCacheOSCache由OpenSymphony 設(shè)計,它是一種開創(chuàng)性的JSP 定制標記應用,提供了在現(xiàn)有JSP 頁面之內(nèi)實現(xiàn)快速內(nèi)存緩沖的功能,OSCache是個一個廣泛采用的高性能的J2EE緩存框架,OSCache 能用于任何Java 應用程序的普通的緩存解決方案。在生產(chǎn)應用中它常常用作和squid的搭檔, squid對于帶 ?的鏈接往往無法阻擋,而 nginx能將其訪問攔住,例如: squid上會被當做兩個鏈接,所以會造成兩次穿透;而 nginx只會保存一次,無論鏈接變成 過 nginx緩存,從而有效地保護了后端主機。Nginx 目前沒有寫入 memcached 的任何機制,所以要往 memcached里寫入數(shù)據(jù)得用后臺的動態(tài)語言完成,可以利用 404 定向到后端去寫入數(shù)據(jù)。 } expires 70。location /mem/ { if ( $uri ~ ^/mem/([09AZaz_]*)$ ) {大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第16頁 set $memcached_key $1。 Date一般是 Squid從后面取頁面的時間, LastModified 一般是頁面生成時間。 緩存1. 系統(tǒng)架構(gòu)方面的緩存1) Squid緩存架構(gòu)方面使用Squid進行緩存。使用 apache和多個tomcat 配置一個可以應用的web網(wǎng)站,用Apache進行分流,把請求按照權(quán)重以及當時負荷分tomcat1,tomcat2...去處理,大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第15頁要達到以下要求:1)Apache 做為HttpServer ,通過mod_jk連接器連接多個 tomcat 應用實例,并進行負載均衡。 9) 穩(wěn)定性高用于反向代理,宕機的概率微乎其微。 7) 內(nèi)置的健康檢查功能如果 Nginx Proxy 后端的某臺 Web 服務器宕機了,不會影響前端訪問。而購買F5 BIGIP 、NetScaler等硬件負載均衡交換機則需要十多萬至幾十萬人民幣。 4) 配置文件非常簡單風格跟程序一樣通俗易懂。Nginx 特點如下:1) 工作在OSI模型的第 7層(應用層)2) 高并發(fā)連接官方測試能夠支撐5萬并發(fā)連接,在實際生產(chǎn)環(huán)境中跑到2~3萬并發(fā)連接數(shù)。Nginx 已經(jīng)在俄羅斯最大的門戶網(wǎng)站 ── Rambler Media上運行了4年時間,同時俄羅斯超過20%的虛擬主機平臺采用Nginx作為反向代理服務器。它根據(jù)從 WEB 服務器返回的 HTTP 頭標記來緩沖靜態(tài)頁面, 有四個最重要 HTTP 頭標記:? LastModified: 告訴反向代理頁面什么時間被修改? Expires: 告訴反向代理頁面什么時間應該從緩沖區(qū)中刪除? CacheControl: 告訴反向代理頁面是否應該被緩沖? Pragma: 用來包含實現(xiàn)特定的指令,最常用的是 Pragma:nocache 注:DNS 的輪詢機制將某一個域名解析為 多個IP地址。如果 Squid 反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,否則反向代理服務器將向后臺的 WEB 服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。1) Squid Squid 是一個開源的軟件,利用它的反向代理技術(shù)可以提高網(wǎng)站系統(tǒng)的訪問速度,下面將重點介紹 Squid 反向代理的實現(xiàn)原理和在提高網(wǎng)站性能方面的應用。Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 站點開發(fā)的,是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。利用反向代理服務器減輕了后臺 WEB 服務器的負載,提高了訪問速度,同時避免了因用戶直接與 WEB 服務器通信帶來的安全隱患。4. 通過反向代理服務器實現(xiàn)負載均衡反向代理服務器又稱為 WEB 加速服務器,它位于 WEB 服務器的前端,充當WEB服務器的內(nèi)容緩存器,反向代理服務器是針對 WEB 服務器設(shè)置的,后臺 WEB 服務器對互聯(lián)網(wǎng)用戶是透明的,用戶只能看到反向代理服務器的地址,不清楚后臺 WEB 服務器是如何組織架構(gòu)的。Yahoo中國當初接近2022臺服務器使用了三四臺Alteon就搞定了3. 通過軟件四層交換實現(xiàn)負載均衡軟件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實時災難應對解決方案,提高系統(tǒng)的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應用需求,這對于分布式的系統(tǒng)來說必不可少。所以在國外最新的建設(shè)中心Web站點方案中,已經(jīng)很少采用這種方案了。這種技術(shù)的優(yōu)點是,實現(xiàn)簡單、實施容易、成本低、適用于大多數(shù)TCP/IP應用;但是,其缺點也非常明顯,首先這種方案不是真正意義上的負載均衡,DNS 服務器將 Http請求平均地分配到后臺的Web服務器上,而不考慮每個Web 服務器當前的負載情況;如果后臺的Web 服務器的配置和處理能力不同,最慢的 Web服務器將成為系統(tǒng)的瓶頸,處理能力強的服務器不能充分發(fā)揮作用;其次未考慮容錯,如果后臺的某臺Web服務器出現(xiàn)故障,DNS服務器仍然會把 DNS 請求分配到這臺故障服務器上,導致不能響應客戶端。4) 數(shù)據(jù)庫服務器分離成生產(chǎn)數(shù)據(jù)庫集群和查詢數(shù)據(jù)庫集群,實現(xiàn)生大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第9頁產(chǎn)讀寫與后臺查詢統(tǒng)計進行分離,同時生產(chǎn)數(shù)據(jù)庫采用rac技術(shù)進行 架構(gòu)涉及技術(shù)的詳解 負載均衡1. 基于DNS的負載均衡 一個域名綁定多個 IPDNS負載均衡技術(shù)是最早的負載均衡解決方案,它是通過DNS 服務中的隨機名字解析來實現(xiàn)的,在DNS服務器中,可以為多個不同的地址配置同一個名字,而最終查詢這個名字的客戶機將在解析這個名字時得到其中的一個地址。2) 采用硬件設(shè)備負載均衡器,實現(xiàn)網(wǎng)絡(luò)流量的負載均衡使用硬件設(shè)備負載均衡器,將網(wǎng)絡(luò)流量均衡的分擔到WEB服務器集群各節(jié)點服務器,保障平臺服務器資源均衡的使用。大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第5頁 總體架構(gòu) 網(wǎng)站的系統(tǒng)分層架構(gòu)T o m a tA p a c h eW E B 服 務 器架 構(gòu)數(shù) 據(jù) 存 儲文 件共 享T o m a tN g i n x p r o x yS q u i d反 向 代 理 軟 件( 數(shù) 據(jù) 緩 存 )數(shù) 據(jù) 庫生 產(chǎn) 數(shù) 據(jù) 庫 查 詢 數(shù) 據(jù) 庫H D F S負 載 均 衡 器負 載 均 衡. . .W E B 服 務( A p a c h e + t o m c a t負 載 均 衡 )硬 件 四 層 交 換C o n t r o lM V C應 用 架 構(gòu) M o d e l V i e w數(shù) 據(jù) 持 久 層( i b a t i s )應 用 級 緩 存頁 面 緩 存( O S C a c h e )S q u i d c a c h e N g i n x c a c h eN F SL V S軟 件 四 層 交 換數(shù) 據(jù) 緩 存( M e m c a c h e d )大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第6頁 網(wǎng)站的物理架構(gòu)I n t e r n e t服 務 器 2代 理 服 務 器 集 群( N g i n x )W e b 服 務 器 集 群 B負 載 均 衡 器 1. . .服 務 器 n服 務 器 2服 務 器 n服 務 器 1S q u i d 服 務 器 集 群服 務 器 1 服 務 器 2. . .用 戶 瀏 覽 頁 面服 務 器 2服 務 器 1服 務 器 1 服 務 器 2W e b 服 務 器 集 群 A服 務 器 1 服 務 器 2圖 片 服 務 器 集 群服 務 器 3大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第7頁 網(wǎng)站的開發(fā)架構(gòu)T o m a tA p a c h eW E B 服 務 器數(shù) 據(jù) 存 儲文 件 存 儲T o m a tH D F S. . .W E B容 器基 于 s t r u t s 的 M V C 框 架M o d e lV i e w持 久 層頁 面 緩 存 ( M e m c a c h e d )通 訊 層S M SM M SW A P P U S H短 信 群發(fā) 器彩 信 群發(fā) 器數(shù) 據(jù) 庫消息中心消 息中 心O R Mi b a t i sD B 連 接 池C 3 p 0H T M L 靜態(tài) 化 模 塊后 臺 支撐 模 塊業(yè) 務 支 撐模 塊請 求數(shù) 據(jù)生 產(chǎn) 數(shù) 據(jù) 庫( R A C )生 產(chǎn) 數(shù) 據(jù) 庫( R A C )統(tǒng) 計 支 撐模 塊I / OC o n t r o l業(yè) 務 層 數(shù) 據(jù) 層J D B C查 詢 數(shù) 據(jù) 庫大型網(wǎng)絡(luò)平臺架構(gòu)設(shè)計方案第8頁 網(wǎng)絡(luò)拓撲結(jié)