400-638-8808
|
微信公眾號(hào)








穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無(wú)阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

當(dāng)Web Application(以下簡(jiǎn)稱WebApp)大量取代傳統(tǒng)桌面應(yīng)用程式,資訊服務(wù)類型的軟體公司,需要解決的「重復(fù)與浪費(fèi)」問(wèn)題,就不只有軟體架構(gòu)本身;相信大家都清楚軟體架構(gòu)本身,需要模組化、元件化,讓寫好的功能(程式碼)可以盡可能再利用,最好有很多Plugins或Modules,當(dāng)有需要的時(shí)候就可以拿來(lái)使用或擴(kuò)充。
資訊服務(wù)公司通常不會(huì)只有一或少數(shù)幾項(xiàng)軟體專案,而是會(huì)建立非常多系統(tǒng)。因此,重復(fù)造成的浪費(fèi)問(wèn)題就更加嚴(yán)重。
一般來(lái)說(shuō),經(jīng)過(guò)編譯的程式或者原始碼本身,都不太會(huì)有體積的問(wèn)題。例如封裝成.dll或.jar之后,就可以再不同專案中引用。搭配好的自動(dòng)化建置機(jī)制,通常我們不需要將外部共用的模組(或元件),放到專案的版本控制系統(tǒng),只有進(jìn)行測(cè)試或最后發(fā)布時(shí),才需要把這些檔案暫時(shí)加進(jìn)來(lái)。
但是WebApp包含的內(nèi)容并不只有程式,還有許多比較像是「資源」的東西。例如:
jQuery core + jQuery UI + .... 一大票 jQuery Plugins
Ext JS + 一大票 Widgets ...
ICON library + ... 一大票圖庫(kù)
自行開發(fā)維護(hù)的JavaScript、CSS、ICON 共用libraries 等
如果沒(méi)有好的解決辦法,這些資源除了被重復(fù)發(fā)布到很多網(wǎng)站伺服器,造成儲(chǔ)存空間及頻寬的浪費(fèi),甚至也會(huì)被加到專案版本控制系統(tǒng)的repository。
舉例來(lái)說(shuō),Ext JS 4 的原始碼ext-4.0.7-gpl 解壓縮后體積高達(dá)166MB,為了某些情況除錯(cuò)方便,我們可能不會(huì)只保留必要及壓縮最佳化的檔案,而是需要完整的檔案。除非使用的Framework 有良好的Plugins 機(jī)制,可以引用Ext JS 但不會(huì)實(shí)際被加到專案資料夾(只有在建置test 或production 階段才會(huì)加入暫存的區(qū)域);否則,一般來(lái)說(shuō)都是直接在WebApp 的資料夾中,也保存一份完整的副本。
相信有很大一部份比例的專案,都是直接就把這些資源加到專案的repository,一起發(fā)布到版本控制系統(tǒng);這是最簡(jiǎn)便的方式,可是也是最浪費(fèi)資源。這么做會(huì)帶來(lái)一些問(wèn)題:
不屬于專案的東西,卻要納入專案的版本控管。占空間(雖然現(xiàn)在硬碟很便宜,這問(wèn)題顯得不大)、維護(hù)麻煩。
專案的repository 變得十分肥大,真正屬于專案的部份也許不到30MB,但整體卻超過(guò)100MB。對(duì)于版本較舊的SVN 來(lái)說(shuō),執(zhí)行速度可能隨檔案愈多愈復(fù)雜而變得愈慢。
不管是新加入的成員,或經(jīng)歷一次災(zāi)難后需要重新取出(checkout)完整的檔案,浪費(fèi)伺服器資源及網(wǎng)絡(luò)頻寬,最重要的寶貴時(shí)間也會(huì)因此白白浪費(fèi)。
假設(shè)一家資訊服務(wù)公司有20 個(gè)系統(tǒng),就造成資源20 倍浪費(fèi)。
對(duì)于導(dǎo)入持續(xù)整合機(jī)制的專案來(lái)說(shuō),又造成更多的浪費(fèi)。
像是GitHub 等專案托管服務(wù),有檔案容量的限制,占空間就是個(gè)需要考慮的問(wèn)題。
即使在開發(fā)階段,解決資源重復(fù)造成的浪費(fèi)問(wèn)題,例如可以不必將外部資源納入版本控管;但是最終打包發(fā)布時(shí),放到正式的伺服器運(yùn)作,還是需要加入這些檔案(可以透過(guò)最佳化讓檔案少一些、體積小一些),最終,浪費(fèi)的問(wèn)題還是存在。
對(duì)于資訊服務(wù)公司來(lái)說(shuō),建置私有CDN 不僅可以得到很多好處,而且在云端服務(wù)價(jià)格低廉的時(shí)代,更是很難找到理由不這么做。
CDN(內(nèi)容傳遞網(wǎng)路,content delivery network)的概念,是指一種透過(guò)網(wǎng)際網(wǎng)路互相連接的電腦網(wǎng)路系統(tǒng),提供高效能、可擴(kuò)展性、及低成本的網(wǎng)路將內(nèi)容傳遞給使用者。
簡(jiǎn)單地說(shuō),我們可以建置遠(yuǎn)端的檔案服務(wù)伺服器,將WebApp 專案常需要用到的靜態(tài)資源,都放到這些伺服器,讓這些伺服器維持高可用性、擴(kuò)展性,提供足夠的負(fù)載量;如此一來(lái),所有的專案共用的WebApp 資源,就可以布署到這些服務(wù)器。
建立CDN 的優(yōu)點(diǎn)很多,包括開發(fā)人員可以快速利用(不必每次都要重新下載、建立library),減少遠(yuǎn)端布署需要的時(shí)間,讓不同專案之間可以共用資源,降低正式伺服器的存取及頻寬消耗,幫助需要高負(fù)載的WebApp 減輕負(fù)擔(dān),...
事實(shí)上,Google就建立了自己的CDN,提供包含jQuery、jQuery UI、Prototype等網(wǎng)站常用到的資源,并且也把這個(gè)CDN免費(fèi)開放給所有開發(fā)者使用。
不過(guò),免費(fèi)的CDN 通常不會(huì)剛好有你需要的所有東西;以Ext JS 來(lái)說(shuō),Google 僅提供核心部份Ext Core,而Sencha 雖然也有為Ext JS GPL 架設(shè)CDN,但實(shí)測(cè)后發(fā)現(xiàn)經(jīng)常有找不到檔案的情況。
對(duì)資訊服務(wù)公司來(lái)說(shuō),用其他人提供的CDN 并不是個(gè)好辦法,因?yàn)槟奶煸揅DN 結(jié)束運(yùn)作,或者已經(jīng)不提供某個(gè)版本的資源,就會(huì)造成一些系統(tǒng)因此受連累而掛點(diǎn)。所以,建置私有CDN 是比較好的方案。
一般來(lái)說(shuō),自己租用專線架設(shè)伺服器來(lái)做CDN 并不劃算,光是要達(dá)到資料及網(wǎng)路的備援,以及高可用性(要預(yù)防斷電斷網(wǎng)路天災(zāi)人禍等問(wèn)題),要付出的成本實(shí)在太高。
使用虛擬主機(jī)(Virtual Host 或VPN)是個(gè)相對(duì)便宜的方法,但是一般的虛擬主機(jī)都有容量、頻寬流量限制,以及不管有沒(méi)有用到它,都需要付基本的月租費(fèi)。
所以,本文介紹的方案,是采用Amazon S3(Simple Storage Service)及CloudFront。
Amazon S3 的主要優(yōu)點(diǎn),包括它是采「使用量付費(fèi)」,計(jì)費(fèi)內(nèi)容包括儲(chǔ)存空間、存取次數(shù)、傳輸量三項(xiàng)。因此若剛開始只需要放500MB 的檔案,就只需要為這有用到的儲(chǔ)存空間及傳輸量付費(fèi),注冊(cè)S3 服務(wù)并不需要設(shè)定容量,即使未來(lái)可能成長(zhǎng)到幾TB 的容量,也不需要一開始就租賃旗艦級(jí)的方案,同時(shí)也不會(huì)有每月傳輸量限制的問(wèn)題。
使用S3 建立CDN 的步驟很簡(jiǎn)單:
建立S3 Bucket(儲(chǔ)存空間),并將名稱設(shè)為CDN 網(wǎng)址(如:cdn.yourname.com)
修改DNS 設(shè)定,將網(wǎng)址透過(guò)CNAME 指向Bucket 的End Point 網(wǎng)址
設(shè)定Bucket 的Web Site 為Enabled
將要放到CDN 的檔案如Ext JS 等,上傳至Bucket,并設(shè)為Public
對(duì)于Mac及Linux的使用者來(lái)說(shuō),可以用s3cmd工具來(lái)管理檔案,這個(gè)軟體可以在command line下輕松將本地檔案,上傳或同步到指定的S3位址。
除了在建立CDN 時(shí)可以用s3cmd,如果遇到客戶因預(yù)算或速度考量,需要把專案整個(gè)搬遷到企業(yè)內(nèi)部網(wǎng)絡(luò)可以直接存取的服務(wù)器,也可以利用s3cmd 做一份mirror,維持專案使用到的資源有一致的存取配置。
如果開發(fā)的WebApp 是需要提供給大眾使用,甚至有來(lái)自世界各地的使用者,使用S3 可以方便地搭配CloudFront 建置全球化的CDN。
CloudFront 不能儲(chǔ)存檔案,它是用來(lái)「?jìng)鬟f」S3 或其他來(lái)源的檔案,透過(guò)分散在世界各地的資料中心(S3 的Bucket),減少網(wǎng)路傳遞路徑的延遲。簡(jiǎn)單地說(shuō),CloudFront 可以讓S3 的檔案下載速度更快,而且傳輸費(fèi)用也比S3 便宜(包括傳輸費(fèi)用+存取次數(shù))。
<上一篇 :什么是云端運(yùn)算服務(wù)?
下一篇 :什么是SSH密鑰以及SSH密鑰好處?
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國(guó)服務(wù)器 韓國(guó)服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國(guó)云主機(jī) 韓國(guó)云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國(guó)云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無(wú)限防御 SSL證書 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠(chéng)聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊(cè) 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國(guó)服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營(yíng))聯(lián)合版權(quán)
深圳總部:中國(guó).深圳市南山區(qū)深圳國(guó)際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊(cè)業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品