為什么要把web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行在不同機(jī)器上?
一、為什么要把web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行在不同機(jī)器上
硬件故障
基本上現(xiàn)在大型的軟件都是搞分布式部署、分布式計(jì)算,生產(chǎn)環(huán)境最忌諱的就是單點(diǎn)故障,所以現(xiàn)在云計(jì)算、虛擬化得以大行其道,哪怕是一個(gè)簡(jiǎn)單的計(jì)算微服務(wù),也應(yīng)該最少要有2份以上的副本,而且較好是要求這些副本不同機(jī)器、不同機(jī)架甚至是不同的數(shù)據(jù)中心,這樣在發(fā)生意外時(shí)另外有效的副本可以馬上接上繼續(xù)工作,一個(gè)簡(jiǎn)單的服務(wù)尚且如此,更何況是重量級(jí)的web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,部署在同一臺(tái)物理機(jī)器上是及其不合理的
軟件定位
每個(gè)軟件的專注的功能不同,必然導(dǎo)致它們對(duì)各種軟硬件資源的利用效率不一樣。web服務(wù)器主要是用來處理網(wǎng)絡(luò)連接和資源請(qǐng)求的,因此要求就是高帶寬,高并發(fā),對(duì)CPU的要求其實(shí)不高,對(duì)內(nèi)存的要求高,因?yàn)樵谶@一層面需要緩存大量的信息以及線程池來追求速度,對(duì)磁盤IO要求不高,因此可以專門優(yōu)化為大內(nèi)存的多核服務(wù)器,結(jié)合具體使用的服務(wù)器(如Apache、Tomcat、Nginx等)做極致的優(yōu)化,然而為web服務(wù)器所做的優(yōu)化顯然不適合數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器的主要職責(zé)是處理SQL語句,管理磁盤上存儲(chǔ)的數(shù)據(jù),要求大量的磁盤IO,對(duì)緩沖池要求極高,拿MySQL的Innodb引擎來講,基本上較好內(nèi)存的80%都分配給innodb_buffer_pool_size,用來緩存索引信息,磁盤臟頁(yè),臨時(shí)表等,但是并發(fā)程度是遠(yuǎn)遠(yuǎn)低于web服務(wù)器的,比如對(duì)于一個(gè)秒殺系統(tǒng)而言,如果web服務(wù)器在1秒內(nèi)收到了100萬請(qǐng)求需要處理,而庫(kù)存只有1萬個(gè),這時(shí)會(huì)落到數(shù)據(jù)庫(kù)的請(qǐng)求就是非常多1萬個(gè),當(dāng)然,生產(chǎn)環(huán)境中甚至不應(yīng)該使用數(shù)據(jù)庫(kù)來查這些實(shí)時(shí)數(shù)據(jù)。總結(jié),web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器定位不同,優(yōu)化點(diǎn)也不同,強(qiáng)行放一起會(huì)嚴(yán)重影響兩者的性能
安全
一般企業(yè)的數(shù)據(jù)庫(kù)都是部署在內(nèi)網(wǎng),端口不會(huì)開放的,以防止黑客攻擊,只能通過內(nèi)網(wǎng)跳板機(jī)去訪問,由專業(yè)的DBA管理,而web服務(wù)器是開放的,容易造成誤操作或者被攻擊導(dǎo)致數(shù)據(jù)損壞什么的
延伸閱讀:
二、MongoDB是什么
非關(guān)系型數(shù)據(jù)庫(kù)(nosql ),屬于文檔型數(shù)據(jù)庫(kù)。MongoDB采用類JSON的documents來存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。
MongoDB采用動(dòng)態(tài)數(shù)據(jù)模型schema,這意味著不需要預(yù)先定義表的數(shù)據(jù)類型和字段名。當(dāng)MongoDB需要更新文檔documents的時(shí)候,可以輕松增加新的字段名或者刪除舊的字段。MongoDB讓數(shù)據(jù)結(jié)構(gòu)更加層級(jí)化,因而存儲(chǔ)數(shù)組等復(fù)雜數(shù)據(jù)結(jié)構(gòu)。 在同一個(gè)集合collection中,文檔document對(duì)字段也沒有強(qiáng)約束,因此更容易設(shè)計(jì)差異化的數(shù)據(jù)結(jié)構(gòu)。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
APP是怎樣獲取和上傳數(shù)據(jù)到云端數(shù)據(jù)庫(kù)的?
一、APP是怎樣獲取和上傳數(shù)據(jù)到云端數(shù)據(jù)庫(kù)的首先pc端的情況,現(xiàn)在一般都是BS架構(gòu)的系統(tǒng),所以肯定存在服務(wù)器和瀏覽器,服務(wù)器端部署著系統(tǒng)相關(guān)...詳情>>
2023-10-14 23:32:35
為什么Visual FoxPro漸漸淘汰了?
一、為什么Visual FoxPro漸漸淘汰了為什么會(huì)有Visual FoxPro 要淘汰的傳聞呢,我不是很清楚。但這兩年微軟對(duì)Visual FoxPro的不宣傳態(tài)度卻是為這...詳情>>
2023-10-14 23:20:43
到底哪些APP在用Flutter?
一、滴滴出行滴滴出行是一款出行服務(wù)平臺(tái),提供打車、順風(fēng)車、單車等多種出行方式。在采用Flutter技術(shù)后,滴滴出行成功實(shí)現(xiàn)了Android和iOS平臺(tái)...詳情>>
2023-10-14 20:48:15
為什么不推薦使用try-with-finally處理Java異常?
一、不推薦使用try-with-finally處理Java異常的原因1、代碼冗余使用 try-with-finally 時(shí),需要在 finally 塊中編寫釋放資源的代碼,這可能導(dǎo)致...詳情>>
2023-10-14 20:26:43熱門推薦
為什么要把web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行在不同機(jī)器上?
沸APP是怎樣獲取和上傳數(shù)據(jù)到云端數(shù)據(jù)庫(kù)的?
熱為什么Visual FoxPro漸漸淘汰了?
熱粒度是什么意思?
新快照與備份有什么區(qū)別?
為什么MySQL中很少見到使用視圖功能?
Notion Database中怎么能實(shí)現(xiàn)多級(jí)標(biāo)簽?
Python底層是用什么語言實(shí)現(xiàn)的?
到底哪些APP在用Flutter?
為什么不推薦使用try-with-finally處理Java異常?
蘋果TF上架是什么意思?
Java并發(fā)編程需要掌握什么?
hash是什么?
Linux并發(fā)、競(jìng)態(tài)、互斥鎖、自旋鎖、信號(hào)量都是什么?
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價(jià)格 -
優(yōu)惠活動(dòng)
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊(duì)
了解師資團(tuán)隊(duì) -
實(shí)戰(zhàn)項(xiàng)目
獲取項(xiàng)目源碼 -
開班地區(qū)
查看來校路線