日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

大型互聯(lián)網(wǎng)網(wǎng)站架構(gòu)心得之一

 cppmonkey 2008-09-19
我們知道,對于一個大型網(wǎng)站來說,可伸縮性是非常重要的,怎么樣在縱向和橫向有良好的可伸縮性,就需要在做架構(gòu)設(shè)計的時候考慮到一個分的原則,我想在多個方面說一下怎么分:

首先是橫向的分: 1. 大的網(wǎng)站化解為多個小網(wǎng)站:當(dāng)我們一個網(wǎng)站有多個功能的時候,可以考慮把這個網(wǎng)站拆分成幾個小模塊,每一個模塊可以是一個網(wǎng)站,這樣的話我們到時候就可以很靈活地去把這些網(wǎng)站部署到不同的服務(wù)器上。 2. 靜態(tài)動態(tài)分離:靜態(tài)文件和動態(tài)文件最好分離開成2個網(wǎng)站,我們知道靜態(tài)網(wǎng)站和動態(tài)網(wǎng)站對服務(wù)器來說壓力的側(cè)重不同,前者可能重IO后者重CPU,那么我們在選擇硬件的時候也可以有側(cè)重,而且靜態(tài)和動態(tài)內(nèi)容的緩存策略也不一樣。典型的應(yīng)用,我們一般會有獨(dú)立的文件或圖片服務(wù)器。 3. 按照功能來分:比如有一個模塊是負(fù)責(zé)上傳的,上傳操作很消耗時間,如果和其它應(yīng)用混在一起的話很可能,一點點訪問就會使服務(wù)器癱瘓,這種特殊的模塊應(yīng)該分開。安全的不安全的也要分開,還需要考慮到以后SSL的購買。 4. 我們不一定要全部用自己的服務(wù)器,搜索、報表可以依靠別人的服務(wù),比如google的搜索和報表服務(wù),自己做的不一定比得過別人,服務(wù)器帶寬都省了。 其次是縱向的分: 1. 文件也相當(dāng)于數(shù)據(jù)庫,IO的流量可能比數(shù)據(jù)庫還大,這也算是縱向級別的訪問,上傳的文件圖片一定要和WEB服務(wù)器分開。當(dāng)然,數(shù)據(jù)庫和網(wǎng)站都放在一個服務(wù)器上的很少了,這是最基本的。 2. 對于涉及到數(shù)據(jù)庫訪問的動態(tài)程序來說,我們可以使用一個中間層(所謂的應(yīng)用層或邏輯層)來訪問數(shù)據(jù)庫(部署在獨(dú)立的服務(wù)器上),最大的好處就是緩存和靈活性。緩存的內(nèi)存占用比較大,我們要把它和網(wǎng)站進(jìn)程分開,而且這樣做我們可以很方便的去改變一些數(shù)據(jù)訪問的策略,即使到時候數(shù)據(jù)庫有分布的話在這里可以做一個調(diào)配工作,這樣靈活性就很大了。還有好處是中間層可以做電線網(wǎng)通橋梁,可能網(wǎng)通訪問雙線再訪問電信會比網(wǎng)通直接訪問電信服務(wù)器快。 有人說我不分,我可以做負(fù)載均衡,對,是可以的,但是如果分的話,同樣的10臺機(jī)器肯定比不分10臺機(jī)器可以承受更多的訪問量,而且對硬件的需求可能不會很高,因為知道需要哪個硬件特別好。爭取讓每一個服務(wù)期都不空閑,又都不是太忙,合理進(jìn)行組合調(diào)整和擴(kuò)充,這樣的系統(tǒng)伸縮性就高了,能根據(jù)訪問量來調(diào)整的前提就是之前有考慮到分,分的好處是靈活性、伸縮性、隔離性以及安全性。

對服務(wù)器來說,我們有幾點是要長期觀察的,任何一點都可能是瓶頸: 1. CPU:動態(tài)文件的解析需要比較多的CPU,CPU出現(xiàn)瓶頸就要看是不是哪個功能過長時間占用線程,如果是就分出去?;蛘呔褪敲恳粋€請求處理時間不長,但是訪問量很高,那么就加服務(wù)器。CPU是好東西,不能讓他干等,不做事情。 2. 內(nèi)存:緩存從IIS進(jìn)程獨(dú)立出去,一般對WEB服務(wù)器來說內(nèi)存不夠的情況不是很多。內(nèi)存比磁盤快,要合理利用。 3. 磁盤IO:用性能監(jiān)視器找到哪些文件IO特別大,找到了就分到獨(dú)立的一組文件服務(wù)器上去,或者直接做CDN。磁盤慢,大規(guī)模讀取數(shù)據(jù)的應(yīng)用靠緩存,大規(guī)模寫入數(shù)據(jù)的應(yīng)用可以靠隊列來降低突發(fā)的并發(fā)。 4. 網(wǎng)絡(luò):我們知道,網(wǎng)絡(luò)的通訊是比較慢的,比磁盤還慢,如果是做分布式緩存,分布式計算的話,要考慮到物理服務(wù)器之間網(wǎng)絡(luò)通訊的時間,當(dāng)然,在流量大了以后,這可以提高系統(tǒng)的接納能力一個等級。靜態(tài)內(nèi)容可以借助CSD分擔(dān)一部分,在做服務(wù)器假設(shè)的時候還要考慮中國特色的電信網(wǎng)通情況以及防火墻。 對SQL SERVER數(shù)據(jù)庫服務(wù)器來說[UPDATE]: 其實還是水平分割和縱向分割,一個二維表,水平分割就是橫過來切一刀,縱向分割就是豎直切一刀: 1、縱向分割就是,我們不同的應(yīng)用可以分到不同的DB中,不同的實例中,或者說把某個擁有很多字段的表拆分成小表。 2、橫向分割就是,某些應(yīng)用可能不負(fù)載,比如用戶注冊,但是用戶表會非常大,可以把大表分開??梢圆捎帽矸謪^(qū),數(shù)據(jù)存儲在不同文件上,然后再部署到獨(dú)立物理服務(wù)器增加IO吞吐以改善讀寫性能,土一點的做法就是自己定期把老的數(shù)據(jù)存檔。表分區(qū)的另外一個優(yōu)勢可以增加數(shù)據(jù)查詢速度,因為我們的頁索引可以有多層了,就像一個文件夾中的文件不要太多,多分幾層文件夾一樣。 3、還可以通過數(shù)據(jù)庫鏡像、復(fù)制訂閱、事物日志,把讀寫分開到不同的鏡像物理數(shù)據(jù)庫上,一般來說夠用,如果還不行可以用硬件來實現(xiàn)數(shù)據(jù)庫的負(fù)載均衡。當(dāng)然,對于BI,我們可能還會有數(shù)據(jù)倉庫。 架構(gòu)上考慮到了這些之后,流量大了,就可以在這個的基礎(chǔ)上再去調(diào)整或者做WEB服務(wù)器或者應(yīng)用服務(wù)器的負(fù)載均衡。很多時候我們都是在重復(fù)發(fā)現(xiàn)問題-》找到瓶頸-》解決這個過程。 典型的架構(gòu)如下: 動態(tài)WEB服務(wù)器配好點的CPU,靜態(tài)WEB服務(wù)器和文件服務(wù)器磁盤好點應(yīng)用服務(wù)器內(nèi)存大點,緩存服務(wù)器也是,數(shù)據(jù)庫服務(wù)器當(dāng)然內(nèi)存和CPU都要好 請大家討論。。。。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多