随着中(zhōng)國大(dà)型IT企業信息化速度的加快,大(dà)部分(fēn)應用的數據量和訪問量都急劇增加,大(dà)型企業網站正面臨性能和高數據訪問量的壓力,而且對存儲、安全以及信息檢索等等方面都提出了更高的要求……
一(yī)、 國外(wài)大(dà)型IT網站的成功之道
(一(yī)) MySpace
今天,MySpace已經成爲全球衆口皆碑的社區網站之王。盡管一(yī)流和營銷和管理經驗自然是每個IT企業取得成功的首要因素,但是本節中(zhōng)我(wǒ)(wǒ)們卻抛棄這一(yī)點,而主要着眼于探讨在數次面臨系統擴張的緊急關頭MySpace是如何從技術方面采取應對策略的。
第一(yī)代架構—添置更多的Web服務器
MySpace最初的系統很小(xiǎo),隻有兩台Web服務器(分(fēn)擔處理用戶請求的工(gōng)作量)和一(yī)個數據庫服務器(所有數據都存儲在這一(yī)個地方)。那時使用的是 Dell雙CPU、4G内存的系統。在早期階段,MySpace基本是通過添置更多Web服務器來對付用戶暴增問題的。但到在2004年早期,在 MySpace用戶數增長到五十萬後,其數據庫服務器已經開(kāi)始疲于奔命了。
第二代架構—增加數據庫服務器
與增加Web服務器不同,增加數據庫并沒那麽簡單。如果一(yī)個站點由多個數據庫支持,設計者必須考慮的是,如何在保證數據一(yī)緻性的前提下(xià)讓多個數據庫分(fēn)擔壓力。
MySpace運行在三個SQL Server數據庫服務器上—一(yī)個爲主,所有的新數據都向它提交,然後由它複制到其它兩個;另兩個數據庫服務器全力向用戶供給數據,用以在博客和個人資(zī)料欄顯示。這種方式在一(yī)段時間内效果很好——隻要增加數據庫服務器,加大(dà)硬盤,就可以應對用戶數和訪問量的增加。
這一(yī)次的數據庫架構按照垂直分(fēn)割模式設計,不同的數據庫服務于站點的不同功能,如登錄、用戶資(zī)料和博客。垂直分(fēn)割策略利于多個數據庫分(fēn)擔訪問壓力,當用戶要求增加新功能時,MySpace隻需要投入新的數據庫加以支持。在賬戶到達二百萬後,MySpace還從存儲設備與數據庫服務器直接交互的方式切換到 SAN(存儲區域網絡)—用高帶寬、專門設計的網絡将大(dà)量磁盤存儲設備連接在一(yī)起,而數據庫連接到SAN。這項措施極大(dà)提升了系統性能、正常運行時間和可靠性。然而,當用戶繼續增加到三百萬後,垂直分(fēn)割策略也變得難以維持下(xià)去(qù)。
第三代架構—轉到分(fēn)布式計算架構
幾經折騰,最終,MySpace将目光移到分(fēn)布式計算架構——它在物(wù)理上分(fēn)布的衆多服務器,整體(tǐ)必須邏輯上等同于單台機器。拿數據庫來說,就不能再像過去(qù)那樣将應用拆分(fēn),再以不同數據庫分(fēn)别支持,而必須将整個站點看作一(yī)個應用。現在,數據庫模型裏隻有一(yī)個用戶表,支持博客、個人資(zī)料和其他核心功能的數據都存儲在相同數據庫。
既然所有的核心數據邏輯上都組織到一(yī)個數據庫,那麽MySpace必須找到新的辦法以分(fēn)擔負荷——顯然,運行在普通硬件上的單個數據庫服務器是無能爲力的。這次,不再按站點功能和應用分(fēn)割數據庫,MySpace開(kāi)始将它的用戶按每百萬一(yī)組分(fēn)割,然後将各組的全部數據分(fēn)别存入獨立的SQL Server實例。目前,MySpace的每台數據庫服務器實際運行兩個SQL Server實例,也就是說每台服務器服務大(dà)約二百萬用戶。據MySpace的技術人員(yuán)說,以後還可以按照這種模式以更小(xiǎo)粒度劃分(fēn)架構,從而優化負荷分(fēn)擔。
第四代架構—求助于微軟方案
2005年早期,賬戶達到九百萬,MySpace開(kāi)始用微軟的C#編寫ASP.NET程序。在收到一(yī)定成效後,MySpace開(kāi)始大(dà)規模遷移到ASP.NET。
賬戶達到一(yī)千萬時,MySpace再次遭遇存儲瓶頸問題。SAN的引入解決了早期一(yī)些性能問題,但站點目前的要求已經開(kāi)始周期性超越SAN的I/O容量——即它從磁盤存儲系統讀寫數據的極限速度。
第五代架構—增加數據緩存層并轉到支持64位處理器的SQL Server 2005
2005年春天,MySpace賬戶達到一(yī)千七百萬,MySpace又(yòu)啓用了新的策略以減輕存儲系統壓力,即增加數據緩存層——位于Web服務器和數據庫服務器之間,其唯一(yī)職能是在内存中(zhōng)建立被頻(pín)繁請求數據對象的副本,如此一(yī)來,不訪問數據庫也可以向Web應用供給數據。
2005年中(zhōng)期,服務賬戶數達到兩千六百萬時,MySpace因爲我(wǒ)(wǒ)們對内存的渴求而切換到了還處于beta測試的支持64位處理器的SQL Server 2005。升級到SQL Server 2005和64位Windows Server 2003後,MySpace每台服務器配備了32G内存,後于2006年再次将配置标準提升到64G。
事實上,MySpace的Web服務器和數據庫仍然經常發生(shēng)超負荷,其用戶頻(pín)繁遭遇“意外(wài)錯誤”和“站點離(lí)線維護”等告示,他們不得不在論壇抱怨不停……
MySpace正是在這樣不斷重構站點軟件、數據庫和存儲系統中(zhōng),才一(yī)步步走到今天。事實上,MySpace已經成功解決了很多系統擴展性問題,其中(zhōng)存在相當的經驗值得我(wǒ)(wǒ)們借鑒。MySpace系統架構到目前爲止保持了相對穩定,但其技術人員(yuán)仍然在爲SQL Server支持的同時連接數等方面繼續攻堅,盡可能把事情做到最好。
(二) Amazon
亞馬遜書(shū)店(diàn)無疑是電子商(shāng)務發展的裏程碑。2000年到現在,世界網絡業腥風血雨。Amazon曾經成爲網絡泡沫的頭号代表。如今,當這個“最大(dà)的泡沫”用幾經易改的數字把自己變成了堅實的IT巨人。
曆覽Amazon發展過程,其成功經驗在于,它創造性地進行了電子商(shāng)務中(zhōng)每一(yī)環節的探索,包括系統平台的建設,程序編寫、網站設立、配送系統等等方面。用 Amazon當家人貝索斯的話(huà)說就是,“在現實世界的商(shāng)店(diàn)最有力的武器就是地段,地段,地段,而對于我(wǒ)(wǒ)們來說最重要的三件事就是技術,技術,技術。”
(三) eBay
eBay是世界聞名的拍賣網站,eBay公司通信部主管凱文?帕斯格拉夫認爲,“eBay成功的最重要原因在于公司管理和服務。”
其成功的奧秘可以列舉爲以下(xià)幾點:
①敢爲天下(xià)先—在網絡尚不普及的時代,eBay率先進入網絡拍賣領域;
②依托虛拟商(shāng)場所産生(shēng)的特有的“零庫存”是eBay公司取得成功的另一(yī)個重要原因。該公司的核心業務沒有任何庫存風險,所有的商(shāng)品都是由客戶提供,它隻需要負責提供虛拟的拍賣平台—網絡和軟件。所以,eBay公司的财務報表上不會出現“庫存費(fèi)用”和“保管費(fèi)用”等。
③自eBay公司成立開(kāi)始,它就一(yī)直遵循兩條“黃金原則”:建設虛拟社區,給網民以家的感覺;保證網站穩定安全地運行。
二、 國内大(dà)型網站開(kāi)發時的幾點建議
從本節開(kāi)始,我(wǒ)(wǒ)們将結合國内外(wài)大(dà)型IT網站在技術擴展方面的沉痛教訓和成功經驗,探讨在如今剛剛開(kāi)始的Web 2.0時代如何應對國内網站即将面臨的數據訪問量增加(甚至是急劇膨脹)的問題,并提出一(yī)些供參考的策略和建議。
(四) 搭建科學的系統架構
構建大(dà)型的商(shāng)業網站絕對不可能像構建普通的小(xiǎo)型網站一(yī)樣一(yī)蹴而就,需要從嚴格的軟件工(gōng)程管理的角度進行認真規劃,有步驟有邏輯地進行開(kāi)發。對于大(dà)型網站來說,所采用的技術涉及面極其廣泛,從硬件到軟件、編程語言、數據庫、Web服務器、防火(huǒ)牆等各個領域都有了很高的要求,已經不是原來簡單的html靜态網站所能比拟的。以著名的Yahoo!爲例,他們的每一(yī)個大(dà)型網站工(gōng)程都需要大(dà)量相應專業人員(yuán)的參與。
(五) 頁面靜态化
可不要小(xiǎo)看純靜态化的HTML頁面!其實在很多情況下(xià),HTML往往意味着“效率最高、消耗最小(xiǎo)”,所以我(wǒ)(wǒ)們盡可能使我(wǒ)(wǒ)們的網站上的頁面采用靜态頁面來實現。但是,對于大(dà)量内容并且頻(pín)繁更新的網站,我(wǒ)(wǒ)們無法全部手動實現,因此可以開(kāi)發相應的自動化更新工(gōng)具,例如我(wǒ)(wǒ)們常見的信息發布系統CMS。像我(wǒ)(wǒ)們經常訪問的各個門戶站點的新聞頻(pín)道,甚至他們的其他頻(pín)道,都是通過信息發布系統來管理和實現的。信息發布系統可以實現最簡單的信息錄入自動生(shēng)成靜态頁面,還能具備頻(pín)道管理、權限管理、自動抓取等功能,對于一(yī)個大(dà)型網站來說,擁有一(yī)套高效、可管理的CMS是必不可少的。
(六) 存儲問題
存儲也是一(yī)個大(dà)問題,一(yī)種是小(xiǎo)文件的存儲,比如圖片這類;另一(yī)種是大(dà)文件的存儲,比如搜索引擎的索引。
大(dà)家知(zhī)道,對于Web服務器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資(zī)源的,于是我(wǒ)(wǒ)們有必要将圖片與頁面進行分(fēn)離(lí),這是基本上大(dà)型網站都會采用的策略,他們都有獨立的圖片服務器,甚至很多台圖片服務器。這樣的架構可以降低提供頁面訪問請求的服務器系統壓力,并且可以保證系統不會因爲圖片問題而崩潰,在應用服務器和圖片服務器上,可以進行不同的配置優化以保證更高的系統消耗和執行效率。
(七) 數據庫技術—集群和庫表散列
對于大(dà)型網站而言,使用大(dà)型的數據庫服務器是必須的事情。但是,在面對大(dà)量訪問的時候,數據庫的瓶頸仍然會顯現出來,這時一(yī)台數據庫将很快無法滿足應用,于是我(wǒ)(wǒ)們需要借助于數據庫集群或者庫表散列技術。
在數據庫集群方面,很多數據庫廠商(shāng)都有自己的解決方案,Oracle、Sybase、SQL Server等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案。因此,你使用了什麽樣的數據庫,就參考相應的解決方案來實施即可。
上面提到的數據庫集群由于在架構、成本、擴張性方面都會受到所采用數據庫類型的限制,于是我(wǒ)(wǒ)們需要從應用程序的角度來考慮改善系統架構,其中(zhōng),庫表散列是常用并且最有效的解決方案。我(wǒ)(wǒ)們在應用程序中(zhōng)安裝業務和應用或者功能模塊将數據庫進行分(fēn)離(lí),不同的模塊對應不同的數據庫或者表,再按照一(yī)定的策略對某個頁面或者功能進行更小(xiǎo)的數據庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能并且有很好的擴展性。在這一(yī)方面一(yī)個現成的例子就是搜狐。它的論壇就是采用了這樣的架構,将論壇的用戶、設置、帖子等信息進行數據庫分(fēn)離(lí),然後對帖子、用戶按照闆塊和ID進行散列數據庫和表,最終可以在配置文件中(zhōng)進行簡單的配置便能讓系統随時增加一(yī)台低成本的數據庫進來補充系統性能。
(八) 緩存策略
這絕對不單指低級的緩存技術相關的編程,應從整個架構角度着眼,深入研究Web服務器、數據庫服務器的各層級的緩沖策略,最後才是低級的緩沖技術的編程。不同的Web服務器、數據庫服務器及Web編程語言都有自己不同的緩沖策略。例如數據庫存儲方面,SQL Serve 2005中(zhōng)的主動式緩存機制,Oracle數據的cache group技術,Hibernate的緩存包括Session的緩存和SessionFactory的緩存;Web服務器方面,Apache提供了自己的緩存模塊,也可以使用外(wài)加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力,IIS緩沖器技術;至于web開(kāi)發語言,所用緩存技術更存在很大(dà)不同,例如ASP.NET 2.0中(zhōng)提出了兩種緩存應用程序數據和緩存服務頁輸出的策略,這兩種緩存技術相互獨立但不相互排斥,PHP有Pear的Cache模塊,等等。
(九) 鏡像
鏡像是大(dà)型網站常采用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網絡接入商(shāng)和地域帶來的用戶訪問速度差異。在鏡像的細節技術方面,這裏不闡述太深,有很多專業的現成的解決架構和産品可選。也有廉價的通過軟件實現的思路,比如Linux上的rsync等工(gōng)具。
(十) 負載均衡
負載均衡将是大(dà)型網站解決高負荷訪問和大(dà)量并發請求采用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商(shāng)和産品可以選擇,基于LAMP解決方案的Lighttped+Squid是相當不錯的解決負載均衡和加速系統的有效方式。
(十一(yī)) 硬件四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識别業務流,将整個區間段的業務流分(fēn)配到合适的應用服務器進行處理。第四層交換功能就象是虛IP,指向物(wù)理服務器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物(wù)理服務器基礎上,需要複雜(zá)的載量平衡算法。在IP世界,業務類型由終端TCP或UDP端口地址來決定,在第四層交換中(zhōng)的應用區間則由源端和終端IP地址、TCP和UDP端口共同決定。
在硬件四層交換産品領域,有一(yī)些知(zhī)名的産品可以選擇,比如Alteon、F5等,這些産品很昂貴,但是物(wù)有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中(zhōng)國當初接近2000台服務器使用了三四台Alteon就搞定了。
(十二) 軟件四層交換
大(dà)家知(zhī)道了硬件四層交換機的原理後,基于OSI模型來實現的軟件四層交換也就應運而生(shēng),這樣的解決方案實現的原理一(yī)緻,不過性能稍差。但是滿足一(yī)定量的壓力還是遊刃有餘的。
一(yī)個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎上搭建squid集群,這種思路在很多大(dà)型網站包括搜索引擎上被采用,這樣的架構低成本、高性能還有很強的擴張性,随時往架構裏面增減節點都非常容易。
(十三) 軟件投資(zī)問題
據報導,目前國内除了一(yī)些上市企業和特别大(dà)知(zhī)名大(dà)公司以外(wài),很少有企業在成本中(zhōng)考慮正版軟件的購置費(fèi)用。這種思維極有可能給中(zhōng)國互聯網帶來噩夢。如果一(yī)些公司真正面臨軟件資(zī)金方面的困難,完全可以考慮使用開(kāi)源世界的LAMP解決方案(Linux+Apache+MySQL+Perl、PHP或者Python Web編程語言);否則,随着我(wǒ)(wǒ)國加入WTO範圍的不斷擴大(dà),盜版打擊必然越來越嚴。因此,“苟且偷生(shēng)”必将自食其果。
另外(wài),随着網絡帶寬日漸提升,WEB 2.0技術必将影響到網絡世界的幾乎每一(yī)個角落。因此,如何積聚技術人員(yuán)進行技術攻關并進一(yī)步加強安全防範也成爲一(yī)個日益嚴峻的問題,宜盡早納入到公司的議事日程。
四、 總結
中(zhōng)國電子商(shāng)務真正理性發展的一(yī)個标志(zhì),是大(dà)量的傳統企業實實在在地開(kāi)始用互聯網來處理商(shāng)務、做生(shēng)意,而現在這樣的浪潮已經開(kāi)始。北(běi)京發行集團,聯合SINA、6688.com等單位共同推出的網上虛拟書(shū)店(diàn)—新新書(shū)店(diàn)就是這樣的一(yī)個标志(zhì)。
随着網絡帶寬日漸提升,随着網絡理念和WEB 2.0技術的斷深入人心,各種B2B、B2C、C2C等電子商(shāng)務模式很可能以立體(tǐ)交叉方式整合到各種大(dà)型商(shāng)務網站中(zhōng)來。因此,作爲公司的技術人員(yuán),作爲臨危救駕的“白(bái)衣騎士”,如何應對海量存儲、海量訪問問題,海量信息檢索的問題,日益嚴峻的安全問題,等等,已經刻不容緩。
一(yī)、 國外(wài)大(dà)型IT網站的成功之道
(一(yī)) MySpace
今天,MySpace已經成爲全球衆口皆碑的社區網站之王。盡管一(yī)流和營銷和管理經驗自然是每個IT企業取得成功的首要因素,但是本節中(zhōng)我(wǒ)(wǒ)們卻抛棄這一(yī)點,而主要着眼于探讨在數次面臨系統擴張的緊急關頭MySpace是如何從技術方面采取應對策略的。
第一(yī)代架構—添置更多的Web服務器
MySpace最初的系統很小(xiǎo),隻有兩台Web服務器(分(fēn)擔處理用戶請求的工(gōng)作量)和一(yī)個數據庫服務器(所有數據都存儲在這一(yī)個地方)。那時使用的是 Dell雙CPU、4G内存的系統。在早期階段,MySpace基本是通過添置更多Web服務器來對付用戶暴增問題的。但到在2004年早期,在 MySpace用戶數增長到五十萬後,其數據庫服務器已經開(kāi)始疲于奔命了。
第二代架構—增加數據庫服務器
與增加Web服務器不同,增加數據庫并沒那麽簡單。如果一(yī)個站點由多個數據庫支持,設計者必須考慮的是,如何在保證數據一(yī)緻性的前提下(xià)讓多個數據庫分(fēn)擔壓力。
MySpace運行在三個SQL Server數據庫服務器上—一(yī)個爲主,所有的新數據都向它提交,然後由它複制到其它兩個;另兩個數據庫服務器全力向用戶供給數據,用以在博客和個人資(zī)料欄顯示。這種方式在一(yī)段時間内效果很好——隻要增加數據庫服務器,加大(dà)硬盤,就可以應對用戶數和訪問量的增加。
這一(yī)次的數據庫架構按照垂直分(fēn)割模式設計,不同的數據庫服務于站點的不同功能,如登錄、用戶資(zī)料和博客。垂直分(fēn)割策略利于多個數據庫分(fēn)擔訪問壓力,當用戶要求增加新功能時,MySpace隻需要投入新的數據庫加以支持。在賬戶到達二百萬後,MySpace還從存儲設備與數據庫服務器直接交互的方式切換到 SAN(存儲區域網絡)—用高帶寬、專門設計的網絡将大(dà)量磁盤存儲設備連接在一(yī)起,而數據庫連接到SAN。這項措施極大(dà)提升了系統性能、正常運行時間和可靠性。然而,當用戶繼續增加到三百萬後,垂直分(fēn)割策略也變得難以維持下(xià)去(qù)。
第三代架構—轉到分(fēn)布式計算架構
幾經折騰,最終,MySpace将目光移到分(fēn)布式計算架構——它在物(wù)理上分(fēn)布的衆多服務器,整體(tǐ)必須邏輯上等同于單台機器。拿數據庫來說,就不能再像過去(qù)那樣将應用拆分(fēn),再以不同數據庫分(fēn)别支持,而必須将整個站點看作一(yī)個應用。現在,數據庫模型裏隻有一(yī)個用戶表,支持博客、個人資(zī)料和其他核心功能的數據都存儲在相同數據庫。
既然所有的核心數據邏輯上都組織到一(yī)個數據庫,那麽MySpace必須找到新的辦法以分(fēn)擔負荷——顯然,運行在普通硬件上的單個數據庫服務器是無能爲力的。這次,不再按站點功能和應用分(fēn)割數據庫,MySpace開(kāi)始将它的用戶按每百萬一(yī)組分(fēn)割,然後将各組的全部數據分(fēn)别存入獨立的SQL Server實例。目前,MySpace的每台數據庫服務器實際運行兩個SQL Server實例,也就是說每台服務器服務大(dà)約二百萬用戶。據MySpace的技術人員(yuán)說,以後還可以按照這種模式以更小(xiǎo)粒度劃分(fēn)架構,從而優化負荷分(fēn)擔。
第四代架構—求助于微軟方案
2005年早期,賬戶達到九百萬,MySpace開(kāi)始用微軟的C#編寫ASP.NET程序。在收到一(yī)定成效後,MySpace開(kāi)始大(dà)規模遷移到ASP.NET。
賬戶達到一(yī)千萬時,MySpace再次遭遇存儲瓶頸問題。SAN的引入解決了早期一(yī)些性能問題,但站點目前的要求已經開(kāi)始周期性超越SAN的I/O容量——即它從磁盤存儲系統讀寫數據的極限速度。
第五代架構—增加數據緩存層并轉到支持64位處理器的SQL Server 2005
2005年春天,MySpace賬戶達到一(yī)千七百萬,MySpace又(yòu)啓用了新的策略以減輕存儲系統壓力,即增加數據緩存層——位于Web服務器和數據庫服務器之間,其唯一(yī)職能是在内存中(zhōng)建立被頻(pín)繁請求數據對象的副本,如此一(yī)來,不訪問數據庫也可以向Web應用供給數據。
2005年中(zhōng)期,服務賬戶數達到兩千六百萬時,MySpace因爲我(wǒ)(wǒ)們對内存的渴求而切換到了還處于beta測試的支持64位處理器的SQL Server 2005。升級到SQL Server 2005和64位Windows Server 2003後,MySpace每台服務器配備了32G内存,後于2006年再次将配置标準提升到64G。
事實上,MySpace的Web服務器和數據庫仍然經常發生(shēng)超負荷,其用戶頻(pín)繁遭遇“意外(wài)錯誤”和“站點離(lí)線維護”等告示,他們不得不在論壇抱怨不停……
MySpace正是在這樣不斷重構站點軟件、數據庫和存儲系統中(zhōng),才一(yī)步步走到今天。事實上,MySpace已經成功解決了很多系統擴展性問題,其中(zhōng)存在相當的經驗值得我(wǒ)(wǒ)們借鑒。MySpace系統架構到目前爲止保持了相對穩定,但其技術人員(yuán)仍然在爲SQL Server支持的同時連接數等方面繼續攻堅,盡可能把事情做到最好。
(二) Amazon
亞馬遜書(shū)店(diàn)無疑是電子商(shāng)務發展的裏程碑。2000年到現在,世界網絡業腥風血雨。Amazon曾經成爲網絡泡沫的頭号代表。如今,當這個“最大(dà)的泡沫”用幾經易改的數字把自己變成了堅實的IT巨人。
曆覽Amazon發展過程,其成功經驗在于,它創造性地進行了電子商(shāng)務中(zhōng)每一(yī)環節的探索,包括系統平台的建設,程序編寫、網站設立、配送系統等等方面。用 Amazon當家人貝索斯的話(huà)說就是,“在現實世界的商(shāng)店(diàn)最有力的武器就是地段,地段,地段,而對于我(wǒ)(wǒ)們來說最重要的三件事就是技術,技術,技術。”
(三) eBay
eBay是世界聞名的拍賣網站,eBay公司通信部主管凱文?帕斯格拉夫認爲,“eBay成功的最重要原因在于公司管理和服務。”
其成功的奧秘可以列舉爲以下(xià)幾點:
①敢爲天下(xià)先—在網絡尚不普及的時代,eBay率先進入網絡拍賣領域;
②依托虛拟商(shāng)場所産生(shēng)的特有的“零庫存”是eBay公司取得成功的另一(yī)個重要原因。該公司的核心業務沒有任何庫存風險,所有的商(shāng)品都是由客戶提供,它隻需要負責提供虛拟的拍賣平台—網絡和軟件。所以,eBay公司的财務報表上不會出現“庫存費(fèi)用”和“保管費(fèi)用”等。
③自eBay公司成立開(kāi)始,它就一(yī)直遵循兩條“黃金原則”:建設虛拟社區,給網民以家的感覺;保證網站穩定安全地運行。
二、 國内大(dà)型網站開(kāi)發時的幾點建議
從本節開(kāi)始,我(wǒ)(wǒ)們将結合國内外(wài)大(dà)型IT網站在技術擴展方面的沉痛教訓和成功經驗,探讨在如今剛剛開(kāi)始的Web 2.0時代如何應對國内網站即将面臨的數據訪問量增加(甚至是急劇膨脹)的問題,并提出一(yī)些供參考的策略和建議。
(四) 搭建科學的系統架構
構建大(dà)型的商(shāng)業網站絕對不可能像構建普通的小(xiǎo)型網站一(yī)樣一(yī)蹴而就,需要從嚴格的軟件工(gōng)程管理的角度進行認真規劃,有步驟有邏輯地進行開(kāi)發。對于大(dà)型網站來說,所采用的技術涉及面極其廣泛,從硬件到軟件、編程語言、數據庫、Web服務器、防火(huǒ)牆等各個領域都有了很高的要求,已經不是原來簡單的html靜态網站所能比拟的。以著名的Yahoo!爲例,他們的每一(yī)個大(dà)型網站工(gōng)程都需要大(dà)量相應專業人員(yuán)的參與。
(五) 頁面靜态化
可不要小(xiǎo)看純靜态化的HTML頁面!其實在很多情況下(xià),HTML往往意味着“效率最高、消耗最小(xiǎo)”,所以我(wǒ)(wǒ)們盡可能使我(wǒ)(wǒ)們的網站上的頁面采用靜态頁面來實現。但是,對于大(dà)量内容并且頻(pín)繁更新的網站,我(wǒ)(wǒ)們無法全部手動實現,因此可以開(kāi)發相應的自動化更新工(gōng)具,例如我(wǒ)(wǒ)們常見的信息發布系統CMS。像我(wǒ)(wǒ)們經常訪問的各個門戶站點的新聞頻(pín)道,甚至他們的其他頻(pín)道,都是通過信息發布系統來管理和實現的。信息發布系統可以實現最簡單的信息錄入自動生(shēng)成靜态頁面,還能具備頻(pín)道管理、權限管理、自動抓取等功能,對于一(yī)個大(dà)型網站來說,擁有一(yī)套高效、可管理的CMS是必不可少的。
(六) 存儲問題
存儲也是一(yī)個大(dà)問題,一(yī)種是小(xiǎo)文件的存儲,比如圖片這類;另一(yī)種是大(dà)文件的存儲,比如搜索引擎的索引。
大(dà)家知(zhī)道,對于Web服務器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資(zī)源的,于是我(wǒ)(wǒ)們有必要将圖片與頁面進行分(fēn)離(lí),這是基本上大(dà)型網站都會采用的策略,他們都有獨立的圖片服務器,甚至很多台圖片服務器。這樣的架構可以降低提供頁面訪問請求的服務器系統壓力,并且可以保證系統不會因爲圖片問題而崩潰,在應用服務器和圖片服務器上,可以進行不同的配置優化以保證更高的系統消耗和執行效率。
(七) 數據庫技術—集群和庫表散列
對于大(dà)型網站而言,使用大(dà)型的數據庫服務器是必須的事情。但是,在面對大(dà)量訪問的時候,數據庫的瓶頸仍然會顯現出來,這時一(yī)台數據庫将很快無法滿足應用,于是我(wǒ)(wǒ)們需要借助于數據庫集群或者庫表散列技術。
在數據庫集群方面,很多數據庫廠商(shāng)都有自己的解決方案,Oracle、Sybase、SQL Server等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案。因此,你使用了什麽樣的數據庫,就參考相應的解決方案來實施即可。
上面提到的數據庫集群由于在架構、成本、擴張性方面都會受到所采用數據庫類型的限制,于是我(wǒ)(wǒ)們需要從應用程序的角度來考慮改善系統架構,其中(zhōng),庫表散列是常用并且最有效的解決方案。我(wǒ)(wǒ)們在應用程序中(zhōng)安裝業務和應用或者功能模塊将數據庫進行分(fēn)離(lí),不同的模塊對應不同的數據庫或者表,再按照一(yī)定的策略對某個頁面或者功能進行更小(xiǎo)的數據庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能并且有很好的擴展性。在這一(yī)方面一(yī)個現成的例子就是搜狐。它的論壇就是采用了這樣的架構,将論壇的用戶、設置、帖子等信息進行數據庫分(fēn)離(lí),然後對帖子、用戶按照闆塊和ID進行散列數據庫和表,最終可以在配置文件中(zhōng)進行簡單的配置便能讓系統随時增加一(yī)台低成本的數據庫進來補充系統性能。
(八) 緩存策略
這絕對不單指低級的緩存技術相關的編程,應從整個架構角度着眼,深入研究Web服務器、數據庫服務器的各層級的緩沖策略,最後才是低級的緩沖技術的編程。不同的Web服務器、數據庫服務器及Web編程語言都有自己不同的緩沖策略。例如數據庫存儲方面,SQL Serve 2005中(zhōng)的主動式緩存機制,Oracle數據的cache group技術,Hibernate的緩存包括Session的緩存和SessionFactory的緩存;Web服務器方面,Apache提供了自己的緩存模塊,也可以使用外(wài)加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力,IIS緩沖器技術;至于web開(kāi)發語言,所用緩存技術更存在很大(dà)不同,例如ASP.NET 2.0中(zhōng)提出了兩種緩存應用程序數據和緩存服務頁輸出的策略,這兩種緩存技術相互獨立但不相互排斥,PHP有Pear的Cache模塊,等等。
(九) 鏡像
鏡像是大(dà)型網站常采用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網絡接入商(shāng)和地域帶來的用戶訪問速度差異。在鏡像的細節技術方面,這裏不闡述太深,有很多專業的現成的解決架構和産品可選。也有廉價的通過軟件實現的思路,比如Linux上的rsync等工(gōng)具。
(十) 負載均衡
負載均衡将是大(dà)型網站解決高負荷訪問和大(dà)量并發請求采用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商(shāng)和産品可以選擇,基于LAMP解決方案的Lighttped+Squid是相當不錯的解決負載均衡和加速系統的有效方式。
(十一(yī)) 硬件四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識别業務流,将整個區間段的業務流分(fēn)配到合适的應用服務器進行處理。第四層交換功能就象是虛IP,指向物(wù)理服務器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物(wù)理服務器基礎上,需要複雜(zá)的載量平衡算法。在IP世界,業務類型由終端TCP或UDP端口地址來決定,在第四層交換中(zhōng)的應用區間則由源端和終端IP地址、TCP和UDP端口共同決定。
在硬件四層交換産品領域,有一(yī)些知(zhī)名的産品可以選擇,比如Alteon、F5等,這些産品很昂貴,但是物(wù)有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中(zhōng)國當初接近2000台服務器使用了三四台Alteon就搞定了。
(十二) 軟件四層交換
大(dà)家知(zhī)道了硬件四層交換機的原理後,基于OSI模型來實現的軟件四層交換也就應運而生(shēng),這樣的解決方案實現的原理一(yī)緻,不過性能稍差。但是滿足一(yī)定量的壓力還是遊刃有餘的。
一(yī)個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎上搭建squid集群,這種思路在很多大(dà)型網站包括搜索引擎上被采用,這樣的架構低成本、高性能還有很強的擴張性,随時往架構裏面增減節點都非常容易。
(十三) 軟件投資(zī)問題
據報導,目前國内除了一(yī)些上市企業和特别大(dà)知(zhī)名大(dà)公司以外(wài),很少有企業在成本中(zhōng)考慮正版軟件的購置費(fèi)用。這種思維極有可能給中(zhōng)國互聯網帶來噩夢。如果一(yī)些公司真正面臨軟件資(zī)金方面的困難,完全可以考慮使用開(kāi)源世界的LAMP解決方案(Linux+Apache+MySQL+Perl、PHP或者Python Web編程語言);否則,随着我(wǒ)(wǒ)國加入WTO範圍的不斷擴大(dà),盜版打擊必然越來越嚴。因此,“苟且偷生(shēng)”必将自食其果。
另外(wài),随着網絡帶寬日漸提升,WEB 2.0技術必将影響到網絡世界的幾乎每一(yī)個角落。因此,如何積聚技術人員(yuán)進行技術攻關并進一(yī)步加強安全防範也成爲一(yī)個日益嚴峻的問題,宜盡早納入到公司的議事日程。
四、 總結
中(zhōng)國電子商(shāng)務真正理性發展的一(yī)個标志(zhì),是大(dà)量的傳統企業實實在在地開(kāi)始用互聯網來處理商(shāng)務、做生(shēng)意,而現在這樣的浪潮已經開(kāi)始。北(běi)京發行集團,聯合SINA、6688.com等單位共同推出的網上虛拟書(shū)店(diàn)—新新書(shū)店(diàn)就是這樣的一(yī)個标志(zhì)。
随着網絡帶寬日漸提升,随着網絡理念和WEB 2.0技術的斷深入人心,各種B2B、B2C、C2C等電子商(shāng)務模式很可能以立體(tǐ)交叉方式整合到各種大(dà)型商(shāng)務網站中(zhōng)來。因此,作爲公司的技術人員(yuán),作爲臨危救駕的“白(bái)衣騎士”,如何應對海量存儲、海量訪問問題,海量信息檢索的問題,日益嚴峻的安全問題,等等,已經刻不容緩。