乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      網(wǎng)站架構(gòu)(頁(yè)面靜態(tài)化,圖片服務(wù)器分離,負(fù)載均衡)方案全解析

       CevenCheng 2011-04-19
      網(wǎng)站架構(gòu)(頁(yè)面靜態(tài)化,圖片服務(wù)器分離,負(fù)載均衡)方案全解析 
      1、HTML靜態(tài)化其實(shí)大家都知道,效率最高、消耗最小的就是純靜態(tài)化的html頁(yè)面,所以我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來(lái)實(shí)現(xiàn),這個(gè)最簡(jiǎn)單的方法其實(shí)也是最有效的方法。但是對(duì)于大量?jī)?nèi)容并且頻繁更新的網(wǎng)站,我們無(wú)法全部手動(dòng)去挨個(gè)實(shí)現(xiàn),于是出現(xiàn)了我們常見(jiàn)的信息發(fā)布系統(tǒng)CMS,像我們常訪問(wèn)的各個(gè)門戶站點(diǎn)的新聞?lì)l道,甚至他們的其他頻道,都是通過(guò)信息發(fā)布系統(tǒng)來(lái)管理和實(shí)現(xiàn)的,信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面,還能具備頻道管理、權(quán)限管理、自動(dòng)抓取等功能,對(duì)于一個(gè)大型網(wǎng)站來(lái)說(shuō),擁有一套高效、可管理的CMS是必不可少的。除了門戶和信息發(fā)布類型的網(wǎng)站,對(duì)于交互性要求很高的社區(qū)類型網(wǎng)站來(lái)說(shuō),盡可能的靜態(tài)化也是提高性能的必要手段,將社區(qū)內(nèi)的帖子、文章進(jìn)行實(shí)時(shí)的靜態(tài)化,有更新的時(shí)候再重新靜態(tài)化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網(wǎng)易社區(qū)等也是如此。同時(shí),html靜態(tài)化也是某些緩存策略使用的手段,對(duì)于系統(tǒng)中頻繁使用數(shù)據(jù)庫(kù)查詢但是內(nèi)容更新很小的應(yīng)用,可以考慮使用html靜態(tài)化來(lái)實(shí)現(xiàn),比如論壇中論壇的公用設(shè)置信息,這些信息目前的主流論壇都可以進(jìn)行后臺(tái)管理并且存儲(chǔ)再數(shù)據(jù)庫(kù)中,這些信息其實(shí)大量被前臺(tái)程序調(diào)用,但是更新頻率很小可以考慮將這部分內(nèi)容進(jìn)行后臺(tái)更新的時(shí)候進(jìn)行靜態(tài)化,這樣避免了大量的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求。 
      2、圖片服務(wù)器分離大家知道,對(duì)于Web服務(wù)器來(lái)說(shuō),不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面進(jìn)行分離,這是基本上大型網(wǎng)站都會(huì)采用的策略,他們都有獨(dú)立的圖片服務(wù)器,甚至很多臺(tái)圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問(wèn)題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化,比如apache在配置ContentType的時(shí)候可以盡量少支持,盡可能少的LoadModule,保證更高的系統(tǒng)消耗和執(zhí)行效率。 
      3、數(shù)據(jù)庫(kù)集群和庫(kù)表散列大型網(wǎng)站都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫(kù),那么在面對(duì)大量訪問(wèn)的時(shí)候,數(shù)據(jù)庫(kù)的瓶頸很快就能顯現(xiàn)出來(lái),這時(shí)一臺(tái)數(shù)據(jù)庫(kù)將很快無(wú)法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫(kù)集群或者庫(kù)表散列。在數(shù)據(jù)庫(kù)集群方面,很多數(shù)據(jù)庫(kù)都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什么樣的DB,就參考相應(yīng)的解決方案來(lái)實(shí)施即可。上面提到的數(shù)據(jù)庫(kù)集群由于在架構(gòu)、成本、擴(kuò)張性方面都會(huì)受到所采用DB類型的限制,于是我們需要從應(yīng)用程序的角度來(lái)考慮改善系統(tǒng)架構(gòu),庫(kù)表散列是常用并且最有效的解決方案。我們?cè)趹?yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫(kù)進(jìn)行分離,不同的模塊對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)或者表,再按照一定的策略對(duì)某個(gè)頁(yè)面或者功能進(jìn)行更小的數(shù)據(jù)庫(kù)散列,比如用戶表,按照用戶ID進(jìn)行表散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴(kuò)展性。sohu的論壇就是采用了這樣的架構(gòu),將論壇的用戶、設(shè)置、帖子等信息進(jìn)行數(shù)據(jù)庫(kù)分離,然后對(duì)帖子、用戶按照板塊和ID進(jìn)行散列數(shù)據(jù)庫(kù)和表,最終可以在配置文件中進(jìn)行簡(jiǎn)單的配置便能讓系統(tǒng)隨時(shí)增加一臺(tái)低成本的數(shù)據(jù)庫(kù)進(jìn)來(lái)補(bǔ)充系統(tǒng)性能。 
      4、緩存緩存一詞搞技術(shù)的都接觸過(guò),很多地方用到緩存。網(wǎng)站架構(gòu)和網(wǎng)站開(kāi)發(fā)中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級(jí)和分布式的緩存在后面講述。架構(gòu)方面的緩存,對(duì)Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進(jìn)行緩存,這兩種方式均可以有效的提高Apache的訪問(wèn)響應(yīng)能力。網(wǎng)站程序開(kāi)發(fā)方面的緩存,Linux上提供的Memory Cache是常用的緩存接口,可以在web開(kāi)發(fā)中使用,比如用Java開(kāi)發(fā)的時(shí)候就可以調(diào)用MemoryCache對(duì)一些數(shù)據(jù)進(jìn)行緩存和通訊共享,一些大型社區(qū)使用了這樣的架構(gòu)。另外,在使用web語(yǔ)言開(kāi)發(fā)的時(shí)候,各種語(yǔ)言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。 
      5、鏡像鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò)接入商和地域帶來(lái)的用戶訪問(wèn)速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網(wǎng)站在教育網(wǎng)內(nèi)搭建鏡像站點(diǎn),數(shù)據(jù)進(jìn)行定時(shí)更新或者實(shí)時(shí)更新。在鏡像的細(xì)節(jié)技術(shù)方面,這里不闡述太深,有很多專業(yè)的現(xiàn)成的解決架構(gòu)和產(chǎn)品可選。也有廉價(jià)的通過(guò)軟件實(shí)現(xiàn)的思路,比如Linux上的rsync等工具。 
      6、負(fù)載均衡負(fù)載均衡將是大型網(wǎng)站解決高負(fù)荷訪問(wèn)和大量并發(fā)請(qǐng)求采用的終極解決辦法。負(fù)載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,我個(gè)人接觸過(guò)一些解決方法,其中有兩個(gè)架構(gòu)可以給大家做參考。 
      7、硬件四層交換第四層交換使用第三層和第四層信息包的報(bào)頭信息,根據(jù)應(yīng)用區(qū)間識(shí)別業(yè)務(wù)流,將整個(gè)區(qū)間段的業(yè)務(wù)流分配到合適的應(yīng)用服務(wù)器進(jìn)行處理?!〉谒膶咏粨Q功能就象是虛 IP,指向物理服務(wù)器。它傳輸?shù)臉I(yè)務(wù)服從的協(xié)議多種多樣,有HTTP、FTP、NFS、Telnet或其他協(xié)議。這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上,需要復(fù)雜的載量平衡算法。在IP世界,業(yè)務(wù)類型由終端TCP或UDP端口地址來(lái)決定,在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址、TCP和UDP端口共同決定。在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國(guó)當(dāng)初接近2000臺(tái)服務(wù)器使用了三四臺(tái)Alteon就搞定了。 
      8、軟件四層交換大家知道了硬件四層交換機(jī)的原理后,基于OSI模型來(lái)實(shí)現(xiàn)的軟件四層交換也就應(yīng)運(yùn)而生,這樣的解決方案實(shí)現(xiàn)的原理一致,不過(guò)性能稍差。但是滿足一定量的壓力還是游刃有余的,有人說(shuō)軟件實(shí)現(xiàn)方式其實(shí)更靈活,處理能力完全看你配置的熟悉能力。軟件四層交換我們可以使用Linux上常用的LVS來(lái)解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實(shí)時(shí)災(zāi)難應(yīng)對(duì)解決方案,提高系統(tǒng)的魯棒性,同時(shí)可供了靈活的虛擬VIP配置和管理功能,可以同時(shí)滿足多種應(yīng)用需求,這對(duì)于分布式的系統(tǒng)來(lái)說(shuō)必不可少。一個(gè)典型的使用負(fù)載均衡的策略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構(gòu)低成本、高性能還有很強(qiáng)的擴(kuò)張性,隨時(shí)往架構(gòu)里面增減節(jié)點(diǎn)都非常容易。這樣的架構(gòu)我準(zhǔn)備空了專門詳細(xì)整理一下和大家探討。對(duì)于大型網(wǎng)站來(lái)說(shuō),前面提到的每個(gè)方法可能都會(huì)被同時(shí)使用到,我這里介紹得比較淺顯,具體實(shí)現(xiàn)過(guò)程中很多細(xì)節(jié)還需要大家慢慢熟悉和體會(huì),有時(shí)一個(gè)很小的squid參數(shù)或者apache參數(shù)設(shè)置,對(duì)于系統(tǒng)性能的影響就會(huì)很大,希望大家一起討論,達(dá)到拋磚引玉之效。 

      用squid做web cache server,而apache在squid的后面提供真正的web服務(wù)。當(dāng)然使用這樣的架構(gòu)必須要保證主頁(yè)上大部分都是靜態(tài)頁(yè)面。這就需要程序員的配合將頁(yè)面在反饋給客戶端之前將頁(yè)面全部轉(zhuǎn)換成靜態(tài)頁(yè)面。 
      基本看出sina和sohu對(duì)于頻道等欄目都用了相同的技術(shù),即squid來(lái)監(jiān)聽(tīng)這些IP的80端口,而真正的web server來(lái)監(jiān)聽(tīng)另外一個(gè)端口。從用戶的感覺(jué)上來(lái)說(shuō)不會(huì)有任何的區(qū)別,而相對(duì)于將web server直接和客戶端連在一起的方式,這樣的方式明顯的節(jié)省的帶寬和服務(wù)器。用戶訪問(wèn)的速度感覺(jué)也會(huì)更快。 
      帶寬:4000M/S (參考) 
      服務(wù)器數(shù)量:60 臺(tái)左右 
      Web服務(wù)器:Lighttpd, Apache, nginx 
      應(yīng)用服務(wù)器:Tomcat 
      其他:Python, Java, MogileFS 、ImageMagick 等 
      關(guān)于 Squid 與 Tomcat 
      Squid 與 Tomcat 似乎在 Web 2.0 站點(diǎn)的架構(gòu)中較少看到。我首先是對(duì) Squid 有點(diǎn)疑問(wèn),對(duì)此阿華的解釋是"目前暫時(shí)還沒(méi)找到效率比 Squid 高的緩存系統(tǒng),原來(lái)命中率的確很差,后來(lái)在 Squid 前又裝了層 Lighttpd, 基于 url 做 hash, 同一個(gè)圖片始終會(huì)到同一臺(tái) squid 去,所以命中率徹底提高了" 對(duì)于應(yīng)用服務(wù)器層的 Tomcat,現(xiàn)在 Yupoo! 技術(shù)人員也在逐漸用其他輕量級(jí)的東西替代,而 YPWS/YPFS 現(xiàn)在已經(jīng)用 Python 進(jìn)行開(kāi)發(fā)了。 
      名次解釋: 
      · YPWS--Yupoo Web Server YPWS 是用 Python開(kāi)發(fā)的一個(gè)小型 Web 服務(wù)器,提供基本的 Web 服務(wù)外,可以增加針對(duì)用戶、圖片、外鏈網(wǎng)站顯示的邏輯判斷,可以安裝于任何有空閑資源的服務(wù)器中,遇到性能瓶頸時(shí)方便橫向擴(kuò)展。 
      · YPFS--Yupoo File System 與 YPWS 類似,YPFS 也是基于這個(gè) Web 服務(wù)器上開(kāi)發(fā)的圖片上傳服務(wù)器。 

      【Updated: 有網(wǎng)友留言質(zhì)疑 Python 的效率,Yupoo 老大劉平陽(yáng)在 del.icio.us 上寫(xiě)到 "YPWS用Python自己寫(xiě)的,每臺(tái)機(jī)器每秒可以處理294個(gè)請(qǐng)求, 現(xiàn)在壓力幾乎都在10%以下"】 
      圖片處理層 
      接下來(lái)的 Image Process Server 負(fù)責(zé)處理用戶上傳的圖片。使用的軟件包也是 ImageMagick,在上次存儲(chǔ)升級(jí)的同時(shí),對(duì)于銳化的比率也調(diào)整過(guò)了(我個(gè)人感覺(jué),效果的確好了很多)?!盡agickd“ 是圖像處理的一個(gè)遠(yuǎn)程接口服務(wù),可以安裝在任何有空閑 CPU資源的機(jī)器上,類似 Memcached的服務(wù)方式。 
      我們知道 Flickr 的縮略圖功能原來(lái)是用 ImageMagick 軟件包的,后來(lái)被雅虎收購(gòu)后出于版權(quán)原因而不用了(?);EXIF 與 IPTC Flicke 是用 Perl 抽取的,我是非常建議 Yupoo! 針對(duì) EXIF 做些文章,這也是潛在產(chǎn)生受益的一個(gè)重點(diǎn)。 
      圖片存儲(chǔ)層 
      原來(lái) Yupoo! 的存儲(chǔ)采用了磁盤陣列柜,基于 NFS 方式的,隨著數(shù)據(jù)量的增大,”Yupoo! 開(kāi)發(fā)部從07年6月份就開(kāi)始著手研究一套大容量的、能滿足 Yupoo! 今后發(fā)展需要的、安全可靠的存儲(chǔ)系統(tǒng)“,看來(lái) Yupoo! 系統(tǒng)比較有信心,也是滿懷期待的,畢竟這要支撐以 TB 計(jì)算的海量圖片的存儲(chǔ)和管理。我們知道,一張圖片除了原圖外,還有不同尺寸的,這些圖片統(tǒng)一存儲(chǔ)在 MogileFS 中。 
      對(duì)于其他部分,常見(jiàn)的 Web 2.0 網(wǎng)站必須軟件都能看到,如 MySQL、Memcached 、Lighttpd 等。Yupoo! 一方面采用不少相對(duì)比較成熟的開(kāi)源軟件,一方面也在自行開(kāi)發(fā)定制適合自己的架構(gòu)組件。這也是一個(gè) Web 2.0 公司所必需要走的一個(gè)途徑。 
      非常感謝一下 Yupoo! 阿華對(duì)于技術(shù)信息的分享,技術(shù)是共通的。下一個(gè)能爆料是哪家? 
      --EOF-- 
      lighttpd+squid這套緩存是放在另外一個(gè)機(jī)房作為cdn的一個(gè)節(jié)點(diǎn)使用的,圖中沒(méi)描繪清楚,給大家?guī)?lái)不便了。 
      squid前端用lighttpd沒(méi)用nginx,主要是用了這么久,沒(méi)出啥大問(wèn)題,所以就沒(méi)想其他的了。 
      URL Hash的擴(kuò)展性的確不好,能做的就是不輕易去增減服務(wù)器,我們目前是5臺(tái)服務(wù)器做一組hash. 
      我們現(xiàn)在用Python寫(xiě)的Web Server,在效率方面,我可以給個(gè)測(cè)試數(shù)據(jù),根據(jù)目前的訪問(wèn)日志模擬訪問(wèn)測(cè)試的結(jié)果是1臺(tái)ypws,平均每秒處理294個(gè)請(qǐng)求(加載所有的邏輯判斷)。 
      在可靠性上,還不沒(méi)具體的數(shù)據(jù),目前運(yùn)行1個(gè)多月還沒(méi)有任何異常。 
      lvs每個(gè)節(jié)點(diǎn)上都裝nginx,主要是為了反向代理及處理靜態(tài)內(nèi)容,不過(guò)apache已顯得不是那么必需,準(zhǔn)備逐漸去掉。 
      我們處理圖片都是即時(shí)的,我們目前半數(shù)以上的服務(wù)器都裝了magickd服務(wù),用來(lái)分擔(dān)圖片處理請(qǐng)求。 
      每天數(shù)以千萬(wàn)計(jì)的 Blog 內(nèi)容中,實(shí)時(shí)的熱點(diǎn)是什么? Tailrank 這個(gè) Web 2.0 Startup 致力于回答這個(gè)問(wèn)題。 
      專門爆料網(wǎng)站架構(gòu)的 Todd Hoff 對(duì) Kevin Burton 進(jìn)行了采訪。于是我們能了解一下 Tailrank 架構(gòu)的一些信息。每小時(shí)索引 2400 萬(wàn)的 Blog 與 Feed,內(nèi)容處理能力為 160-200Mbps,IO 寫(xiě)入大約在10-15MBps。每個(gè)月要處理 52T 之多的原始數(shù)據(jù)。Tailrank 所用的爬蟲(chóng)現(xiàn)在已經(jīng)成為一個(gè)獨(dú)立產(chǎn)品:spinn3r。 
      服務(wù)器硬件 
      目前大約 15 臺(tái)服務(wù)器,CPU 是 64 位的 Opteron。每臺(tái)主機(jī)上掛兩個(gè) SATA 盤,做 RAID 0。據(jù)我所知,國(guó)內(nèi)很多 Web 2.0 公司也用的是類似的方式,SATA 盤容量達(dá),低廉價(jià)格,堪稱不二之選。操作系統(tǒng)用的是 Debian Linux 。Web 服務(wù)器用 Apache 2.0,Squid 做反向代理服務(wù)器。 
      數(shù)據(jù)庫(kù) 
      Tailrank 用 MySQL 數(shù)據(jù)庫(kù),聯(lián)邦數(shù)據(jù)庫(kù)形式。存儲(chǔ)引擎用 InnoDB, 數(shù)據(jù)量 500GB。Kevin Burton 也指出了 MySQL 5 在修了一些 多核模式下互斥鎖的問(wèn)題(This Bug?)。到數(shù)據(jù)庫(kù)的JDBC 驅(qū)動(dòng)連接池用 lbpool 做負(fù)載均衡。MySQL Slave 或者 Master的復(fù)制用 MySQLSlaveSync 來(lái)輕松完成。不過(guò)即使這樣,還要花費(fèi) 20% 的時(shí)間來(lái)折騰 DB。 
      其他開(kāi)放的軟件 
      任何一套系統(tǒng)都離不開(kāi)合適的 Profiling 工具,Tailrank 也不利外,針對(duì) Java 程序的 Benchmark 用 Benchmark4j。Log 工具用 Log5j(不是 Log4j)。Tailrank 所用的大部分工具都是開(kāi)放的。 
      Tailrank 的一個(gè)比較大的競(jìng)爭(zhēng)對(duì)手是 Techmeme,雖然二者暫時(shí)看面向內(nèi)容的側(cè)重點(diǎn)有所不同。其實(shí),最大的對(duì)手還是自己,當(dāng)需要挖掘的信息量越來(lái)越大,如果精準(zhǔn)并及時(shí)的呈現(xiàn)給用戶內(nèi)容的成本會(huì)越來(lái)越高。從現(xiàn)在來(lái)看,Tailrank 離預(yù)期目標(biāo)還差的很遠(yuǎn)。期待羅馬早日建成。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多