大型網(wǎng)站架構(gòu)設(shè)計與分析案例匯總課件_第1頁
大型網(wǎng)站架構(gòu)設(shè)計與分析案例匯總課件_第2頁
大型網(wǎng)站架構(gòu)設(shè)計與分析案例匯總課件_第3頁
大型網(wǎng)站架構(gòu)設(shè)計與分析案例匯總課件_第4頁
大型網(wǎng)站架構(gòu)設(shè)計與分析案例匯總課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、案例1平臺:NET,+NHibernate+SQL SERVER 2008。開發(fā)模式:MVC模式三層都有A方開發(fā),A方的查詢業(yè)務(wù)基本上依賴于SP,SP由B方方面開發(fā)。表現(xiàn):B方對需求的理解不完善,導致SP經(jīng)常改動。但是SP的每次改動了之后,A方開發(fā)應(yīng)用程序的程序人員卻不知道,除非A方程序員去調(diào)試以前已經(jīng)開發(fā)好的程序,不然很難發(fā)現(xiàn)B方修改了存儲過程。存儲過程的修改,帶來的不僅是頁面表現(xiàn)層的數(shù)據(jù)綁定的問題,在模型層的domain和dto很有可能都要隨之改動。即使B方修改了SP第一時間通知A方,A方修改相應(yīng)的模型層對象,重新構(gòu)造層與層之間的訪問參數(shù)以及返回類型也是相當費時的事情。第1頁,共44頁。1

2、問題問題:該項目目前的開發(fā)方式和現(xiàn)狀,效率相當?shù)拖?。?shù)據(jù)庫與SP是基礎(chǔ),SP的修改直接影響上層建筑。而SP的控制權(quán)在B方,由B方完全控制業(yè)務(wù)。A方需要做領(lǐng)域業(yè)務(wù),但只能按照B方的文檔來開發(fā),甚至都不用知道業(yè)務(wù)。第2頁,共44頁。1分析、建議分析:主要是項目管理組織的問題。兩個團隊無法協(xié)調(diào)。B方變更帶來A方的變更是必然,問題在于A根本不知道B方的變更。加之雙方?jīng)]有持續(xù)集成,很可能變更了很久才知道,修改的時候B對A也無法給支持,時間長了可能B自己也忘了。技術(shù)上,業(yè)務(wù)的變動必然帶來領(lǐng)域模型的變動。A方其實只是充當一系列存儲過程的外觀。這個系統(tǒng)的領(lǐng)域模型其實是用數(shù)據(jù)庫表和存儲過程表示的。實際上,誰控制

3、了業(yè)務(wù)誰就控制了領(lǐng)域模型。 建議:兩個團隊組合成一個團隊(虛擬的,相當于遠程協(xié)同開發(fā)),要共享需求任務(wù)列表。每次變更需要雙方在工作前進行協(xié)調(diào),確認各自需要調(diào)整的地方和需要消耗的時間。 第3頁,共44頁。案例2背景:在ATM和銀行主機之間,通常有個前置機器,主要用來做一些預(yù)處理工作,傳統(tǒng)的金融平臺大多采用c來處理,現(xiàn)在想接入網(wǎng)銀,想改用j2ee來架構(gòu),也為以后的sop(標準操作程序 )做準備。問題:在這種實時交易系統(tǒng)里應(yīng)該用什么的架構(gòu)。ATM是使用TCP/IP協(xié)議的,而網(wǎng)銀是http協(xié)議的。如果web方面采用jsp+struts做頁面層,Spring+hibenate做業(yè)務(wù)層,而ATM的接入采用

4、application同樣接入到到Spring的業(yè)務(wù)層。由于交易量較大,必須1分鐘處理1000筆交易(單ATM),這樣的架構(gòu)是否合適?第4頁,共44頁。2分析分析:關(guān)鍵看前置要做哪些工作,是否有復(fù)雜的業(yè)務(wù)邏輯,對于這樣實時性比較高的系統(tǒng),少用框架。Spring+hibernate一般實時性都較差。Spring會產(chǎn)生大量垃圾,頻繁啟動垃圾回收機制,系統(tǒng)的響應(yīng)就得暫停,Spring的動態(tài)代理Proxy對象是每個請求信號都會產(chǎn)生的,1分鐘處理1000筆交易,那么一分鐘內(nèi)至少1000個Proxy對象,還有其他附帶對象,內(nèi)存可能不能支持。比較好的策略:分析系統(tǒng)在應(yīng)付如此大訪問量下的瓶頸所在。如果確實需要

