| 網(wǎng)站首頁(yè) | 關(guān)于我們 | 開發(fā)優(yōu)勢(shì) | 產(chǎn)品展示 |
| 合作企業(yè) | 新聞動(dòng)態(tài) | 聯(lián)系我們 | 電話聯(lián)系 |
文章作者:濟(jì)南軟件開發(fā) 時(shí)間:2016年11月08日
濟(jì)南軟件開發(fā)向您介紹,怎樣搭建合適的網(wǎng)站框架:
1、數(shù)據(jù)層放棄SQL Server數(shù)據(jù)庫(kù)和存儲(chǔ)過(guò)程,全部遷移到Linux平臺(tái)上的MySQL數(shù)據(jù)庫(kù)上;
2、緩存不再依賴.net自身提供的緩存機(jī)制,遷移到部署在Linux平臺(tái)上的分布式的Redis上;
3、服務(wù)之間的調(diào)用,避免使用.net自身專有協(xié)議,改成Restful的HTTP Web API調(diào)用;
4、靜態(tài)資源請(qǐng)求,不再讓IIS自己處理,分離到Linux平臺(tái)上的nginx去處理;
5、需要讀取的文件系統(tǒng),也改成訪問(wèn)Linux平臺(tái)上的分布式文件系統(tǒng);
6、部署.net代碼的Windows服務(wù)器放在LVS后面,用LVS做負(fù)載均衡和故障切換;
簡(jiǎn)單說(shuō)來(lái),就是單純讓.net做應(yīng)用層的編程語(yǔ)言和框架,其他都交給Linux平臺(tái)的開源解決方案。而.net框架單純做應(yīng)用層,無(wú)論ASP.net MVC的開發(fā)效率,還是.net CLR虛擬機(jī)的運(yùn)行效率都非常好,目前我們單臺(tái)Windows服務(wù)器上跑幾百萬(wàn)的動(dòng)態(tài)請(qǐng)求毫無(wú)壓力,而且應(yīng)用層架構(gòu)是可以橫向擴(kuò)展的:如果請(qǐng)求負(fù)載非常高,只需要添加更多Windows服務(wù)器即可。總之,做到了揚(yáng)長(zhǎng)避短。
我們濟(jì)南軟件開發(fā)還有熟悉大型互聯(lián)網(wǎng)技術(shù)架構(gòu)的人應(yīng)該很容易的發(fā)現(xiàn),這個(gè)重構(gòu)過(guò)程其實(shí)就是一個(gè)“讓合適的東西干合適的事情”這樣一項(xiàng)工作:
1、把過(guò)多業(yè)務(wù)邏輯寫到存儲(chǔ)過(guò)程中必然導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器壓力的增大,而且不利于負(fù)載均衡,因此去“存儲(chǔ)過(guò)程”是必要的;
2、SQLServer實(shí)現(xiàn)集群的能力很差,用MYSQL之類的數(shù)據(jù)庫(kù)是一個(gè)不錯(cuò)的選擇;
3、緩存還是用.Net內(nèi)置的InProc緩存機(jī)制對(duì)于高并發(fā)的網(wǎng)站來(lái)講是一個(gè)災(zāi)難,用Redis之類分布式緩存來(lái)代替是必然的過(guò)程;
4、使用.Net Remoting之類的私有協(xié)議不利于異構(gòu)系統(tǒng)集成,改成webservice、REST也是必須的;
5、靜態(tài)文件的請(qǐng)求也經(jīng)過(guò)IIS有點(diǎn)太勞煩IIS了,扔給nginx才更合適;
6、Windows服務(wù)器的文件系統(tǒng)很不靈活,換成更加靈活的Linux下的分布式文件系統(tǒng)是聰明的;
7、采用LVS、nginx之類做負(fù)載均衡也是最合適的。
其實(shí)任何一個(gè)大型互聯(lián)網(wǎng)基本都是這樣一個(gè)架構(gòu):前端使用nginx等做負(fù)載均衡,使用Redis、memcached等做分布式緩存,使用數(shù)據(jù)庫(kù)集群進(jìn)行讀寫分離之類的優(yōu)化,使用分布式文件系統(tǒng)處理圖片等靜態(tài)文件。 請(qǐng)問(wèn),使用PHP、Java等做web服務(wù)器開發(fā)的大型互聯(lián)網(wǎng),哪個(gè)使用JSP內(nèi)置的Session對(duì)象做Session的,不都要換用redis嗎?哪個(gè)把圖片和php放到一個(gè)服務(wù)器的,不都放到文件服務(wù)器中嗎?哪個(gè)一個(gè)apache服務(wù)器就可以扛起來(lái)的,不都是nginx之類的擋在前面做負(fù)載均衡的嗎? 怎么不說(shuō)“去php化”、“去java化”呢?要知道redis、memcached、ngix之類的可都不是java、php寫的呀,一個(gè)java項(xiàng)目竟然用其他語(yǔ)言寫的東西,難道不丟面子?
我們濟(jì)南軟件開發(fā)認(rèn)為,其實(shí)一個(gè)大型的系統(tǒng)中,根據(jù)項(xiàng)目的不同特點(diǎn)來(lái)組合搭配不同的產(chǎn)品、組件是一個(gè)必然的過(guò)程,去了解一下這些系統(tǒng)中“混搭”是常見的現(xiàn)象。單一產(chǎn)品中提供能的功能只能滿足普通項(xiàng)目的需求,要想滿足復(fù)雜的項(xiàng)目,必須把這些產(chǎn)品中提供的一些傻瓜化的簡(jiǎn)單組件用更專業(yè)的組件來(lái)替換,就像做小項(xiàng)目php中的Session足夠了,但是大項(xiàng)目必須用c/c++開發(fā)的memcached來(lái)替換。
想要了解更多詳情歡迎來(lái)電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。