欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
大型的Web2.0站點(diǎn)構建技術(shù)的一些解決方法(帶實(shí)例講解)
  • 一、 web2.0網(wǎng)站常用可用性功能模塊分析  
  • 二、 Flickr的幕后故事  
  • 三、 YouTube 的架構擴展  
  • 四、 mixi.jp:使用開(kāi)源軟件搭建的可擴展SNS網(wǎng)站  
  • 五、 Technorati的后臺數據庫架構  
  • 六、 通過(guò)了解MySpace的六次重構經(jīng)歷,來(lái)認識分布式系統到底該如何創(chuàng )建  
  • 七、 從LiveJournal后臺發(fā)展看大規模網(wǎng)站性能優(yōu)化方法  
  • 八、 說(shuō)說(shuō)大型高并發(fā)高負載網(wǎng)站的系統架構  
  • http://www.itokit.com  
  • 一、 web2.0網(wǎng)站常用可用性功能模塊分析Web 2.0網(wǎng)站是指將傳統的網(wǎng)站構架(平臺、內容源、用戶(hù)、傳播方式等)轉化到以用戶(hù)為核心的網(wǎng)站構架上來(lái),包括一系列體現web2.0概念的元素、定位和創(chuàng )意。web2.0網(wǎng)站在構架上須體現兩大宗旨,即強大的后臺系統和簡(jiǎn)單的前臺頁(yè)面,也即提供良好的用戶(hù)體驗,體現以人為本,技術(shù)服務(wù)人類(lèi)的宗旨。  
  • web2.0網(wǎng)站常用功能塊通常包括以下幾大項:  
  • 1. Tag標簽功能塊  
  • Tag(中文叫做"標簽") 是一種新的組織和管理在線(xiàn)信息的方式。它不同于傳統的、針對文件本身的關(guān)鍵字檢索,而是一種模糊化、智能化的分類(lèi)。  
  •   網(wǎng)頁(yè)使用Tag標簽的好處:  
  • 為頁(yè)面設置一個(gè)或者多個(gè)Tag標簽可以引導讀者閱讀更多相關(guān)文章,為別人帶去流量同理也為自己帶來(lái)流量。  
  • 可以幫助讀者及時(shí)了解一些未知的概念和知識點(diǎn),提高用戶(hù)體驗。  
  • Tag是人的意志和趨向的體現,Tag可以幫助你找到興趣相投的人。  
  •   基于以上優(yōu)勢,Tag標簽代替了傳統的分類(lèi)法,成為web2.0網(wǎng)站使用率最高的功能塊(與其說(shuō)是功能塊倒不如說(shuō)是一種內容導航和內容組織形式)。  
  •   一句話(huà):Tag標簽是一種更靈活的分類(lèi)方法,功能在于引導,特點(diǎn)是無(wú)處不在,體現智能性、模糊性和趨向性。  
  • 2. RSS訂閱功能塊  
  • RSS是在線(xiàn)共享內容的一種簡(jiǎn)易方式(也叫聚合內容,Really Simple Syndication)。通常在時(shí)效性比較強的內容上使用RSS訂閱能更快速獲取信息,網(wǎng)站提供RSS輸出,有利于讓用戶(hù)獲取網(wǎng)站內容的最新更新。網(wǎng)絡(luò )用戶(hù)可以在客戶(hù)端借助于支持RSS的聚合工具軟件(例如SharpReader,NewzCrawler、FeedDemon),在不打開(kāi)網(wǎng)站內容頁(yè)面的情況下閱讀支持RSS輸出的網(wǎng)站內容。  
  • RSS訂閱的方式:  
  • 訂閱到客戶(hù)端軟件如周伯通、遨游瀏覽器RSS閱讀、Foxmail RSS閱讀等,此方式使用者較多  
  • 訂閱到在線(xiàn)閱讀(聚合類(lèi))門(mén)戶(hù)網(wǎng)站如Google Reader,Yahoo Reader,抓蝦、Gougou等,省去了安裝RSS閱讀器的麻煩  
  • 訂閱到在線(xiàn)單用戶(hù)聚合器如Lilina等,比較靈活  
  • RSS訂閱功能的最大好處是定向投遞,也就是說(shuō)RSS機制更能體現用戶(hù)的意愿和個(gè)性,獲取信息的方式也最直接和簡(jiǎn)單,這是RSS訂閱功能備受青睞的一大主要原因。  
  • 3. 推薦和收藏功能塊  
  •   說(shuō)到推薦功能,不僅web2.0網(wǎng)站在大量使用,傳統的以cms平臺為代表的內容模式的網(wǎng)站也在大量使用,推薦功能主要是指向一些網(wǎng)摘或者聚合類(lèi)門(mén)戶(hù)網(wǎng)站推薦自己所瀏覽到的網(wǎng)頁(yè)。當然,一種變相的推薦就是閱讀者的自我收藏行為,在共享的模式下也能起到推薦的作用。  
  • 比較有名的推薦目標有以del.icio.us為代表的網(wǎng)摘類(lèi)網(wǎng)站包括國內比較有名氣的365key、和訊網(wǎng)摘、新浪vivi、天極網(wǎng)摘等。這里值得一提的是前段時(shí)間曾涌現了大批網(wǎng)摘類(lèi)網(wǎng)站,但他們堅持活下來(lái)的好像沒(méi)有幾個(gè)了,推薦使用前面提到的這幾個(gè)網(wǎng)摘門(mén)戶(hù),人氣基本上是使最旺的。  
  • 4. 評論和留言功能塊  
  • web2.0強調參與性,強調發(fā)揮用戶(hù)的主導作用,這里的參與性除了所謂的訂閱、推薦功能外更多地體現在用戶(hù)對內容的評價(jià)和態(tài)度,這就要靠評論功能塊來(lái)完成。一個(gè)典型的web2.0網(wǎng)站或者說(shuō)一個(gè)能體現人氣的web2.0網(wǎng)站都會(huì )花大量篇幅來(lái)體現用戶(hù)的觀(guān)點(diǎn)和視覺(jué)。這里尤其要提到web2.0中的帶頭老大web blog,評論功能已經(jīng)成為博客主人與瀏覽者交流的主要陣地,是體現網(wǎng)站人氣的最直觀(guān)因素。  
  •   評論功能塊應用在博客系統中實(shí)際上已經(jīng)和博客內容相分離,而更好的應用恰恰是一些以點(diǎn)評為主的web2.0網(wǎng)站比如豆瓣、點(diǎn)評網(wǎng)等,這里的評論功能塊直接制造了內容也極大地體現了網(wǎng)站的人氣,所以說(shuō)評論功能塊是web2.0網(wǎng)站最有力的武器。  
  • 5. 站內搜索功能塊  
  •   搜索是信息來(lái)源最直接的方式之一,無(wú)論你的網(wǎng)站是否打上web2.0的烙印,搜索對于一個(gè)體系龐大、內容豐富的大型網(wǎng)站都是非常必要的。Tag標簽在某種程度上起到搜索的作用,它能夠有效聚合以此Tag為關(guān)鍵詞的內容,但這種情況的前提是此Tag標簽對瀏覽者是可見(jiàn)的,也就是說(shuō)當Tag標簽擺在瀏覽者的眼前時(shí)才成立,而對于那些瀏覽者想要的信息卻沒(méi)有Tag標簽來(lái)引導時(shí)搜索就是達到此目的的最好方法。  
  •   對于web2.0網(wǎng)站,站內搜索以標題或者Tag為搜索域都能起到好的效果,但本人不建議使用內容搜索域,因為這不符合搜索的高效性原則。同時(shí),具有突出關(guān)鍵詞的內容往往都可以用Tag標簽來(lái)引導,因此使用內容域來(lái)搜索實(shí)際上是一種浪費服務(wù)器資源的行為,而且搜索結果的準確性將大打折扣。  
  • 6. 群組功能塊  
  •   我為什么要把群組作為web2.0網(wǎng)站的功能塊來(lái)分析呢,因為群組是web2.0網(wǎng)站的一大特點(diǎn),也是web2.0所要體現的服務(wù)宗旨所在。一個(gè)web2.0網(wǎng)站,博客也好、播客也好、點(diǎn)評也好,抑或是網(wǎng)摘、聚合門(mén)戶(hù),他們都強調人的參與性。物以類(lèi)聚、人以群分,每個(gè)參與者都有自己的興趣趨向,web2.0網(wǎng)站的另一主要功能就是幫助這些人找到同樣興趣的人并形成一個(gè)活躍的群體,這是web2.0網(wǎng)站的根本。  
  • 總結:web2.0網(wǎng)站倡導的是集體創(chuàng )作、共享資源,靠的是人氣,體現的是參與性,一個(gè)沒(méi)有參與性的web2.0網(wǎng)站都不足以成為web2.0。以上提到的這幾個(gè)功能塊就是以吸引用戶(hù)參與和引導用戶(hù)參與為目的的,真正的web2.0不是什么深奧的東西,只有一點(diǎn),那就是如何讓瀏覽者沸騰起來(lái)。  
  • 二、 Flickr的幕后故事我們都看到 Flickr 的成功,而又有多少"精英"們了解過(guò) Flickr 背后的過(guò)程是多么充滿(mǎn)艱險。  
  • Flickr 是全 CGI 的動(dòng)態(tài)構架,并以一種 .gne 的腳本作為 CGI 程序語(yǔ)言。不管網(wǎng)站制作菜鳥(niǎo)還是高手都會(huì )疑惑:gne 是哪種程序語(yǔ)言?答案:gne 不是一種語(yǔ)言,Flickr 是以極為經(jīng)典的 PHP + MySQL 方式實(shí)現的,在被 Yahoo 收購服務(wù)器搬入美國之前,使用了 21 臺(69.90.111.101-121) Apache/PHP 做 Web、23 臺圖片服務(wù)器、另有 MySQL 服務(wù)器組成的數據庫集群的服務(wù)器數量未知?,F在估計使用的是 Yahoo 的負載均衡系統,對外只有一個(gè) Web 的 IP 和圖片服務(wù)器的 IP 了。  
  • 那為何 .php 的文件要改成 .gne 呢?以往有大型網(wǎng)站為向后兼容性考慮,隱藏以程序語(yǔ)言命名的腳本文件擴展名,比如 Baidu 隱藏了 .php(Google 的 http 服務(wù)器是自己寫(xiě)的,整合了腳本程序,個(gè)別頁(yè)面是 .py--Python);還有一些網(wǎng)站是改成自己網(wǎng)站名相關(guān)的擴展名,如 MSN 的群組則是 .msnw,榕樹(shù)下是 .rs。  
  •   那 Flickr 的 gne 是什么意思?我在維基百科的 Flickr 條目上找到了答案(中文 Flickr 條目上沒(méi)有寫(xiě)明) 。原來(lái) GNE 是 Game NeverEnding 的縮寫(xiě),Flickr 的開(kāi)發(fā)者 Ludicorp 在 2002-2004 年一直在開(kāi)發(fā)這套以 Game NerverEnding 為名稱(chēng)的大型多人在線(xiàn)角色扮演游戲--一套基于瀏覽器的 Web 游戲系統,個(gè)人以為應該就是當年九城的虛擬城市。但是開(kāi)發(fā)近 3 年后該計劃不得不破產(chǎn),最終只發(fā)布了一個(gè) Beta 版,而 Ludicorp 將這套系統稍加移植,就有了 Flickr。呵呵,原來(lái) gne 是一個(gè)項目的名稱(chēng)。關(guān)于 GNE 的一些連接:http://del.icio.us/schee/gne。  
  •   早期的 Flickr 想做成在類(lèi)似聊天室的地方讓網(wǎng)友分享、交流自己的照片,注重社區形式和保護照片不被外部引用(見(jiàn)徐子涵2004年的文章),可能是看到了 Hello 的模式吧。但是聰明的 Flickr 團隊不久就改變了策略,淡化了傳統的社區形式--如聊天室、而加強了現在使其功成名就的 Tag 組織形式,一種更自由更隨興更輕松好玩的大社區形式,或者叫它廣義社區吧,我隨便叫的,可能太學(xué)究,看著(zhù)別太在意就是了。另外,將原來(lái)照片只能在 Flash 內瀏覽的限制區除了,并大力推薦用戶(hù)將照片引用到自己的 Blog,這無(wú)疑對于挑戰傳統相冊系統有決定性意義。減少 Flash 后的網(wǎng)頁(yè)更多地引進(jìn)了新興的 Ajax 技術(shù),使界面操作變得非常 Cool。  
  •   這就是 Flickr 的歷史,清晰地看到了他們對于優(yōu)秀產(chǎn)品的執著(zhù)。有了技術(shù)和經(jīng)驗積累,加上不斷堅持,總有一天時(shí)來(lái)運轉,你的產(chǎn)品會(huì )成為新潮流的里程碑。  
  •   還有一句話(huà)要告訴 Yupoo 等:把 Flickr 想成一個(gè)有 Tag 功能的在線(xiàn)相冊就已經(jīng)錯遠了;復制粘貼者們想當然將 Flickr 去其糟粕取其精華,結果無(wú)關(guān)緊要的拿來(lái)了,將令人激動(dòng)的優(yōu)點(diǎn)都去掉了,結果剩下什么?  
  • 三、 YouTube 的架構擴展在西雅圖擴展性的技術(shù)研討會(huì )上,YouTube 的 Cuong Do 做了關(guān)于 YouTube Scalability 的報告。視頻內容在 Google Video 上有(地址),可惜國內用戶(hù)看不到。  
  • Kyle Cordes 對這個(gè)視頻中的內容做了介紹。里面有不少技術(shù)性的內容。值得分享一下。(Kyle Cordes 的介紹是本文的主要來(lái)源)  
  • 簡(jiǎn)單的說(shuō) YouTube 的數據流量, "一天的YouTube流量相當于發(fā)送750億封電子郵件."2006 年中就有消息說(shuō)每日 PV 超過(guò) 1 億,現在? 更夸張了,"每天有10億次下載以及6,5000次上傳", 真假姑且不論, 的確是超乎尋常的海量. 國內的互聯(lián)網(wǎng)應用,但從數據量來(lái)看,怕是只有 51.com 有這個(gè)規模. 但技術(shù)上和 YouTube 就沒(méi)法子比了.  
  • 1. Web 服務(wù)器http://www.itokit.com  
  • YouTube 出于開(kāi)發(fā)速度的考慮,大部分代碼都是 Python 開(kāi)發(fā)的。Web 服務(wù)器有部分是 Apache, 用 FastCGI 模式。對于視頻內容則用 Lighttpd 。據我所知,MySpace 也有部分服務(wù)器用 Lighttpd ,但量不大。YouTube 是 Lighttpd 最成功的案例。(國內用 Lighttpd 站點(diǎn)不多,豆瓣用的比較舒服。by Fenng)  
  • 2. 視頻  
  • 視頻的縮略圖(Thumbnails)給服務(wù)器帶來(lái)了很大的挑戰。每個(gè)視頻平均有4個(gè)縮略圖,而每個(gè) Web 頁(yè)面上更是有多個(gè),每秒鐘因為這個(gè)帶來(lái)的磁盤(pán) IO 請求太大。YouTube 技術(shù)人員啟用了單獨的服務(wù)器群組來(lái)承擔這個(gè)壓力,并且針對 Cache 和 OS 做了部分優(yōu)化。另一方面,縮略圖請求的壓力導致 Lighttpd 性能下降。通過(guò) Hack Lighttpd 增加更多的 worker 線(xiàn)程很大程度解決了問(wèn)題。而最新的解決方案是起用了 Google 的 BigTable, 這下子從性能、容錯、緩存上都有更好表現??慈思疫@收購的,好鋼用在了刀刃上。  
  • 出于冗余的考慮,每個(gè)視頻文件放在一組迷你 Cluster 上,所謂 "迷你 Cluster" 就是一組具有相同內容的服務(wù)器。最火的視頻放在 CDN 上,這樣自己的服務(wù)器只需要承擔一些"漏網(wǎng)"的隨即訪(fǎng)問(wèn)即可。YouTube 使用簡(jiǎn)單、廉價(jià)、通用的硬件,這一點(diǎn)和 Google 風(fēng)格倒是一致。至于維護手段,也都是常見(jiàn)的工具,如 rsync, SSH 等,只不過(guò)人家更手熟罷了。  
  • 3. 數據庫  
  • YouTube 用 MySQL 存儲元數據--用戶(hù)信息、視頻信息什么的。數據庫服務(wù)器曾經(jīng)一度遇到 SWAP 顛簸的問(wèn)題,解決辦法是刪掉了 SWAP 分區! 管用。  
  • 最初的 DB 只有 10 塊硬盤(pán),RAID 10 ,后來(lái)追加了一組 RAID 1。夠省的。這一波 Web 2.0 公司很少有用 Oracle 的(我知道的只有 Bebo,參見(jiàn)這里). 在擴展性方面,路線(xiàn)也是和其他站點(diǎn)類(lèi)似,復制,分散 IO。最終的解決之道是"分區",這個(gè)不是數據庫層面的表分區,而是業(yè)務(wù)層面的分區(在用戶(hù)名字或者 ID 上做文章,應用程序控制查找機制)  
  • YouTube 也用 Memcached.  
  • 四、 mixi.jp:使用開(kāi)源軟件搭建的可擴展SNS網(wǎng)站Mixi目前是日本排名第三的網(wǎng)站,全球排名42,主要提供SNS服務(wù):日記,群組,站內消息,評論,相冊等等,是日本最大的SNS網(wǎng)站。Mixi從200312月份開(kāi)始開(kāi)發(fā),由現在它的CTO - Batara Kesuma一個(gè)人焊,焊了四個(gè)月,在20042月份開(kāi)始上線(xiàn)運行。兩個(gè)月后就注冊了1w用戶(hù),日訪(fǎng)問(wèn)量60wPV。在隨后的一年里,用戶(hù)增長(cháng)到了21w,第二年,增長(cháng)到了200w。到今年四月份已經(jīng)增長(cháng)到370w注冊用戶(hù),并且還在以每天1.5w人的注冊量增長(cháng)。這些用戶(hù)中70%是活躍用戶(hù)(活躍用戶(hù):三天內至少登錄一次的用戶(hù)),平均每個(gè)用戶(hù)每周在線(xiàn)時(shí)間為將近3個(gè)半小時(shí)。  
  • 下面我們來(lái)看它的技術(shù)架構。Mixi采用開(kāi)源軟件作為架構的基礎:Linux 2.6,Apache 2.0,MySQL,Perl 5.8,memcached,Squid等等。到目前為止已經(jīng)有100多臺MySQL數據庫服務(wù)器,并且在以每月10多臺的速度增長(cháng)。Mixi的數據庫連接方式采用的是每次查詢(xún)都進(jìn)行連接,而不是持久連接。數據庫大多數是以InnoDB方式運行。Mixi解決擴展問(wèn)題主要依賴(lài)于對數據庫的切分。  
  • 首先進(jìn)行垂直切分,按照表的內容將不同的表劃分到不同的數據庫中。然后是水平切分,根據用戶(hù)的ID將不同用戶(hù)的內容再劃分的不同的數據庫中,這是比較通常的做法,也很管用。劃分的關(guān)鍵還是在于應用中的實(shí)現,需要將操作封裝在在數據層,而盡量不影響業(yè)務(wù)層。當然完全不改變邏輯層也不可能,這時(shí)候最能檢驗以前的設計是否到位,如果以前設計的不錯,那創(chuàng )建連接的時(shí)候傳個(gè)表名,用戶(hù)ID進(jìn)去差不多就解決問(wèn)題了,而以前如果sql代碼到處飛,或者數據層封裝的不太好的話(huà)那就累了。  
  • 這樣做了以后并不能從根本上解決問(wèn)題,尤其是對于像mixi這種SNS網(wǎng)站,頁(yè)面上往往需要引用大量的用戶(hù)信息,好友信息,圖片,文章信息,跨表,跨庫操作相當多。這個(gè)時(shí)候就需要發(fā)揮memcached的作用了,用大內存把這些不變的數據全都緩存起來(lái),而當修改時(shí)就通知cache過(guò)期,這樣應用層基本上就可以解決大部分問(wèn)題了,只會(huì )有很小一部分請求穿透應用層,用到數據庫。Mixi的經(jīng)驗是平均每個(gè)頁(yè)面的加載時(shí)間在0.02秒左右(當然根據頁(yè)面大小情況不盡相似),可以說(shuō)明這種做法是行之有效的。Mixi一共在32臺機器上有緩存服務(wù)器,每個(gè)Cache Server 2G內存,這些Cache Server與App Server裝在一起。因為Cache Server對CPU消耗不大,而有了Cache Server的支援,App Server對內存要求也不是太高,所以可以和平共處,更有效的利用資源。  
  • 圖片的處理就顯得相對簡(jiǎn)單的多了。對于mixi而言,圖像主要有兩部分:一部分是經(jīng)常要使用到的,像用戶(hù)頭像,群組的頭像等等,大概有100多GB,它們被Squid和CDN所緩存,命中率相對比較高;另一部分是用戶(hù)上傳的大量照片,它們的個(gè)體訪(fǎng)問(wèn)量相對而言比較小,命中率也比較低,使用Cache不劃算,所以對于這些照片的策略是直接在用戶(hù)上傳的時(shí)候分發(fā)到到圖片存儲服務(wù)器上,在用戶(hù)訪(fǎng)問(wèn)的時(shí)候直接進(jìn)行訪(fǎng)問(wèn),當然圖片的位置需要在數據庫中進(jìn)行記錄,不然找不到放在哪臺服務(wù)器上就郁悶了。  
  • 五、 Technorati的后臺數據庫架構Technorati (現在被阻尼了, 可能你訪(fǎng)問(wèn)不了)的 Dorion Carroll在 2006 MySQL 用戶(hù)會(huì )議上介紹了一些關(guān)于 Technorati 后臺數據庫架構的情況.  
  • 基本情況  
  • 目前處理著(zhù)大約 10Tb 核心數據, 分布在大約 20 臺機器上.通過(guò)復制, 多增加了 100Tb 數據, 分布在 200 臺機器上. 每天增長(cháng)的數據 1TB. 通過(guò) SOA 的運用, 物理與邏輯的訪(fǎng)問(wèn)相隔離, 似乎消除了數據庫的瓶頸. 值得一提的是, 該擴展過(guò)程始終是利用普通的硬件與開(kāi)源軟件來(lái)完成的. 畢竟 , Web 2.0 站點(diǎn)都不是燒錢(qián)的主. 從數據量來(lái)看,這絕對是一個(gè)相對比較大的 Web 2.0 應用.  
  • Tag 是 Technorati 最為重要的數據元素. 爆炸性的 Tag 增長(cháng)給 Technorati 帶來(lái)了不小的挑戰.  
  • 2005 年 1 月的時(shí)候, 只有兩臺數據庫服務(wù)器, 一主一從. 到了 06 年一月份, 已經(jīng)是一主一從, 6 臺 MyISAM 從數據庫用來(lái)對付查詢(xún), 3 臺 MyISAM 用作異步計算.  
  • 一些核心的處理方法:  
  • 1) 根據實(shí)體(tags/posttags))進(jìn)行分區  
  • 衡量數據訪(fǎng)問(wèn)方法,讀和寫(xiě)的平衡.然后通過(guò)不同的維度進(jìn)行分區.( Technorati 數據更新不會(huì )很多, 否則會(huì )成為數據庫災難)  
  • 2) 合理利用 InnoDB 與 MyISAM  
  • InnoDB 用于數據完整性/寫(xiě)性能要求比較高的應用. MyISAM 適合進(jìn)行 OLAP 運算. 物盡其用.  
  • 3) MySQL 復制  
  • 復制數據到從主數據庫到輔數據庫上,平衡分布查詢(xún)與異步計算, 另外一個(gè)功能是提供冗余. 如圖:  
  •   
  • 六、 通過(guò)了解MySpace的六次重構經(jīng)歷,來(lái)認識分布式系統到底該如何創(chuàng )建.  
  • 在每個(gè)里程碑,站點(diǎn)負擔都會(huì )超過(guò)底層系統部分組件的最大載荷,特別是數據庫和存儲系統。接著(zhù),功能出現問(wèn)題,用戶(hù)失聲尖叫。最后,技術(shù)團隊必須為此修訂系統策略。  
  •   雖然自2005年早期,站點(diǎn)賬戶(hù)數超過(guò)7百萬(wàn)后,系統架構到目前為止保持了相對穩定,但MySpace仍然在為SQL Server支持的同時(shí)連接數等方面繼續攻堅,Benedetto說(shuō),"我們已經(jīng)盡可能把事情做到最好"。  
  • 1. 里程碑一:50萬(wàn)賬戶(hù)  
  •   按Benedetto 的說(shuō)法,MySpace最初的系統很小,只有兩臺Web服務(wù)器和一個(gè)數據庫服務(wù)器。那時(shí)使用的是Dell雙CPU、4G內存的系統。  
  • 單個(gè)數據庫就意味著(zhù)所有數據都存儲在一個(gè)地方,再由兩臺Web服務(wù)器分擔處理用戶(hù)請求的工作量。但就像MySpace后來(lái)的幾次底層系統修訂時(shí)的情況一樣,三服務(wù)器架構很快不堪重負。此后一個(gè)時(shí)期內,MySpace基本是通過(guò)添置更多Web服務(wù)器來(lái)對付用戶(hù)暴增問(wèn)題的。  
  •   但到在2004年早期,MySpace用戶(hù)數增長(cháng)到50萬(wàn)后,數據庫服務(wù)器也已開(kāi)始汗流浹背。  
  •   但和Web服務(wù)器不同,增加數據庫可沒(méi)那么簡(jiǎn)單。如果一個(gè)站點(diǎn)由多個(gè)數據庫支持,設計者必須考慮的是,如何在保證數據一致性的前提下,讓多個(gè)數據庫分擔壓力。  
  •   在第二代架構中,MySpace運行在3個(gè)SQL Server數據庫服務(wù)器上--一個(gè)為主,所有的新數據都向它提交,然后由它復制到其他兩個(gè);另兩個(gè)全力向用戶(hù)供給數據,用以在博客和個(gè)人資料欄顯示。這種方式在一段時(shí)間內效果很好--只要增加數據庫服務(wù)器,加大硬盤(pán),就可以應對用戶(hù)數和訪(fǎng)問(wèn)量的增加。  
  • 2. 里程碑二:1-2百萬(wàn)賬戶(hù)  
  • MySpace注冊數到達1百萬(wàn)至2百萬(wàn)區間后,數據庫服務(wù)器開(kāi)始受制于I/O容量--即它們存取數據的速度。而當時(shí)才是2004年中,距離上次數據庫系統調整不過(guò)數月。用戶(hù)的提交請求被阻塞,就像千人樂(lè )迷要擠進(jìn)只能容納幾百人的夜總會(huì ),站點(diǎn)開(kāi)始遭遇"主要矛盾",Benedetto說(shuō),這意味著(zhù)MySpace永遠都會(huì )輕度落后于用戶(hù)需求。  
  • "有人花5分鐘都無(wú)法完成留言,因此用戶(hù)總是抱怨說(shuō)網(wǎng)站已經(jīng)完蛋了。"他補充道。  
  •   這一次的數據庫架構按照垂直分割模式設計,不同的數據庫服務(wù)于站點(diǎn)的不同功能,如登錄、用戶(hù)資料和博客。于是,站點(diǎn)的擴展性問(wèn)題看似又可以告一段落了,可以歇一陣子。  
  •   垂直分割策略利于多個(gè)數據庫分擔訪(fǎng)問(wèn)壓力,當用戶(hù)要求增加新功能時(shí),MySpace將投入新的數據庫予以支持它。賬戶(hù)到達2百萬(wàn)后,MySpace還從存儲設備與數據庫服務(wù)器直接交互的方式切換到SAN(Storage Area Network,存儲區域網(wǎng)絡(luò ))--用高帶寬、專(zhuān)門(mén)設計的網(wǎng)絡(luò )將大量磁盤(pán)存儲設備連接在一起,而數據庫連接到SAN。這項措施極大提升了系統性能、正常運行時(shí)間和可靠性,Benedetto說(shuō)。  
  • 3. 里程碑三:3百萬(wàn)賬戶(hù)  
  •   當用戶(hù)繼續增加到3百萬(wàn)后,垂直分割策略也開(kāi)始難以為繼。盡管站點(diǎn)的各個(gè)應用被設計得高度獨立,但有些信息必須共享。在這個(gè)架構里,每個(gè)數據庫必須有各自的用戶(hù)表副本--MySpace授權用戶(hù)的電子花名冊。這就意味著(zhù)一個(gè)用戶(hù)注冊時(shí),該條賬戶(hù)記錄必須在9個(gè)不同數據庫上分別創(chuàng )建。但在個(gè)別情況下,如果其中某臺數據庫服務(wù)器臨時(shí)不可到達,對應事務(wù)就會(huì )失敗,從而造成賬戶(hù)非完全創(chuàng )建,最終導致此用戶(hù)的該項服務(wù)無(wú)效。  
  •   另外一個(gè)問(wèn)題是,個(gè)別應用如博客增長(cháng)太快,那么專(zhuān)門(mén)為它服務(wù)的數據庫就有巨大壓力。  
  • 2004年中,MySpace面臨Web開(kāi)發(fā)者稱(chēng)之為"向上擴展""向外擴展"(譯者注:Scale Up和Scale Out,也稱(chēng)硬件擴展和軟件擴展)的抉擇--要么擴展到更大更強、也更昂貴的服務(wù)器上,要么部署大量相對便宜的服務(wù)器來(lái)分擔數據庫壓力。一般來(lái)說(shuō),大型站點(diǎn)傾向于向外擴展,因為這將讓它們得以保留通過(guò)增加服務(wù)器以提升系統能力的后路。  
  •   但成功地向外擴展架構必須解決復雜的分布式計算問(wèn)題,大型站點(diǎn)如Google、Yahoo和Amazon.com,都必須自行研發(fā)大量相關(guān)技術(shù)。以Google為例,它構建了自己的分布式文件系統。  
  •   另外,向外擴展策略還需要大量重寫(xiě)原來(lái)軟件,以保證系統能在分布式服務(wù)器上運行。"搞不好,開(kāi)發(fā)人員的所有工作都將白費",Benedetto說(shuō)。  
  •   因此,MySpace首先將重點(diǎn)放在了向上擴展上,花費了大約1個(gè)半月時(shí)間研究升級到32CPU服務(wù)器以管理更大數據庫的問(wèn)題。Benedetto說(shuō),"那時(shí)候,這個(gè)方案看似可能解決一切問(wèn)題。"如穩定性,更棒的是對現有軟件幾乎沒(méi)有改動(dòng)要求。  
  •   糟糕的是,高端服務(wù)器極其昂貴,是購置同樣處理能力和內存速度的多臺服務(wù)器總和的很多倍。而且,站點(diǎn)架構師預測,從長(cháng)期來(lái)看,即便是巨型數據庫,最后也會(huì )不堪重負,Benedetto說(shuō),"換句話(huà)講,只要增長(cháng)趨勢存在,我們最后無(wú)論如何都要走上向外擴展的道路。"  
  • 因此,MySpace最終將目光移到分布式計算架構--它在物理上分布的眾多服務(wù)器,整體必須邏輯上等同于單臺機器。拿數據庫來(lái)說(shuō),就不能再像過(guò)去那樣將應用拆分,再以不同數據庫分別支持,而必須將整個(gè)站點(diǎn)看作一個(gè)應用?,F在,數據庫模型里只有一個(gè)用戶(hù)表,支持博客、個(gè)人資料和其他核心功能的數據都存儲在相同數據庫。  
  •   既然所有的核心數據邏輯上都組織到一個(gè)數據庫,那么MySpace必須找到新的辦法以分擔負荷--顯然,運行在普通硬件上的單個(gè)數據庫服務(wù)器是無(wú)能為力的。這次,不再按站點(diǎn)功能和應用分割數據庫,MySpace開(kāi)始將它的用戶(hù)按每百萬(wàn)一組分割,然后將各組的全部數據分別存入獨立的SQL Server實(shí)例。目前,MySpace的每臺數據庫服務(wù)器實(shí)際運行兩個(gè)SQL Server實(shí)例,也就是說(shuō)每臺服務(wù)器服務(wù)大約2百萬(wàn)用戶(hù)。Benedetto指出,以后還可以按照這種模式以更小粒度劃分架構,從而優(yōu)化負荷分擔。  
  •   當然,還是有一個(gè)特殊數據庫保存了所有賬戶(hù)的名稱(chēng)和密碼。用戶(hù)登錄后,保存了他們其他數據的數據庫再接管服務(wù)。特殊數據庫的用戶(hù)表雖然龐大,但它只負責用戶(hù)登錄,功能單一,所以負荷還是比較容易控制的。   
  • 4. 里程碑四:9百萬(wàn)到17百萬(wàn)賬戶(hù)  
  • 2005年早期,賬戶(hù)達到9百萬(wàn)后,MySpace開(kāi)始用Microsoft的C#編寫(xiě)ASP.NET程序。C#是C語(yǔ)言的最新派生語(yǔ)言,吸收了C++和Java的優(yōu)點(diǎn),依托于Microsoft .NET框架(Microsoft為軟件組件化和分布式計算而設計的模型架構)。ASP.NET則由編寫(xiě)Web站點(diǎn)腳本的ASP技術(shù)演化而來(lái),是Microsoft目前主推的Web站點(diǎn)編程環(huán)境。  
  •   可以說(shuō)是立竿見(jiàn)影, MySpace馬上就發(fā)現ASP.NET程序運行更有效率,與ColdFusion相比,完成同樣任務(wù)需消耗的處理器能力更小。據技術(shù)總監Whitcomb說(shuō),新代碼需要150臺服務(wù)器完成的工作,如果用ColdFusion則需要246臺。Benedetto還指出,性能上升的另一個(gè)原因可能是在變換軟件平臺,并用新語(yǔ)言重寫(xiě)代碼的過(guò)程中,程序員復審并優(yōu)化了一些功能流程。  
  • 最終,MySpace開(kāi)始大規模遷移到ASP.NET。即便剩余的少部分ColdFusion代碼,也從Cold-Fusion服務(wù)器搬到了ASP.NET,因為他們得到了BlueDragon.NET(喬治亞州阿爾法利塔New Atlanta Communications公司的產(chǎn)品,它能將ColdFusion代碼自動(dòng)重新編譯到Microsoft平臺)的幫助。  
  •   賬戶(hù)達到1千萬(wàn)時(shí),MySpace再次遭遇存儲瓶頸問(wèn)題。SAN的引入解決了早期一些性能問(wèn)題,但站點(diǎn)目前的要求已經(jīng)開(kāi)始周期性超越SAN的I/O容量--即它從磁盤(pán)存儲系統讀寫(xiě)數據的極限速度。  
  •   原因之一是每數據庫1百萬(wàn)賬戶(hù)的分割策略,通常情況下的確可以將壓力均分到各臺服務(wù)器,但現實(shí)并非一成不變。比如第七臺賬戶(hù)數據庫上線(xiàn)后,僅僅7天就被塞滿(mǎn)了,主要原因是佛羅里達一個(gè)樂(lè )隊的歌迷瘋狂注冊。  
  •   某個(gè)數據庫可能因為任何原因,在任何時(shí)候遭遇主要負荷,這時(shí),SAN中綁定到該數據庫的磁盤(pán)存儲設備簇就可能過(guò)載。"SAN讓磁盤(pán)I/O能力大幅提升了,但將它們綁定到特定數據庫的做法是錯誤的。"Benedetto說(shuō)。  
  •   最初,MySpace通過(guò)定期重新分配SAN中數據,以讓其更為均衡的方法基本解決了這個(gè)問(wèn)題,但這是一個(gè)人工過(guò)程,"大概需要兩個(gè)人全職工作。"Benedetto說(shuō)。  
  • 長(cháng)期解決方案是遷移到虛擬存儲體系上,這樣,整個(gè)SAN被當作一個(gè)巨型存儲池,不再要求每個(gè)磁盤(pán)為特定應用服務(wù)。MySpace目前采用了一種新型SAN設備--來(lái)自加利福尼亞州弗里蒙特的3PARdata。  
  • 在3PAR的系統里,仍能在邏輯上按容量劃分數據存儲,但它不再被綁定到特定磁盤(pán)或磁盤(pán)簇,而是散布于大量磁盤(pán)。這就使均分數據訪(fǎng)問(wèn)負荷成為可能。當數據庫需要寫(xiě)入一組數據時(shí),任何空閑磁盤(pán)都可以馬上完成這項工作,而不再像以前那樣阻塞在可能已經(jīng)過(guò)載的磁盤(pán)陣列處。而且,因為多個(gè)磁盤(pán)都有數據副本,讀取數據時(shí),也不會(huì )使SAN的任何組件過(guò)載。  
  •   當2005年春天賬戶(hù)數達到17百萬(wàn)時(shí),MySpace又啟用了新的策略以減輕存儲系統壓力,即增加數據緩存層--位于Web服務(wù)器和數據庫服務(wù)器之間,其唯一職能是在內存中建立被頻繁請求數據對象的副本,如此一來(lái),不訪(fǎng)問(wèn)數據庫也可以向Web應用供給數據。換句話(huà)說(shuō),100個(gè)用戶(hù)請求同一份資料,以前需要查詢(xún)數據庫100次,而現在只需1次,其余都可從緩存數據中獲得。當然如果頁(yè)面變化,緩存的數據必須從內存擦除,然后重新從數據庫獲取--但在此之前,數據庫的壓力已經(jīng)大大減輕,整個(gè)站點(diǎn)的性能得到提升。  
  •   緩存區還為那些不需要記入數據庫的數據提供了驛站,比如為跟蹤用戶(hù)會(huì )話(huà)而創(chuàng )建的臨時(shí)文件--Benedetto坦言他需要在這方面補課,"我是數據庫存儲狂熱分子,因此我總是想著(zhù)將萬(wàn)事萬(wàn)物都存到數據庫。"但將像會(huì )話(huà)跟蹤這類(lèi)的數據也存到數據庫,站點(diǎn)將陷入泥沼。  
  •   增加緩存服務(wù)器是"一開(kāi)始就應該做的事情,但我們成長(cháng)太快,以致于沒(méi)有時(shí)間坐下來(lái)好好研究這件事情。"Benedetto補充道。  
  • http://www.itokit.com  
  • 5. 里程碑五:26百萬(wàn)賬戶(hù)  
  • 2005年中期,服務(wù)賬戶(hù)數達到26百萬(wàn)時(shí),MySpace切換到了還處于beta測試的SQL Server 2005。轉換何太急?主流看法是2005版支持64位處理器。但Benedetto說(shuō),"這不是主要原因,盡管這也很重要;主要還是因為我們對內存的渴求。"支持64位的數據庫可以管理更多內存。  
  •   更多內存就意味著(zhù)更高的性能和更大的容量。原來(lái)運行32位版本的SQL Server服務(wù)器,能同時(shí)使用的內存最多只有4G。切換到64位,就好像加粗了輸水管的直徑。升級到SQL Server 200564位Windows Server 2003后,MySpace每臺服務(wù)器配備了32G內存,后于2006年再次將配置標準提升到64G。  
  •   意外錯誤  
  •   如果沒(méi)有對系統架構的歷次修改與升級,MySpace根本不可能走到今天。但是,為什么系統還經(jīng)常吃撐著(zhù)了?很多用戶(hù)抱怨的"意外錯誤"是怎么引起的呢?  
  •   原因之一是MySpace對Microsoft的Web技術(shù)的應用已經(jīng)進(jìn)入連Microsoft自己也才剛剛開(kāi)始探索的領(lǐng)域。比如11月,超出SQL Server最大同時(shí)連接數,MySpace系統崩潰。Benedetto說(shuō),這類(lèi)可能引發(fā)系統崩潰的情況大概三天才會(huì )出現一次,但仍然過(guò)于頻繁了,以致惹人惱怒。一旦數據庫罷工,"無(wú)論這種情況什么時(shí)候發(fā)生,未緩存的數據都不能從SQL Server獲得,那么你就必然看到一個(gè)'意外錯誤'提示。"他解釋說(shuō)。  
  •   去年夏天,MySpace的Windows 2003多次自動(dòng)停止服務(wù)。后來(lái)發(fā)現是操作系統一個(gè)內置功能惹的禍--預防分布式拒絕服務(wù)攻擊(黑客使用很多客戶(hù)機向服務(wù)器發(fā)起大量連接請求,以致服務(wù)器癱瘓)。MySpace和其他很多頂級大站點(diǎn)一樣,肯定會(huì )經(jīng)常遭受攻擊,但它應該從網(wǎng)絡(luò )級而不是依靠Windows本身的功能來(lái)解決問(wèn)題--否則,大量MySpace合法用戶(hù)連接時(shí)也會(huì )引起服務(wù)器反擊。  
  • "我們花了大約一個(gè)月時(shí)間尋找Windows 2003服務(wù)器自動(dòng)停止的原因。"Benedetto說(shuō)。最后,通過(guò)Microsoft的幫助,他們才知道該怎么通知服務(wù)器:"別開(kāi)槍?zhuān)怯衍姟?  
  •   緊接著(zhù)是在去年7月某個(gè)周日晚上,MySpace總部所在地洛杉磯停電,造成整個(gè)系統停運12小時(shí)。大型Web站點(diǎn)通常要在地理上分布配置多個(gè)數據中心以預防單點(diǎn)故障。本來(lái),MySpace還有其他兩個(gè)數據中心以應對突發(fā)事件,但Web服務(wù)器都依賴(lài)于部署在洛杉磯的SAN。沒(méi)有洛杉磯的SAN,Web服務(wù)器除了懇求你耐心等待,不能提供任何服務(wù)。  
  • Benedetto說(shuō),主數據中心的可靠性通過(guò)下列措施保證:可接入兩張不同電網(wǎng),另有后備電源和一臺儲備有30天燃料的發(fā)電機。但在這次事故中,不僅兩張電網(wǎng)失效,而且在切換到備份電源的過(guò)程中,操作員燒掉了主動(dòng)力線(xiàn)路。  
  • 2007年中,MySpace在另兩個(gè)后備站點(diǎn)上也建設了SAN。這對分擔負荷大有幫助--正常情況下,每個(gè)SAN都能負擔三分之一的數據訪(fǎng)問(wèn)量。而在緊急情況下,任何一個(gè)站點(diǎn)都可以獨立支撐整個(gè)服務(wù),Benedetto說(shuō)。  
  • MySpace仍然在為提高穩定性?shī)^斗,雖然很多用戶(hù)表示了足夠信任且能原諒偶現的錯誤頁(yè)面。  
  • "作為開(kāi)發(fā)人員,我憎惡Bug,它太氣人了。"Dan Tanner這個(gè)31歲的德克薩斯軟件工程師說(shuō),他通過(guò)MySpace重新聯(lián)系到了高中和大學(xué)同學(xué)。"不過(guò),MySpace對我們的用處很大,因此我們可以原諒偶發(fā)的故障和錯誤。" Tanner說(shuō),如果站點(diǎn)某天出現故障甚至崩潰,恢復以后他還是會(huì )繼續使用。  
  •   這就是為什么Drew在論壇里咆哮時(shí),大部分用戶(hù)都告訴他應該保持平靜,如果等幾分鐘,問(wèn)題就會(huì )解決的原因。Drew無(wú)法平靜,他寫(xiě)道,"我已經(jīng)兩次給MySpace發(fā)郵件,而它說(shuō)一小時(shí)前還是正常的,現在出了點(diǎn)問(wèn)題……完全是一堆廢話(huà)。"另一個(gè)用戶(hù)回復說(shuō),"畢竟它是免費的。"Benedetto坦承100%的可靠性不是他的目標。"它不是銀行,而是一個(gè)免費的服務(wù)。"他說(shuō)。  
  •   換句話(huà)說(shuō),MySpace的偶發(fā)故障可能造成某人最后更新的個(gè)人資料丟失,但并不意味著(zhù)網(wǎng)站弄丟了用戶(hù)的錢(qián)財。"關(guān)鍵是要認識到,與保證站點(diǎn)性能相比,丟失少許數據的故障是可接受的。"Benedetto說(shuō)。所以,MySpace甘冒丟失2分鐘到2小時(shí)內任意點(diǎn)數據的危險,在SQL Server配置里延長(cháng)了"checkpoint"操作--它將待更新數據永久記錄到磁盤(pán)--的間隔時(shí)間,因為這樣做可以加快數據庫的運行。  
  • Benedetto說(shuō),同樣,開(kāi)發(fā)人員還經(jīng)常在幾個(gè)小時(shí)內就完成構思、編碼、測試和發(fā)布全過(guò)程。這有引入Bug的風(fēng)險,但這樣做可以更快實(shí)現新功能。而且,因為進(jìn)行大規模真實(shí)測試不具可行性,他們的測試通常是在僅以部分活躍用戶(hù)為對象,且用戶(hù)對軟件新功能和改進(jìn)不知就里的情況下進(jìn)行的。因為事實(shí)上不可能做真實(shí)的加載測試,他們做的測試通常都是針對站點(diǎn)。  
  • "我們犯過(guò)大量錯誤,"Benedetto說(shuō),"但到頭來(lái),我認為我們做對的還是比做錯的多。"  
  •   
  • 七、 從LiveJournal后臺發(fā)展看大規模網(wǎng)站性能優(yōu)化方法  
  • LiveJournal是99年始于校園中的項目,幾個(gè)人出于愛(ài)好做了這樣一個(gè)應用,以實(shí)現以下功能:  
  •   
  • 博客,論壇   
  • 社會(huì )性網(wǎng)絡(luò ),找到朋友   
  • 聚合,把朋友的文章聚合在一起   
  • LiveJournal采用了大量的開(kāi)源軟件,甚至它本身也是一個(gè)開(kāi)源軟件。  
  •   
  • 在上線(xiàn)后,LiveJournal實(shí)現了非??焖俚脑鲩L(cháng):  
  •   
  • 20044月份:280萬(wàn)注冊用戶(hù)。   
  • 20054月份:680萬(wàn)注冊用戶(hù)。   
  • 20058月份:790萬(wàn)注冊用戶(hù)。   
  • 達到了每秒鐘上千次的頁(yè)面請求及處理。   
  • 使用了大量MySQL服務(wù)器。   
  • 使用了大量通用組件。   
  • 二、LiveJournal架構現狀概況  
  •   
  •   
  • 三、從LiveJournal發(fā)展中學(xué)習  
  • LiveJournal從1臺服務(wù)器發(fā)展到100臺服務(wù)器,這其中經(jīng)歷了無(wú)數的傷痛,但同時(shí)也摸索出了解決這些問(wèn)題的方法,通過(guò)對LiveJournal的學(xué)習,可以讓我們避免LJ曾經(jīng)犯過(guò)的錯誤,并且從一開(kāi)始就對系統進(jìn)行良好的設計,以避免后期的痛苦。  
  • 下面我們一步一步看LJ發(fā)展的腳步。  
  • 1、一臺服務(wù)器  
  • 一臺別人捐助的服務(wù)器,LJ最初就跑在上面,就像Google開(kāi)始時(shí)候用的破服務(wù)器一樣,值得我們尊敬。這個(gè)階段,LJ的人以驚人的速度熟悉的Unix的操作管理,服務(wù)器性能出現過(guò)問(wèn)題,不過(guò)還好,可以通過(guò)一些小修小改應付過(guò)去。在這個(gè)階段里L(fēng)J把CGI升級到了FastCGI。  
  • 最終問(wèn)題出現了,網(wǎng)站越來(lái)越慢,已經(jīng)無(wú)法通過(guò)優(yōu)過(guò)化來(lái)解決的地步,需要更多的服務(wù)器,這時(shí)LJ開(kāi)始提供付費服務(wù),可能是想通過(guò)這些錢(qián)來(lái)購買(mǎi)新的服務(wù)器,以解決當時(shí)的困境。  
  • 毫無(wú)疑問(wèn),當時(shí)LJ存在巨大的單點(diǎn)問(wèn)題,所有的東西都在那臺服務(wù)器的鐵皮盒子里裝著(zhù)。  
  • 2、兩臺服務(wù)器  
  • 用付費服務(wù)賺來(lái)的錢(qián)LJ買(mǎi)了兩臺服務(wù)器:一臺叫做Kenny的Dell 6U機器用于提供Web服務(wù),一臺叫做Cartman的Dell 6U服務(wù)器用于提供數據庫服務(wù)。  
  •   
  • LJ有了更大的磁盤(pán),更多的計算資源。但同時(shí)網(wǎng)絡(luò )結構還是非常簡(jiǎn)單,每臺機器兩塊網(wǎng)卡,Cartman通過(guò)內網(wǎng)為Kenny提供MySQL數據庫服務(wù)。  
  • 暫時(shí)解決了負載的問(wèn)題,新的問(wèn)題又出現了:  
  •   
  • 原來(lái)的一個(gè)單點(diǎn)變成了兩個(gè)單點(diǎn)。  
  • 沒(méi)有冷備份或熱備份。  
  • 網(wǎng)站速度慢的問(wèn)題又開(kāi)始出現了,沒(méi)辦法,增長(cháng)太快了。  
  • Web服務(wù)器上CPU達到上限,需要更多的Web服務(wù)器。  
  • 3、四臺服務(wù)器  
  • 又買(mǎi)了兩臺,Kyle和Stan,這次都是1U的,都用于提供Web服務(wù)。目前LJ一共有3臺Web服務(wù)器和一臺數據庫服務(wù)器。這時(shí)需要在3臺Web服務(wù)器上進(jìn)行負載均橫。  
  •   
  • LJ把Kenny用于外部的網(wǎng)關(guān),使用mod_backhand進(jìn)行負載均橫。  
  • 然后問(wèn)題又出現了:  
  •   
  • 單點(diǎn)故障。數據庫和用于做網(wǎng)關(guān)的Web服務(wù)器都是單點(diǎn),一旦任何一臺機器出現問(wèn)題將導致所有服務(wù)不可用。雖然用于做網(wǎng)關(guān)的Web服務(wù)器可以通過(guò)保持心跳同步迅速切換,但還是無(wú)法解決數據庫的單點(diǎn),LJ當時(shí)也沒(méi)做這個(gè)。  
  • 網(wǎng)站又變慢了,這次是因為IO和數據庫的問(wèn)題,問(wèn)題是怎么往應用里面添加數據庫呢?  
  • 4、五臺服務(wù)器  
  • 又買(mǎi)了一臺數據庫服務(wù)器。在兩臺數據庫服務(wù)器上使用了數據庫同步(Mysql支持的Master-Slave模式),寫(xiě)操作全部針對主數據庫(通過(guò)Binlog,主服務(wù)器上的寫(xiě)操作可以迅速同步到從服務(wù)器上),讀操作在兩個(gè)數據庫上同時(shí)進(jìn)行(也算是負載均橫的一種吧)。  
  •   
  • 實(shí)現同步時(shí)要注意幾個(gè)事項:  
  •   
  • 讀操作數據庫選擇算法處理,要選一個(gè)當前負載輕一點(diǎn)的數據庫。  
  • 在從數據庫服務(wù)器上只能進(jìn)行讀操作  
  • 準備好應對同步過(guò)程中的延遲,處理不好可能會(huì )導致數據庫同步的中斷。只需要對寫(xiě)操作進(jìn)行判斷即可,讀操作不存在同步問(wèn)題。  
  • 5、更多服務(wù)器  
  • 有錢(qián)了,當然要多買(mǎi)些服務(wù)器。部署后快了沒(méi)多久,又開(kāi)始慢了。這次有更多的Web服務(wù)器,更多的數據庫服務(wù)器,存在 IO與CPU爭用。于是采用了BIG-IP作為負載均衡解決方案。  
  •   
  • 6、現在我們在哪里:  
  •   
  • 現在服務(wù)器基本上夠了,但性能還是有問(wèn)題,原因出在架構上。  
  • 數據庫的架構是最大的問(wèn)題。由于增加的數據庫都是以Slave模式添加到應用內,這樣唯一的好處就是將讀操作分布到了多臺機器,但這樣帶來(lái)的后果就是寫(xiě)操作被大量分發(fā),每臺機器都要執行,服務(wù)器越多,浪費就越大,隨著(zhù)寫(xiě)操作的增加,用于服務(wù)讀操作的資源越來(lái)越少。  
  •   
  • 由一臺分布到兩臺  
  •   
  • 最終效果  
  • 現在我們發(fā)現,我們并不需要把這些數據在如此多的服務(wù)器上都保留一份。服務(wù)器上已經(jīng)做了RAID,數據庫也進(jìn)行了備份,這么多的備份完全是對資源的浪費,屬于冗余極端過(guò)度。那為什么不把數據分布存儲呢?  
  • 問(wèn)題發(fā)現了,開(kāi)始考慮如何解決?,F在要做的就是把不同用戶(hù)的數據分布到不同的服務(wù)器上進(jìn)行存儲,以實(shí)現數據的分布式存儲,讓每臺機器只為相對固定的用戶(hù)服務(wù),以實(shí)現平行的架構和良好的可擴展性。  
  • 為了實(shí)現用戶(hù)分組,我們需要為每一個(gè)用戶(hù)分配一個(gè)組標記,用于標記此用戶(hù)的數據存放在哪一組數據庫服務(wù)器中。每組數據庫由一個(gè)master及幾個(gè)slave組成,并且slave的數量在2-3臺,以實(shí)現系統資源的最合理分配,既保證數據讀操作分布,又避免數據過(guò)度冗余以及同步操作對系統資源的過(guò)度消耗。  
  •   
  • 由一臺(一組)中心服務(wù)器提供用戶(hù)分組控制。所有用戶(hù)的分組信息都存儲在這臺機器上,所有針對用戶(hù)的操作需要先查詢(xún)這臺機器得到用戶(hù)的組號,然后再到相應的數據庫組中獲取數據。  
  • 這樣的用戶(hù)架構與目前LJ的架構已經(jīng)很相像了。  
  • 在具體的實(shí)現時(shí)需要注意幾個(gè)問(wèn)題:  
  •   
  • 在數據庫組內不要使用自增ID,以便于以后在數據庫組之間遷移用戶(hù),以實(shí)現更合理的I/O,磁盤(pán)空間及負載分布。  
  • 將userid,postid存儲在全局服務(wù)器上,可以使用自增,數據庫組中的相應值必須以全局服務(wù)器上的值為準。全局服務(wù)器上使用事務(wù)型數據庫InnoDB。  
  • 在數據庫組之間遷移用戶(hù)時(shí)要萬(wàn)分小心,當遷移時(shí)用戶(hù)不能有寫(xiě)操作  
  • 7、現在我們在哪里  
  • 問(wèn)題:  
  • 一個(gè)全局主服務(wù)器,掛掉的話(huà)所有用戶(hù)注冊及寫(xiě)操作就掛掉。   
  • 每個(gè)數據庫組一個(gè)主服務(wù)器,掛掉的話(huà)這組用戶(hù)的寫(xiě)操作就掛掉。   
  • 數據庫組從服務(wù)器掛掉的話(huà)會(huì )導致其它服務(wù)器負載過(guò)大。   
  • 對于Master-Slave模式的單點(diǎn)問(wèn)題,LJ采取了Master-Master模式來(lái)解決。所謂Master-Master實(shí)際上是人工實(shí)現的,并不是由MySQL直接提供的,實(shí)際上也就是兩臺機器同時(shí)是Master,也同時(shí)是Slave,互相同步。  
  • Master-Master實(shí)現時(shí)需要注意:  
  • 一個(gè)Master出錯后恢復同步,最好由服務(wù)器自動(dòng)完成。   
  • 數字分配,由于同時(shí)在兩臺機器上寫(xiě),有些ID可能會(huì )沖突。   
  • 解決方案:  
  • 奇偶數分配ID,一臺機器上寫(xiě)奇數,一臺機器上寫(xiě)偶數   
  • 通過(guò)全局服務(wù)器進(jìn)行分配(LJ采用的做法)。   
  • Master-Master模式還有一種用法,這種方法與前一種相比,仍然保持兩臺機器的同步,但只有一臺機器提供服務(wù)(讀和寫(xiě)),在每天晚上的時(shí)候進(jìn)行輪換,或者出現問(wèn)題的時(shí)候進(jìn)行切換。  
  •   
  • 問(wèn)題:  
  •   
  • 一個(gè)全局主服務(wù)器,掛掉的話(huà)所有用戶(hù)注冊及寫(xiě)操作就掛掉。   
  • 每個(gè)數據庫組一個(gè)主服務(wù)器,掛掉的話(huà)這組用戶(hù)的寫(xiě)操作就掛掉。   
  • 數據庫組從服務(wù)器掛掉的話(huà)會(huì )導致其它服務(wù)器負載過(guò)大。   
  • 對于Master-Slave模式的單點(diǎn)問(wèn)題,LJ采取了Master-Master模式來(lái)解決。所謂Master-Master實(shí)際上是人工實(shí)現的,并不是由MySQL直接提供的,實(shí)際上也就是兩臺機器同時(shí)是Master,也同時(shí)是Slave,互相同步。  
  • Master-Master實(shí)現時(shí)需要注意:  
  • 一個(gè)Master出錯后恢復同步,最好由服務(wù)器自動(dòng)完成。   
  • 數字分配,由于同時(shí)在兩臺機器上寫(xiě),有些ID可能會(huì )沖突。   
  • 解決方案:  
  •   
  • 奇偶數分配ID,一臺機器上寫(xiě)奇數,一臺機器上寫(xiě)偶數   
  • 通過(guò)全局服務(wù)器進(jìn)行分配(LJ采用的做法)。   
  • Master-Master模式還有一種用法,這種方法與前一種相比,仍然保持兩臺機器的同步,但只有一臺機器提供服務(wù)(讀和寫(xiě)),在每天晚上的時(shí)候進(jìn)行輪換,或者出現問(wèn)題的時(shí)候進(jìn)行切換。  
  •   
  • 8、現在我們在哪里  
  • 現在插播一條廣告,MyISAM VS InnoDB。  
  •   
  • 使用InnoDB:  
  • 支持事務(wù)   
  • 需要做更多的配置,不過(guò)值得,可以更安全的存儲數據,以及得到更快的速度。   
  •   
  • 使用MyISAM:  
  • 記錄日志(LJ用它來(lái)記網(wǎng)絡(luò )訪(fǎng)問(wèn)日志)   
  • 存儲只讀靜態(tài)數據,足夠快。   
  • 并發(fā)性很差,無(wú)法同時(shí)讀寫(xiě)數據(添加數據可以)   
  • MySQL非正常關(guān)閉或死機時(shí)會(huì )導致索引錯誤,需要使用myisamchk修復,而且當訪(fǎng)問(wèn)量大時(shí)出現非常頻繁。   
  •   
  • 9、緩存  
  • 去年我寫(xiě)過(guò)一篇文章介紹memcached,它就是由LJ的團隊開(kāi)發(fā)的一款緩存工具,以key-value的方式將數據存儲到分布的內存中。LJ緩存的數據:  
  •   
  • 12臺獨立服務(wù)器(不是捐贈的)   
  • 28個(gè)實(shí)例   
  • 30GB總容量   
  • 90-93%的命中率(用過(guò)squid的人可能知道,squid內存加磁盤(pán)的命中率大概在70-80%)   
  • 如何建立緩存策略?  
  •   
  • 想緩存所有的東西?那是不可能的,我們只需要緩存已經(jīng)或者可能導致系統瓶頸的地方,最大程度的提交系統運行效率。通過(guò)對MySQL的日志的分析我們可以找到緩存的對象。  
  •   
  • 緩存的缺點(diǎn)?  
  •   
  • 沒(méi)有完美的事物,緩存也有缺點(diǎn):   
  • 增大開(kāi)發(fā)量,需要針對緩存處理編寫(xiě)特殊的代碼。   
  • 管理難度增加,需要更多人參與系統維護。   
  • 當然大內存也需要錢(qián)。  
  •   
  • 10、Web訪(fǎng)問(wèn)負載均衡  
  • 在數據包級別使用BIG-IP,但BIG-IP并不知道我們內部的處理機制,無(wú)法判斷由哪臺服務(wù)器對這些請求進(jìn)行處理。反向代理并不能很好的起到作用,不是已經(jīng)夠快了,就是達不到我們想要的效果。  
  •   
  • 所以,LJ又開(kāi)發(fā)了Perlbal。特點(diǎn):  
  •   
  •   
  • 快,小,可管理的http web 服務(wù)器/代理  
  • 可以在內部進(jìn)行轉發(fā)  
  • 使用Perl開(kāi)發(fā)  
  • 單線(xiàn)程,異步,基于事件,使用epoll , kqueue  
  • 支持Console管理與http遠程管理,支持動(dòng)態(tài)配置加載  
  • 多種模式:web服務(wù)器,反向代理,插件  
  • 支持插件:GIF/PNG互換?  
  •   
  •   
  • 11、MogileFS  
  • LJ使用開(kāi)源的MogileFS作為分布式文件存儲系統。MogileFS使用非常簡(jiǎn)單,它的主要設計思想是:  
  •   
  • 文件屬于類(lèi)(類(lèi)是最小的復制單位)  
  • 跟蹤文件存儲位置  
  • 在不同主機上存儲  
  • 使用MySQL集群統一存儲分布信息  
  • 大容易廉價(jià)磁盤(pán)  
  •   
  • 到目前為止就這么多了,更多文檔可以在http://www.danga.com/words/找到。Danga.com和LiveJournal.com的同學(xué)們拿這個(gè)文檔參加了兩次MySQL Con,兩次OS Con,以及眾多的其它會(huì )議,無(wú)私的把他們的經(jīng)驗分享出來(lái),值得我們學(xué)習。在web2.0時(shí)代快速開(kāi)發(fā)得到大家越來(lái)越多的重視,但良好的設計仍是每一個(gè)應用的基礎,希望web2.0們在成長(cháng)為T(mén)op500網(wǎng)站的路上,不要因為架構阻礙了網(wǎng)站的發(fā)展。  
  •   
  • 八、 說(shuō)說(shuō)大型高并發(fā)高負載網(wǎng)站的系統架構  
  • 我在Cernet做過(guò)撥號接入平臺的搭建,而后在Yahoo3721負載搜索引擎前端平臺開(kāi)發(fā),又在貓撲處理過(guò)大型社區貓撲大雜燴的架構升級等工作,同時(shí)自己接觸和開(kāi)發(fā)過(guò)不少大中型網(wǎng)站的模塊,因此在大型網(wǎng)站應對高負載和并發(fā)的解決方案上有一些積累和經(jīng)驗,可以和大家一起探討一下。  
  •   
  • 一個(gè)小型的網(wǎng)站,比如個(gè)人網(wǎng)站,可以使用最簡(jiǎn)單的html靜態(tài)頁(yè)面就實(shí)現了,配合一些圖片達到美化效果,所有的頁(yè)面均存放在一個(gè)目錄下,這樣的網(wǎng)站對系統架構、性能的要求都很簡(jiǎn)單,隨著(zhù)互聯(lián)網(wǎng)業(yè)務(wù)的不斷豐富,網(wǎng)站相關(guān)的技術(shù)經(jīng)過(guò)這些年的發(fā)展,已經(jīng)細分到很細的方方面面,尤其對于大型網(wǎng)站來(lái)說(shuō),所采用的技術(shù)更是涉及面非常廣,從硬件到軟件、編程語(yǔ)言、數據庫、WebServer、防火墻等各個(gè)領(lǐng)域都有了很高的要求,已經(jīng)不是原來(lái)簡(jiǎn)單的html靜態(tài)網(wǎng)站所能比擬的。  
  •   
  • 大型網(wǎng)站,比如門(mén)戶(hù)網(wǎng)站。在面對大量用戶(hù)訪(fǎng)問(wèn)、高并發(fā)請求方面,基本的解決方案集中在這樣幾個(gè)環(huán)節:使用高性能的服務(wù)器、高性能的數據庫、高效率的編程語(yǔ)言、還有高性能的Web容器。但是除了這幾個(gè)方面,還沒(méi)法根本解決大型網(wǎng)站面臨的高負載和高并發(fā)問(wèn)題。  
  •   
  • 上面提供的幾個(gè)解決思路在一定程度上也意味著(zhù)更大的投入,并且這樣的解決思路具備瓶頸,沒(méi)有很好的擴展性,下面我從低成本、高性能和高擴張性的角度來(lái)說(shuō)說(shuō)我的一些經(jīng)驗。  
  • http://www.itokit.com  
  • 1、HTML靜態(tài)化  
  • 其實(shí)大家都知道,效率最高、消耗最小的就是純靜態(tài)化的html頁(yè)面,所以我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來(lái)實(shí)現,這個(gè)最簡(jiǎn)單的方法其實(shí)也是最有效的方法。但是對于大量?jì)热莶⑶翌l繁更新的網(wǎng)站,我們無(wú)法全部手動(dòng)去挨個(gè)實(shí)現,于是出現了我們常見(jiàn)的信息發(fā)布系統CMS,像我們常訪(fǎng)問(wèn)的各個(gè)門(mén)戶(hù)站點(diǎn)的新聞頻道,甚至他們的其他頻道,都是通過(guò)信息發(fā)布系統來(lái)管理和實(shí)現的,信息發(fā)布系統可以實(shí)現最簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面,還能具備頻道管理、權限管理、自動(dòng)抓取等功能,對于一個(gè)大型網(wǎng)站來(lái)說(shuō),擁有一套高效、可管理的CMS是必不可少的。  
  • http://www.itokit.com  
  • 除了門(mén)戶(hù)和信息發(fā)布類(lèi)型的網(wǎng)站,對于交互性要求很高的社區類(lèi)型網(wǎng)站來(lái)說(shuō),盡可能的靜態(tài)化也是提高性能的必要手段,將社區內的帖子、文章進(jìn)行實(shí)時(shí)的靜態(tài)化,有更新的時(shí)候再重新靜態(tài)化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網(wǎng)易社區等也是如此。  
  •   
  • 同時(shí),html靜態(tài)化也是某些緩存策略使用的手段,對于系統中頻繁使用數據庫查詢(xún)但是內容更新很小的應用,可以考慮使用html靜態(tài)化來(lái)實(shí)現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進(jìn)行后臺管理并且存儲再數據庫中,這些信息其實(shí)大量被前臺程序調用,但是更新頻率很小,可以考慮將這部分內容進(jìn)行后臺更新的時(shí)候進(jìn)行靜態(tài)化,這樣避免了大量的數據庫訪(fǎng)問(wèn)請求。  
  •   
  • 2、圖片服務(wù)器分離  
  • 大家知道,對于Web服務(wù)器來(lái)說(shuō),不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面進(jìn)行分離,這是基本上大型網(wǎng)站都會(huì )采用的策略,他們都有獨立的圖片服務(wù)器,甚至很多臺圖片服務(wù)器。這樣的架構可以降低提供頁(yè)面訪(fǎng)問(wèn)請求的服務(wù)器系統壓力,并且可以保證系統不會(huì )因為圖片問(wèn)題而崩潰,在應用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化,比如apache在配置ContentType的時(shí)候可以盡量少支持,盡可能少的LoadModule,保證更高的系統消耗和執行效率。  
  • 3、數據庫集群和庫表散列  
  • 大型網(wǎng)站都有復雜的應用,這些應用必須使用數據庫,那么在面對大量訪(fǎng)問(wèn)的時(shí)候,數據庫的瓶頸很快就能顯現出來(lái),這時(shí)一臺數據庫將很快無(wú)法滿(mǎn)足應用,于是我們需要使用數據庫集群或者庫表散列。  
  •   
  • 在數據庫集群方面,很多數據庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類(lèi)似的方案,您使用了什么樣的DB,就參考相應的解決方案來(lái)實(shí)施即可。  
  •   
  • 上面提到的數據庫集群由于在架構、成本、擴張性方面都會(huì )受到所采用DB類(lèi)型的限制,于是我們需要從應用程序的角度來(lái)考慮改善系統架構,庫表散列是常用并且最有效的解決方案。我們在應用程序中安裝業(yè)務(wù)和應用或者功能模塊將數據庫進(jìn)行分離,不同的模塊對應不同的數據庫或者表,再按照一定的策略對某個(gè)頁(yè)面或者功能進(jìn)行更小的數據庫散列,比如用戶(hù)表,按照用戶(hù)ID進(jìn)行表散列,這樣就能夠低成本的提升系統的性能并且有很好的擴展性。sohu的論壇就是采用了這樣的架構,將論壇的用戶(hù)、設置、帖子等信息進(jìn)行數據庫分離,然后對帖子、用戶(hù)按照板塊和ID進(jìn)行散列數據庫和表,最終可以在配置文件中進(jìn)行簡(jiǎn)單的配置便能讓系統隨時(shí)增加一臺低成本的數據庫進(jìn)來(lái)補充系統性能。  
  •   
  • 4、緩存  
  • 緩存一詞搞技術(shù)的都接觸過(guò),很多地方用到緩存。網(wǎng)站架構和網(wǎng)站開(kāi)發(fā)中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在后面講述。  
  • 架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進(jìn)行緩存,這兩種方式均可以有效的提高Apache的訪(fǎng)問(wèn)響應能力  
  • 網(wǎng)站程序開(kāi)發(fā)方面的緩存,Linux上提供的Memory Cache是常用的緩存接口,可以在web開(kāi)發(fā)中使用,比如用Java開(kāi)發(fā)的時(shí)候就可以調用MemoryCache對一些數據進(jìn)行緩存和通訊共享,一些大型社區使用了這樣的架構。另外,在使用web語(yǔ)言開(kāi)發(fā)的時(shí)候,各種語(yǔ)言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。  
  •   
  • 5、鏡像  
  • 鏡像是大型網(wǎng)站常采用的提高性能和數據安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò )接入商和地域帶來(lái)的用戶(hù)訪(fǎng)問(wèn)速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網(wǎng)站在教育網(wǎng)內搭建鏡像站點(diǎn),數據進(jìn)行定時(shí)更新或者實(shí)時(shí)更新。在鏡像的細節技術(shù)方面,這里不闡述太深,有很多專(zhuān)業(yè)的現成的解決架構和產(chǎn)品可選。也有廉價(jià)的通過(guò)軟件實(shí)現的思路,比如Linux上的rsync等工具。  
  •   
  • 6、負載均衡  
  • 負載均衡將是大型網(wǎng)站解決高負荷訪(fǎng)問(wèn)和大量并發(fā)請求采用的終極解決辦法。  
  • 負載均衡技術(shù)發(fā)展了多年,有很多專(zhuān)業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,我個(gè)人接觸過(guò)一些解決方法,其中有兩個(gè)架構可以給大家做參考。  
  •   
  • 硬件四層交換 第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業(yè)務(wù)流,將整個(gè)區間段的業(yè)務(wù)流分配到合適的應用服務(wù)器進(jìn)行處理?!〉谒膶咏粨Q功能就象是虛IP,指向物理服務(wù)器。它傳輸的業(yè)務(wù)服從的協(xié)議多種多樣,有HTTP、FTP、NFS、Telnet或其他協(xié)議。這些業(yè)務(wù)在物理服務(wù)器基礎上,需要復雜的載量平衡算法。在IP世界,業(yè)務(wù)類(lèi)型由終端TCP或UDP端口地址來(lái)決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP端口共同決定。  
  • 在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國當初接近2000臺服務(wù)器使用了三四臺Alteon就搞定了。  
  •   
  • 軟件四層交換   
  • 大家知道了硬件四層交換機的原理后,基于OSI模型來(lái)實(shí)現的軟件四層交換也就應運而生,這樣的解決方案實(shí)現的原理一致,不過(guò)性能稍差。但是滿(mǎn)足一定量的壓力還是游刃有余的,有人說(shuō)軟件實(shí)現方式其實(shí)更靈活,處理能力完全看你配置的熟悉能力。  
  • 軟件四層交換我們可以使用Linux上常用的LVS來(lái)解決,LVS就是Linux Virtual Server,他提供了基于心跳線(xiàn)heartbeat的實(shí)時(shí)災難應對解決方案,提高系統的魯棒性,同時(shí)可供了靈活的虛擬VIP配置和管理功能,可以同時(shí)滿(mǎn)足多種應用需求,這對于分布式的系統來(lái)說(shuō)必不可少。  
  • 一個(gè)典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構低成本、高性能還有很強的擴張性,隨時(shí)往架構里面增減節點(diǎn)都非常容易。這樣的架構我準備空了專(zhuān)門(mén)詳細整理一下和大家探討。  
  • 對于大型網(wǎng)站來(lái)說(shuō),前面提到的每個(gè)方法可能都會(huì )被同時(shí)使用到,我這里介紹得比較淺顯,具體實(shí)現過(guò)程中很多細節還需要大家慢慢熟悉和體會(huì ),有時(shí)一個(gè)很小的squid參數或者apache參數設置,對于系統性能的影響就會(huì )很大,希望大家一起討論,達到拋磚引玉之效。  
  • 本篇文章來(lái)源于 - http://www.itokit.com - web開(kāi)發(fā)技術(shù) 原文地址是:http://www.itokit.com/bbs/viewthread.php?tid=1911 
  • 本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    從MySpace的六次重構經(jīng)歷,來(lái)認識分布式系統到底該如何創(chuàng )建MySpace|技術(shù)|架構|
    億萬(wàn)用戶(hù)網(wǎng)站MySpace的成功秘密
    Web 2.0 會(huì )泄露我們的隱私 并用之牟利?
    字節大佬怒刷3天,神扒萬(wàn)字高性能 Web站點(diǎn)構建方式
    大型網(wǎng)站的架構設計問(wèn)題----大型高并發(fā)高負載網(wǎng)站的系統架構 - 技術(shù)相關(guān),大型網(wǎng)站,架構...
    MySpace 和Amzon成功的秘密【技術(shù)-網(wǎng)站架構篇】
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導長(cháng)圖 關(guān)注 下載文章
    綁定賬號成功
    后續可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久