5、業(yè)務(wù)組件,多臺機器組成的分布式EJB系統(tǒng)可能更適合這樣的系統(tǒng):ATM機需要很長的Session存活期,Spring對Session的管理是 默認一次調(diào)用會開啟一個session,調(diào)用結(jié)束時關(guān)閉,如果保持一個Session一直不斷Open,又占用內(nèi)存,一分鐘內(nèi)如果非常多的ATM客戶端接過來,對內(nèi)存消耗太大。EJB的Stateful對Session可以在規(guī)定內(nèi)存內(nèi)進行管理。如果系統(tǒng)沒有數(shù)據(jù)庫,只是一個broker,轉(zhuǎn)接者,使用JMS比多線程強,不宜用多線程。 第5頁,共44頁。MySpace第一代架構(gòu):添置更多的Web服務(wù)器 MySpace最初的系統(tǒng)很小,只有兩臺Web服務(wù)器(分擔處理用戶請求的工

6、作量)和一個數(shù)據(jù)庫服務(wù)器(所有數(shù)據(jù)都存儲在這一個地方)。那時使用的是Dell雙CPU、4G內(nèi)存的系統(tǒng)。在早期階段,MySpace基本是通過添置更多Web服務(wù)器來對付用戶暴增問題的。但到在2004年早期,在MySpace用戶數(shù)增長到五十萬后,其數(shù)據(jù)庫服務(wù)器已經(jīng)開始疲于奔命了。 第6頁,共44頁。MySpace第二代架構(gòu) :增加數(shù)據(jù)庫服務(wù)器 與增加Web服務(wù)器不同,增加數(shù)據(jù)庫并沒那么簡單。如果一個站點由多個數(shù)據(jù)庫支持,設(shè)計者必須考慮的是,如何在保證數(shù)據(jù)一致性的前提下讓多個數(shù)據(jù)庫分擔壓力。第7頁,共44頁。MySpaceMySpace運行在三個SQL Server數(shù)據(jù)庫服務(wù)器上:一個為主,所有的新數(shù)

7、據(jù)都向它提 交,然后由它復(fù)制到其它兩個;另兩個數(shù)據(jù)庫服務(wù)器全力向用戶供給數(shù)據(jù),用以在博客和個人資料欄顯示。這種方式在一段時間內(nèi)效果很好只要增加數(shù)據(jù)庫服務(wù)器,加大硬盤,就可以應(yīng)對用戶數(shù)和訪問量的增加。 這一次的數(shù)據(jù)庫架構(gòu)按照垂直分割模式設(shè)計,不同的數(shù)據(jù)庫服務(wù)于站點的不同功能,如登錄、用戶資料和博客。垂直分割策略利于多個數(shù)據(jù)庫分擔訪問壓力,當用戶要求增加新功能時,MySpace只需要投入新的數(shù)據(jù)庫加以支持。在賬戶到達二百萬后,MySpace還從存儲設(shè)備與數(shù)據(jù)庫服務(wù)器直接交互的方式切換到SAN(存儲區(qū)域網(wǎng)絡(luò))用高帶寬、專門設(shè)計的網(wǎng)絡(luò)將大量磁盤存儲設(shè)備連接在一起,而數(shù)據(jù)庫連接到SAN。這項措施極大提升

8、了系統(tǒng)性能、正常運行時間和可靠性。然而,當用戶繼續(xù)增加到三百萬后,垂直分割策略也變得難以維持下去。 第8頁,共44頁。MySpace第三代架構(gòu):轉(zhuǎn)到分布式計算架構(gòu) 幾經(jīng)折騰,最終,MySpace將目光移到分布式計算架構(gòu)它在物理上分布的眾多服務(wù)器,整體必須邏輯上等同于單臺機器。拿數(shù)據(jù)庫來說,就不能再像過去那樣將應(yīng)用拆分,再以不同數(shù)據(jù)庫分別支持,而必須將整個站點看作一個應(yīng)用。現(xiàn)在,數(shù)據(jù)庫模型里只有一個用戶表,支持博客、個人資料和其他核心功能的數(shù)據(jù)都存儲在相同數(shù)據(jù)庫。 既然所有的核心數(shù)據(jù)邏輯上都組織到一個數(shù)據(jù)庫,那么MySpace必須找到新的辦法以分擔負荷顯然,運行在普通硬件上的單個數(shù)據(jù)庫服務(wù)器是無

9、能為力的。這次,不再按站點功能和應(yīng)用分割數(shù)據(jù)庫,MySpace開始將它的用戶按每百萬一組分割,然后將各組的全部數(shù)據(jù)分別存入獨立的SQL Server實例。結(jié)果是,MySpace的每臺數(shù)據(jù)庫服務(wù)器實際運行兩個SQL Server實例,也就是說每臺服務(wù)器服務(wù)大約二百萬用戶。據(jù)MySpace的技術(shù)人員說,以后還可以按照這種模式以更小粒度劃分架構(gòu),從而優(yōu)化負荷分擔。 第9頁,共44頁。MySpace第四代架構(gòu):求助于微軟方案 2005年早期,賬戶達到九百萬,MySpace開始用微軟的C#編寫ASP.NET程序。在收到一定成效后,MySpace開始大規(guī)模遷移到ASP.NET。賬戶達到一千萬時,MySpa

10、ce再次遭遇存儲瓶頸問題。SAN的引入解決了早期一些性能問題,但站點目前的要求已經(jīng)開始周期性超越SAN的I/O容量即它從磁盤存儲系統(tǒng)讀寫數(shù)據(jù)的極限速度。第10頁,共44頁。MySpace第五代架構(gòu) :增加數(shù)據(jù)緩存層并轉(zhuǎn)到支持64位處理器的SQL Server 20052005年春天,MySpace賬戶達到一千七百萬,MySpace又啟用了新的策略以減輕存儲系統(tǒng)壓力,即增加數(shù)據(jù)緩存層位于Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,其唯一職能是在內(nèi)存中建立被頻繁請求數(shù)據(jù)對象的副本,如此一來,不訪問數(shù)據(jù)庫也可以向Web應(yīng)用供給數(shù)據(jù)。 2005年中期,服務(wù)賬戶數(shù)達到兩千六百萬時,MySpace因為我們對內(nèi)存的渴求

