大型互聯(lián)網(wǎng)網(wǎng)站架構(gòu)心得_好事客【轉(zhuǎn)】-為您提供91人妻人人澡人人爽人人精品_aⅴ天堂一區(qū)二區(qū)三區(qū)公司
大家都知道,網(wǎng)址導(dǎo)航站是為了方便用戶快速查找資訊用的,因此,網(wǎng)址導(dǎo)航站的界面布局非常關(guān)鍵。對于一個(gè)大型網(wǎng)站來說,可伸縮性是非常重要的,怎么樣在縱向和橫向有良好的可伸縮性,就需要在做架構(gòu)設(shè)計(jì)的時(shí)候考慮到一個(gè)分的原則。下面好事客將向大家分享“大型互聯(lián)網(wǎng)網(wǎng)站架構(gòu)心得”。
首先是橫向的分:
1.大的網(wǎng)站化解為多個(gè)小網(wǎng)站:當(dāng)我們一個(gè)網(wǎng)站有多個(gè)功能的時(shí)候,可以考慮把這個(gè)網(wǎng)站拆分成幾個(gè)小模塊,每一個(gè)模塊可以是一個(gè)網(wǎng)站,這樣的話我們到時(shí)候就可以很靈活地去把這些網(wǎng)站部署到不同的服務(wù)器上。
2.靜態(tài)動態(tài)分離:靜態(tài)文件和動態(tài)文件分離開成2個(gè)網(wǎng)站,我們知道靜態(tài)網(wǎng)站和動態(tài)網(wǎng)站對服務(wù)器來說壓力的側(cè)重不同,前者可能重io后者重cpu,那么我們在選擇硬件的時(shí)候也可以有側(cè)重,而且靜態(tài)和動態(tài)內(nèi)容的緩存策略也不一樣。典型的應(yīng)用,我們一般會有獨(dú)立的文件或圖片服務(wù)器。
3.按照功能來分:比如有一個(gè)模塊是負(fù)責(zé)上傳的,上傳操作很消耗時(shí)間,如果和其它應(yīng)用混在一起的話很可能,一點(diǎn)點(diǎn)訪問就會使服務(wù)器癱瘓,這種特殊的模塊應(yīng)該分開。安全的不安全的也要分開,還需要考慮到以后ssl的購買。
4.我們不一定要全部用自己的服務(wù)器,搜索、報(bào)表可以依靠別人的服務(wù),比如google的搜索和報(bào)表服務(wù),自己做的不一定比得過別人,服務(wù)器帶寬都省了。
其次是縱向的分:
1.文件也相當(dāng)于數(shù)據(jù)庫,io的流量可能比數(shù)據(jù)庫還大,這也算是縱向級別的訪問,上傳的文件圖片一定要和web服務(wù)器分開。當(dāng)然,數(shù)據(jù)庫和網(wǎng)站都放在一個(gè)服務(wù)器上的很少了,這是Zui基本的。
2.對于涉及到數(shù)據(jù)庫訪問的動態(tài)程序來說,我們可以使用一個(gè)中間層(所謂的應(yīng)用層或邏輯層)來訪問數(shù)據(jù)庫(部署在獨(dú)立的服務(wù)器上),Zui大的好處就是緩存和靈活性。緩存的內(nèi)存占用比較大,我們要把它和網(wǎng)站進(jìn)程分開,而且這樣做我們可以很方便的去改變一些數(shù)據(jù)訪問的策略,即使到時(shí)候數(shù)據(jù)庫有分布的話在這里可以做一個(gè)調(diào)配工作,這樣靈活性就很大了。還有好處是中間層可以做電線網(wǎng)通橋梁,可能網(wǎng)通訪問雙線再訪問電信會比網(wǎng)通直接訪問電信服務(wù)器快。
有人說我不分,我可以做負(fù)載均衡,對,是可以的,但是如果分的話,同樣的10臺機(jī)器肯定比不分10臺機(jī)器可以承受更多的訪問量,而且對硬件的需求可能不會很高,因?yàn)橹佬枰膫€(gè)硬件特別好。爭取讓每一個(gè)服務(wù)期都不空閑,又都不是太忙,合理進(jìn)行組合調(diào)整和擴(kuò)充,這樣的系統(tǒng)伸縮性就高了,能根據(jù)訪問量來調(diào)整的前提就是之前有考慮到分,分的好處是靈活性、伸縮性、隔離性以及安全性。
對服務(wù)器來說,我們有幾點(diǎn)是要長期觀察的,任何一點(diǎn)都可能是瓶頸:
1.cpu:動態(tài)文件的解析需要比較多的cpu,cpu出現(xiàn)瓶頸就要看是不是哪個(gè)功能過長時(shí)間占用線程,如果是就分出去。或者就是每一個(gè)請求處理時(shí)間不長,但是訪問量很高,那么就加服務(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)用可以靠隊(duì)列來降低突發(fā)的并發(fā)。
4.網(wǎng)絡(luò):我們知道,網(wǎng)絡(luò)的通訊是比較慢的,比磁盤還慢,如果是做分布式緩存,分布式計(jì)算的話,要考慮到物理服務(wù)器之間網(wǎng)絡(luò)通訊的時(shí)間,當(dāng)然,在流量大了以后,這可以提高系統(tǒng)的接納能力一個(gè)等級。靜態(tài)內(nèi)容可以借助csd分擔(dān)一部分,在做服務(wù)器假設(shè)的時(shí)候還要考慮中國特色的電信網(wǎng)通情況以及防火墻。
對sql server數(shù)據(jù)庫服務(wù)器來說[update]:
其實(shí)還是水平分割和縱向分割,一個(gè)二維表,水平分割就是橫過來切一刀,縱向分割就是豎直切一刀:
1、縱向分割就是,我們不同的應(yīng)用可以分到不同的db中,不同的實(shí)例中,或者說把某個(gè)擁有很多字段的表拆分成小表。
2、橫向分割就是,某些應(yīng)用可能不負(fù)載,比如用戶注冊,但是用戶表會非常大,可以把大表分開??梢圆捎帽矸謪^(qū),數(shù)據(jù)存儲在不同文件上,然后再部署到獨(dú)立物理服務(wù)器增加io吞吐以改善讀寫性能,土一點(diǎn)的做法就是自己定期把老的數(shù)據(jù)存檔。表分區(qū)的另外一個(gè)優(yōu)勢可以增加數(shù)據(jù)查詢速度,因?yàn)槲覀兊捻撍饕梢杂卸鄬恿?,就像一個(gè)文件夾中的文件不要太多,多分幾層文件夾一樣。
3、還可以通過數(shù)據(jù)庫鏡像、復(fù)制訂閱、事物日志,把讀寫分開到不同的鏡像物理數(shù)據(jù)庫上,一般來說夠用,如果還不行可以用硬件來實(shí)現(xiàn)數(shù)據(jù)庫的負(fù)載均衡。當(dāng)然,對于bi,我們可能還會有數(shù)據(jù)倉庫。
希望好事客分享的信息對大家有用,好事客也希望能和大家共同探討。歡迎留言!
好事客導(dǎo)航官網(wǎng):https://www.72dh.com/
好事客交流群
好事客官方微博:https://weibo.com/hsk8899