11、而切換到了還處于beta測試的支持64位處理器的SQL Server 2005。升級到SQL Server 2005和64位Windows Server 2003后,MySpace每臺服務(wù)器配備了32G內(nèi)存,后于2006年再次將配置標準提升到64G。第11頁,共44頁。MySpace事實上,MySpace的Web服務(wù)器和數(shù)據(jù)庫仍然經(jīng)常發(fā)生超負荷,其用戶頻繁遭遇“意外錯誤”和“站點離線維護”等告示,他們不得不在論壇抱怨MySpace正是在這樣不斷重構(gòu)站點軟件、數(shù)據(jù)庫和存儲系統(tǒng)中,才一步步走到今天。 事實上,MySpace已經(jīng)成功解決了很多系統(tǒng)擴展性問題,其中存在相當?shù)慕?jīng)驗值得我們借鑒。MySpa

12、ce系統(tǒng)架構(gòu)到目前為止保持了相對穩(wěn)定,但其技術(shù)人員仍然在為SQL Server支持的同時連接數(shù)等方面繼續(xù)攻堅,盡可能把事情做到最好。第12頁,共44頁。Amazon亞馬遜書店無疑是電子商務(wù)發(fā)展的里程碑。2000年到現(xiàn)在,世界網(wǎng)絡(luò)業(yè)腥風血雨。 Amazon曾經(jīng)成為網(wǎng)絡(luò)泡沫的頭號代表。如今,當這個“最大的泡沫”用幾經(jīng)易改的數(shù)字把自己變成了堅實的IT巨人。 歷覽Amazon發(fā)展過程,其成功經(jīng)驗在于,它創(chuàng)造性地進行了電子商務(wù)中每一環(huán)節(jié)的探索,包括系統(tǒng)平臺的建設(shè),程序編寫、網(wǎng)站設(shè)立、配送系統(tǒng)等等方面。用Amazon當家人貝索斯的話說就是,“在現(xiàn)實世界的商店最有力的武器就是地段,地段,地段,而對于我們來說

13、最重要的三件事就是技術(shù),技術(shù),技術(shù)。” 第13頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 搭建科學的系統(tǒng)架構(gòu) 構(gòu)建大型的商業(yè)網(wǎng)站不可能像構(gòu)建普通的小型網(wǎng)站一樣一蹴而就,需要從嚴格的軟件工程管理的角度進行認真規(guī)劃,有步驟有邏輯地進行開發(fā)。對于大型網(wǎng)站來說, 所采用的技術(shù)涉及面極其廣泛,從硬件到軟件、編程語言、數(shù)據(jù)庫、Web服務(wù)器、防火墻 等各個領(lǐng)域都有了很高的要求,已經(jīng)不是原來簡單的html靜態(tài)網(wǎng)站所能比擬的。以著名 的Yahoo!為例,他們的每一個大型網(wǎng)站工程都需要大量相應(yīng)專業(yè)人員的參與。第14頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 頁面靜態(tài)化 不要小看純靜態(tài)化的HTML頁面!其實在很多情況下,H

14、TML往往意味著“效率最高、消耗最小”,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn)。但是,對于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動實現(xiàn),因此可以開發(fā)相應(yīng)的自動化更新工具,例如我們常見的信息發(fā)布系統(tǒng)CMS。像我們經(jīng)常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發(fā)布系統(tǒng)來管理和實現(xiàn)的。信息發(fā)布系統(tǒng)可以實現(xiàn)最簡單的信息錄入自動生成靜態(tài)頁面,還能具備頻道管理、權(quán)限管理、自動抓取等功能,對于一個大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。第15頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 存儲問題 存儲也是一個大問題,一種是小文件的存儲,比如圖片這類;另一種是大

15、文件的存儲,比如搜索引擎的索引。 大家知道,對于Web服務(wù)器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源 的,于是我們有必要將圖片與頁面進行分離,這是基本上大型網(wǎng)站都會采用的策略,他們都有獨立的圖片服務(wù)器,甚至很多臺圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁面訪問請求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會因為圖片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進行不同的配置優(yōu)化以保證更高的系統(tǒng)消耗和執(zhí)行效率。第16頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 數(shù)據(jù)庫技術(shù)集群和庫表散列 對于大型網(wǎng)站而言,使用大型的數(shù)據(jù)庫服務(wù)器是必須的事情。但是,在面對大量訪 問的時候,數(shù)據(jù)庫的瓶頸仍然會顯現(xiàn)出

16、來,這時一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要借助于數(shù)據(jù)庫集群或者庫表散列技術(shù)。在數(shù)據(jù)庫集群方面,很多數(shù)據(jù)庫廠商都有自己的解決方案,Oracle、Sybase、SQLServer等都有很好的方案,(MySQL提供了類似的Master/Slave)。因此,使用了什么樣的數(shù)據(jù)庫,就參考相應(yīng)的解決方案來實施即可。 第17頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 上面提到的數(shù)據(jù)庫集群由于在架構(gòu)、成本、擴張性方面都會受到所采用數(shù)據(jù)庫類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),其中,庫表散列是常用并且最有效的解決方案。我們在應(yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫進行分離,不同的模塊

17、對應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的策略對某個頁面或者功能進行更小的數(shù)據(jù)庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴展性。一個現(xiàn)成的例子是sohou。它的論壇采用了類似的架構(gòu),將論壇的用戶、設(shè)置、帖子等信息進行數(shù)據(jù)庫分離,然后對帖子、用戶按照板塊和ID進行散列數(shù)據(jù)庫和表,最終可以在配置文件中進行簡單的配置便能讓系統(tǒng)隨時增加一臺低成本的數(shù)據(jù)庫進來補充系統(tǒng)性能。第18頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 緩存策略 不單指低級的緩存技術(shù)相關(guān)的編程,應(yīng)從整個架構(gòu)角度著眼,深入研究Web服 務(wù)器、數(shù)據(jù)庫服務(wù)器的各層級的緩沖策略,最后才是低級的緩沖技術(shù)的編程

18、。不同的Web服務(wù)器、數(shù)據(jù)庫服務(wù)器及Web編程語言都有自己不同的緩沖策略。例如數(shù)據(jù)庫存儲方面,SQL Serve 2005中的主動式緩存機制,Oracle數(shù)據(jù)的cache group技術(shù),Hibernate的緩存包括Session的緩存和SessionFactory的緩存;Web服務(wù)器方面,Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應(yīng)能力,IIS緩沖器技術(shù);至于web開發(fā)語言,所用緩存技術(shù)更存在很大不同,例如ASP.NET 2.0中提出了兩種緩存應(yīng)用程序數(shù)據(jù)和緩存服務(wù)頁輸出的策略,這兩種緩存技術(shù)相互獨立但不相互排斥,

19、PHP有Pear的Cache模塊,等等。第19頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 鏡像 鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò)接入商和地域帶來的用戶訪問速度差異。第20頁,共44頁。大型網(wǎng)站開發(fā)時的幾點建議 負載均衡負載均衡將是大型網(wǎng)站解決高負荷訪問和大量并發(fā)請求采用的終極解決辦法。負載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇:硬件四層交換:第四層交換使用第三層和第四層信息包的報頭信息,根據(jù)應(yīng)用區(qū)間識別業(yè)務(wù)流,將整個區(qū)間段的業(yè)務(wù)流分配到合適的應(yīng)用服務(wù)器進行處理。第四層交換功能就象是虛IP,指向物理服務(wù)器。它傳輸?shù)臉I(yè)務(wù)服從的協(xié)議多種多樣,

20、有HTTP、FTP、NFS、Telnet或其他協(xié)議。這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上,需要復(fù)雜的載量平衡算法。在IP世界,業(yè)務(wù)類型由終端TCP或UDP端口地址來決定,在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址、TCP和UDP端口共同決定。在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國當初接近2000臺服務(wù)器使用了三四臺Alteon就搞定了。第21頁,共44頁。網(wǎng)站問題當投資和流量都不是問題的時候,技術(shù)上需要關(guān)注什么。例如:SNS網(wǎng)站,當一筆筆投資砸進去的時候,當流量上去的時候,困惑

21、在什么地方?除了頁面靜態(tài)化,緩存和代碼安全等問題,討論一下發(fā)展之后的問題。第22頁,共44頁。A公司A公司做的是SNS網(wǎng)站,程序是兩個毛頭小伙子做的,目標直指51,程序開發(fā)是一帆風順,功能也比51牛多了,推廣也是一帆風順(A公司有自己獨到的推廣方式。但是當ALEXA到2W的時候問題出來了,每天下午4點左右,網(wǎng)站速度慢的驚人,基本上打不開,公司三臺服務(wù)器CPU100%,讓人郁悶的是公司的網(wǎng)絡(luò)配置方式,居然是雙WEB的集群,而單獨一臺DB數(shù)據(jù)庫。整個瓶頸在數(shù)據(jù)庫,于是咨詢公司建議做DB的集群,分析了一下數(shù)據(jù)結(jié)構(gòu):是典型的WEB程序員的作品,沒有一點數(shù)據(jù)庫設(shè)計規(guī)范,功能實現(xiàn)是可以,如果要擴展,不可能

22、,集群基本上是不可能的,怎么辦?解決方案:一個月的時間修改程序,數(shù)據(jù)結(jié)構(gòu)基本上換了一遍 前期砸進去的幾十萬打了水飄,用戶走光了。結(jié)論:WEB2.0前期設(shè)計的時候不應(yīng)該只考慮功能,應(yīng)該認真考慮一下底層和數(shù)據(jù)結(jié)構(gòu)。第23頁,共44頁。B公司B公司也是做的SNS網(wǎng)站,程序是3個人開發(fā)的,CEO是某名牌大學的經(jīng)濟學碩士,有點知己網(wǎng)的味道,又有一些特色出來,說實話,公司的潛力不錯,CEO 有很強的運作能力,感覺前景不錯。系統(tǒng)架構(gòu)還行,但是-但是系統(tǒng)崩潰了,為什么?系統(tǒng)沒有考慮到用戶有個海量的說法,文件也有個海量的說法,用戶的相冊,圖片全部存貯在WEB服務(wù)器的一個分區(qū)上,每個用戶一個目錄,而打開性能監(jiān)視器

23、,磁盤的IO高的驚人,基本上無暇響應(yīng)。眾所周知,文件系統(tǒng)也是一個數(shù)據(jù)庫,單獨大文件無所謂,關(guān)鍵是整個是300多個G的零碎文件,大量的讀寫操作,系統(tǒng)崩潰,數(shù)據(jù)丟失,文件系統(tǒng)的一個鏈斷了,用戶數(shù)據(jù)全部丟失!這是一個非常沉重的問題,系統(tǒng)整整停了一個月來做數(shù)據(jù)恢復(fù)(單獨文件很容易,但是海量文件目前還沒有一個軟件能組織起來軟件架構(gòu))。解決方案:修改程序架構(gòu),做分布式文件存貯(程序修改用了8天,但是文件轉(zhuǎn)移卻又用去了將近一個月),20萬用戶損失殆盡。結(jié)論:WEB2.0前期的設(shè)計應(yīng)該有應(yīng)付海量存貯的考慮,整個涉及了程序架構(gòu)的修改,前期規(guī)劃不好的話基本上死路一條。第24頁,共44頁。C公司C公司是一個值得尊敬

24、的公司,CEO技術(shù)出身,和比爾蓋茨一樣,大學未畢業(yè)出來做網(wǎng)絡(luò),01到03年做短信狠賺了一筆,后來做的小項目也小有所成。公司做的是校友方面,但是更偏重myspace風格,注重個人主頁,推廣方面也下了大手筆。系統(tǒng)崩潰的原因其實很簡單,由于采用的是微軟的 SqlServer,而微軟直接就告訴了我們,SQLSERVER不支持集群(2000),他們的數(shù)據(jù)庫超負載,100%就沒有下去過,只能橫向增加配置,采用了4路 4核CPU系統(tǒng),但是系統(tǒng)還是崩潰了. 高互動注定了高負載。解決方案:現(xiàn)從基本入手,解決掉幾個程序耗能大戶,對數(shù)據(jù)庫采用橫向切割,將用戶每10萬進行分組,同時對數(shù)據(jù)庫系統(tǒng)進行散列,將多個表垂直分

25、割,同時進行文件分組,解決問題. 因為修改了數(shù)據(jù)結(jié)構(gòu),程序也基本上大動了一下。 好在系統(tǒng)沒有出大錯,損失不算很大,不過對用戶體驗造成了很壞的影響。結(jié)論:WEB2.0前期設(shè)計應(yīng)該有良好的散列考慮,程序應(yīng)該能有配合的擴充性,符合數(shù)據(jù)庫的擴充。第25頁,共44頁。D公司D公司是一個各個方面做的比較好的公司,做了CDN加速;圖片也獨立分出了N個服務(wù)器;數(shù)據(jù)庫不錯(CTO是數(shù)據(jù)庫專家),系統(tǒng)崩潰的原因在于 WEB,按道理說WEB很容易做集群的,但是發(fā)現(xiàn)集群并解決不掉問題,他們的集群只允許做4臺的WEB集群,但是4臺都當?shù)袅?。仔細分析,原因估計也是大部分CTO容易犯的一個錯誤,或者說他們沒有想到的問題,就

26、是WEB上傳的問題,上傳的時候由于時間的原因,線程是保持鏈接的,300 個線程就可以把一個WEB Server當?shù)袅恕=鉀Q方案:這個最簡單,把上傳和其他耗能大戶分離出獨立出來。程序改動不是很大,但是之前半個月速度滿對用戶體驗的損失也不可小視。(有海量訪問經(jīng)驗的CTO不多)。第26頁,共44頁。網(wǎng)站問題總結(jié):模仿是容易的,隨便找?guī)讉€WEB程序員就能做到,并且很簡單,速度可能還很高效,因為WEB2.0無非就是跟數(shù)據(jù)庫打交道,會操作數(shù)據(jù)庫就會做。但是真正做大并不容易,因為能應(yīng)付海量訪問的程序并不簡單。第27頁,共44頁。幾個建議一.找DBMS的專家設(shè)計好數(shù)據(jù)庫,很多程序員只知道Sql,不知道分區(qū)視圖

27、,數(shù)據(jù)散列的概念。二.設(shè)計好程序架構(gòu),找個高人指導一下,保持良好的擴展性,考慮節(jié)約成本的話可以找兼職的系統(tǒng)架構(gòu)設(shè)計師做好系統(tǒng)架構(gòu),確定將來的發(fā)展瓶頸。三.考慮好文件存貯的問題。文件存貯的技術(shù)含量看起來很低,其實是很高的,可以考慮反向代理的方案。文件存貯出問題了,站點基本上就垮了,RAID的問題和存貯服務(wù)器的問題。第28頁,共44頁。幾個建議四.中國國情考慮,這個最致命,需要考慮電信和網(wǎng)通的問題,CDN并不能解決所有問題?;有缘臇|西CDN并不是很有效。最關(guān)鍵的是,現(xiàn)有的雙線機房遇到DDOS攻擊基本上都會當?shù)簦蚝芎唵?,雙線機房都是私人機房,本身就不會有太高的帶寬,隨便攻擊一下就可以D掉。五.

28、網(wǎng)絡(luò)延遲的問題,分布式系統(tǒng)必須要考慮網(wǎng)絡(luò)延遲問題,程序要能容忍0到100秒的數(shù)據(jù)延遲的功能,也就是同步的問題。不要小看這幾十秒,問題很大的,如果站點有交互式功能,比如IM,可以想象一下是個什么結(jié)果。此外,如果系統(tǒng)為了健壯做了緩存和靜態(tài)化的時候,網(wǎng)絡(luò)延遲是災(zāi)難性危害。對于IM,可以用反向代理來解決(成本較高)。對于留言和評論,延遲的問題影響不大。第29頁,共44頁。幾個建議六.分散你的程序,如果你沒有太多的資金構(gòu)筑動輒百萬的服務(wù)器,建議把功能分散開來,比如相冊一臺服務(wù)器,留言一臺服務(wù)器七.看好你的程序員,如果沒有很好的激勵措施的話你的程序員很容易寫出敷衍性的代碼,而這個可能就是將來的大患,程序架

29、構(gòu)定下來后要修改可能就要費牛勁了。最好你的CTO能對你100%的忠心,100%的負責。八.文件同步的問題,這個問題可能覺得沒有必要,但看一下網(wǎng)通和電信的TTL就明白了,同步要支持續(xù)傳,并且不能是持續(xù)的,否則成本會高出N倍,不要期望能通過你的軟件實現(xiàn),交給你的程序員吧,把上面的話告訴他他就知道怎么做了。九. 吃虧最大的問題,不管您跟網(wǎng)警的關(guān)系多好,看好你的用戶,審核好你的東西,一被停機可能就致命。第30頁,共44頁。綠壩在Vista下經(jīng)常被用戶賬戶控制殺掉。網(wǎng)站過濾功能,只能在IE下生效,同屬IE內(nèi)核的遨游等不起作用?;鸷雀柽@類非IE內(nèi)核瀏覽器不起作用。四個進程除了以兩個為一組,有交互保護(

30、當其中一個被結(jié)束,另一個將會重新運行它)之外,其他無任何防護。管理密碼,通過類似于MD5的加密之后,儲存在 WINDOWSsystem32kwpwf.dll文件中,該文件并沒有受到任何程序的保護,可用記事本就改其中內(nèi)容。例如,把知道密碼的綠壩的WINDOWSsystem32kwpwf.dll文件中的內(nèi)容復(fù)制到不知道密碼的那個綠壩的 WINDOWSsystem32kwpwf.dll下,就相當于改變其密碼了。可把WINDOWSsystem32kwpwf.dll的內(nèi)容改為“D0970714757783E6CF17B26FB8E2298F”,則綠壩的管理密碼就變回了默認的112233。成本高。第31頁

31、,共44頁。電影資訊/社區(qū)網(wǎng)站X網(wǎng)站是大型的電影資訊,電影社區(qū),向外提供電影相關(guān)信息服務(wù),以及用戶社區(qū),其中信息服務(wù)部分, 其中大部分頁面屬于信息呈現(xiàn)頁,讀取量比較大,百萬級別pv,信息主要由編輯在后臺發(fā)布,更新較少,但其頁面上有大量的交互性的內(nèi)容,比如評論,收藏列表,同時許多內(nèi)容允許用戶創(chuàng)造,比如上傳圖片,添加注釋.交互內(nèi)容的數(shù)量和交互的頻繁程度,都超過了普通的咨詢頁面,這次調(diào)整,準備將其中訪問量最大的幾塊:電影資料頁,影人資料頁,進行靜態(tài)化,如果成功,還將運用到更多的頻道,基本實現(xiàn)全站靜態(tài)化。第32頁,共44頁。優(yōu)化調(diào)整時的問題頁面生成的觸發(fā)條件復(fù)雜一般論壇中的帖子或者blog,更新方式比

32、較單一:主要是由回復(fù)進行觸發(fā)還有少數(shù)的修改動作,然而該網(wǎng)站一個頁面上需要根據(jù)不同觸發(fā)條件就有20多個, 比如光二級菜單:用戶發(fā)布圖片,刪除圖片,發(fā)布或者刪除影片信息,發(fā)布或者修改視頻,后臺修改電影信息,都有可能觸發(fā)一個動作觸發(fā)生成的頁面可能很多而且相互交疊每一個動作都會觸發(fā)一系列的生成,并且不同動作可能都會涉及同一個頁面或者區(qū)域的生成.比如:用戶給一步電影評分,需要生成評分更多頁,評分統(tǒng)計更多頁,首頁右側(cè)誰還關(guān)注此影片小區(qū)域,等等.用戶收藏一個影片,也需要更新首頁右側(cè)誰還關(guān)注此影片小區(qū)域觸發(fā)頻繁:雖然不及某些更大規(guī)模的網(wǎng)站,但是由于涉及眾多用戶參與的內(nèi)容,評論,收藏等等,觸發(fā)點多,發(fā)生頻度相當

33、頻繁第33頁,共44頁。優(yōu)化調(diào)整時的問題頁面多,結(jié)構(gòu)復(fù)雜,空間占用大:通常,需要生成的頁面規(guī)模是這樣粗略估算的,Rn*P,Rn為資源數(shù),P為每個資源的頁面數(shù),所謂資源,可以看做一個生成單位,其頁面數(shù)可以簡單看做發(fā)布一個資源,就需要生成其所有相關(guān)頁面數(shù)量,比如:發(fā)布一個blog,就需要生成一個Blog頁,同時還需要生成或者更新個人主頁的blog列表,算上個人主頁右側(cè)的分類文章數(shù)的小塊,也就是最多10來個頁面或者區(qū)域,但是發(fā)布一個電影,其相關(guān)的頁面至少有50個以上,而且有的頁面還帶有分頁,一個信息比較豐富的電影,其頁面竟可以達到千個以上,空間1020M,而且資源總數(shù)也不少,電影80000左右,電影

34、人雖然P值較少,但是總量確有幾十萬之巨,估計靜態(tài)頁面磁盤占用量幾百個G向下兼容這是一個已有系統(tǒng),舊系統(tǒng)的框框需要突破,但又沒有時間,或者不能完全突破,比如Url,已經(jīng)被收錄到搜索引擎,就不能隨便調(diào)整,還有一些地方,原本沒有為靜態(tài)生成考慮,另一些地方又需要兼容舊的設(shè)計。第34頁,共44頁。優(yōu)化調(diào)整時的問題多臺前端Web這種結(jié)構(gòu)要求生成的文件可能需要分布到多個服務(wù)器(另一個方案是放在幾臺專用的機器上,等前端來取)任務(wù)緊迫架構(gòu)討論結(jié)束后, 所有底層框架實現(xiàn),頁面模板開發(fā),調(diào)試測試,動作的整理,必須接著完成。第35頁,共44頁。架構(gòu)必須要有的特點綜合考慮上述因素,架構(gòu)必須要有以下幾個方面的特點動作可以

35、靈活擴展配置,某個動作對應(yīng)哪些生成,應(yīng)該可以配置,并且可以分組文件必須有分發(fā)機制分發(fā)和生成必須獨立出來,并且支持分布式各種的動作,必須轉(zhuǎn)化為消息,發(fā)送到生成和分發(fā)服務(wù)器進行處理針對同一資源頻繁動作,在變量相同的情況下能夠具有合并的能力動作必須有記錄盡量考慮使用已有成熟技術(shù),節(jié)省開發(fā)時間第36頁,共44頁。第一個架構(gòu) 第37頁,共44頁。第二個架構(gòu)第38頁,共44頁。第三個架構(gòu)第39頁,共44頁。管理軟件第一點:一個管理軟件,是為某軟件公司開發(fā)的軟件。第二點:這是一個需要插件體系的B/S軟件,需要通過一些簡單配置去實現(xiàn)新功能(包括工作流,但不僅是工作流)第三點:為了追求易用性,因此需要在B/S中

36、實現(xiàn)單機程序的風格頁面,因此可能會包含大量組件,大量復(fù)雜頁面展示邏輯。第四點:需要分布式部署第五點:在特殊需求下,需要在網(wǎng)頁內(nèi)調(diào)用一個富客戶端完成工作,而客戶可以接受的唯一安裝的東西是JVM,因此這個軟件不需要其他的客戶端第六點:客戶的辦公室分布在多個城市,需要高速響應(yīng)用戶的需求,拋開網(wǎng)絡(luò)問題,需要在客戶每個城市放上一臺或多臺服務(wù)器。第七點:在線人數(shù)會非常大,因此需要可以橫向擴服務(wù)器。同時需要較快的訪問速度。第八點:系統(tǒng)大部分地方對數(shù)據(jù)的查詢與寫入是二比一的比例,或者說:有很頻繁的更新操作第九點:系統(tǒng)對事務(wù)要求較高,因為有財務(wù),還有成本估算等模塊,因此不允許垃圾數(shù)據(jù)的存在,并且事務(wù)要求是全局的

37、。第40頁,共44頁。典型的模塊下面分別描述幾個典型的模塊:1.消息系統(tǒng)。需要一個完善的消息系統(tǒng),支持從Email到RSS,站內(nèi)消息的模塊,同時也需要支持手機短信,以及未來可能需要的一些通知方式。2.工作流系統(tǒng)需要自定義的工作流,并且工作流需要實現(xiàn)的流程是跨地區(qū)的,比如有的流程在一個城市,另一個流程在另一個城市,流程之間可以輪轉(zhuǎn)。3.在線的繪圖、會議這種地方需要實現(xiàn)在頁面內(nèi)繪圖,如果需要,允許使用客戶端(但不需要安裝,現(xiàn)在考慮的是JavaWebStart)4.IM,(要求也是在線的)可以集成MSN和YAHOO,同時自己還需要維護內(nèi)部的賬戶(就是自己開發(fā)IM,用戶如果需要,可以同時聊MSN,就像

38、Gaim那樣)第41頁,共44頁。典型的模塊5.WebService支持需要公開一部分WebService供客戶的客戶去調(diào)用,這里有大量只讀的,部分需要進行數(shù)據(jù)信息交流的6.SSO把過去的一些系統(tǒng)也集成起來,一起登錄(現(xiàn)在還不清楚是誰集成誰)7.分布式部署(這是我們經(jīng)驗最不足的地方)為了訪問速度可以快一些,雖然有核心的服務(wù)器,但希望客戶的不同辦公區(qū)域都各放上一臺服務(wù)器對某個地區(qū)提供服務(wù)。而客戶的不同辦公區(qū)域在不同的城市。而各地方的業(yè)務(wù)邏輯基本上是相同的。在這方面,還有一些細節(jié)需求:中心服務(wù)器是PostgreSQL或者Oracle,而為了速度,也許可以在客戶端的服務(wù)器上跑一個簡單的MySQL對某

39、些數(shù)據(jù)進行緩存。第42頁,共44頁。典型的模塊8.關(guān)于業(yè)務(wù)復(fù)雜度的確是相當復(fù)雜,涉及財務(wù)、時間管理、項目管理、成本、風險等各種東西,因此業(yè)務(wù)相當復(fù)雜。項目會跑在Solaris上,不排斥Java EE 5的技術(shù),可以使用新的應(yīng)用中間件。 上面是一些典型的模型,對于這種項目,有什么好的技術(shù)建議?第43頁,共44頁。1、不是井里沒有水,而是你挖的不夠深。不是成功來得慢,而是你努力的不夠多。2、孤單一人的時間使自己變得優(yōu)秀,給來的人一個驚喜,也給自己一個好的交代。3、命運給你一個比別人低的起點是想告訴你,讓你用你的一生去奮斗出一個絕地反擊的故事,所以有什么理由不努力!4、心中沒有過分的貪求,自然苦就少

40、??诶锊徽f多余的話,自然禍就少。腹內(nèi)的食物能減少,自然病就少。思緒中沒有過分欲,自然憂就少。大悲是無淚的,同樣大悟無言。緣來盡量要惜,緣盡就放。人生本來就空,對人家笑笑,對自己笑笑,笑著看天下,看日出日落,花謝花開,豈不自在,哪里來的塵埃!25、你不能拼爹的時候,你就只能去拼命!26、如果人生的旅程上沒有障礙,人還有什么可做的呢。27、我們無法選擇自己的出身,可是我們的未來是自己去改變的。勵志名言:比別人多一點執(zhí)著,你就會創(chuàng)造奇跡28、偉人之所以偉大,是因為他與別人共處逆境時,別人失去了信心,他卻下決心實現(xiàn)自己的目標。29、人生就像一道漫長的階梯,任何人也無法逆向而行,只能在急促而繁忙的進程中

41、,偶爾轉(zhuǎn)過頭來,回望自己留下的蹣跚腳印。30、時間,帶不走真正的朋友;歲月,留不住虛幻的擁有。時光轉(zhuǎn)換,體會到緣分善變;平淡無語,感受了人情冷暖。有心的人,不管你在與不在,都會惦念;無心的情,無論你好與不好,只是漠然。走過一段路,總能有一次領(lǐng)悟;經(jīng)歷一些事,才能看清一些人。31、我們無法選擇自己的出身,可是我們的未來是自己去改變的。32、命好不如習慣好。養(yǎng)成好習慣,一輩子受用不盡。33、比別人多一點執(zhí)著,你就會創(chuàng)造奇跡。50、想像力比知識更重要。不是無知,而是對無知的無知,才是知的死亡。51、對于最有能力的領(lǐng)航人風浪總是格外的洶涌。52、思想如鉆子,必須集中在一點鉆下去才有力量。53、年少時,

42、夢想在心中激揚迸進,勢不可擋,只是我們還沒學會去戰(zhàn)斗。經(jīng)過一番努力,我們終于學會了戰(zhàn)斗,卻已沒有了拼搏的勇氣。因此,我們轉(zhuǎn)向自身,攻擊自己,成為自己最大的敵人。54、最偉大的思想和行動往往需要最微不足道的開始。55、不積小流無以成江海,不積跬步無以至千里。56、遠大抱負始于高中,輝煌人生起于今日。57、理想的路總是為有信心的人預(yù)備著。58、抱最大的希望,為最大的努力,做最壞的打算。59、世上除了生死,都是小事。從今天開始,每天微笑吧。60、一勤天下無難事,一懶天下皆難事。61、在清醒中孤獨,總好過于在喧囂人群中寂寞。62、心里的感覺總會是這樣,你越期待的會越行越遠,你越在乎的對你的傷害越大。6

43、3、彩虹風雨后,成功細節(jié)中。64、有些事你是繞不過去的,你現(xiàn)在逃避,你以后就會話十倍的精力去面對。65、只要有信心,就能在信念中行走。66、每天告訴自己一次,我真的很不錯。67、心中有理想 再累也快樂68、發(fā)光并非太陽的專利,你也可以發(fā)光。69、任何山都可以移動,只要把沙土一卡車一卡車運走即可。70、當你的希望一個個落空,你也要堅定,要沉著!71、生命太過短暫,今天放棄了明天不一定能得到。72、只要路是對的,就不怕路遠。73、如果一個人愛你、特別在乎你,有一個表現(xiàn)是他還是有點怕你。74、先知三日,富貴十年。付諸行動,你就會得到力量。75、愛的力量大到可以使人忘記一切,卻又小到連一粒嫉妒的沙石也不能容納。1、這世上,沒有誰活得比誰容易,只是有人在呼天搶地,有人在默默努力。2、當熱誠變成習慣,恐懼和憂慮即無處容身。缺乏熱誠的人也沒有明確的目標。熱誠使想象的輪子轉(zhuǎn)動。一個人缺乏熱誠就象汽車沒有汽油。善于安排玩樂和工作,兩者保持熱誠,就是最快樂的人。熱誠使平凡的話題變得生動。3、起點低怕什么,大不了加倍努力。人生就像一場馬拉松比賽,拼的不是起點,而是堅持的耐力和成長的速度。只要努力

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論