為什麼要把web伺服器和資料庫伺服器執行在不同機器上?

時間 2021-06-03 00:20:27

1樓:歌盡桃花

這個問題可以從以下幾個方向去思考:

一、硬體故障

基本上現在大型的軟體都是搞分布式部署、分布式計算,生產環境最忌諱的就是單點故障,所以現在雲計算、虛擬化得以大行其道,哪怕是乙個簡單的計算微服務,也應該最少要有2份以上的副本,而且最好是要求這些副本不同機器、不同機架甚至是不同的資料中心,這樣在發生意外時另外有效的副本可以馬上接上繼續工作,乙個簡單的服務尚且如此,更何況是重量級的web伺服器和資料庫伺服器,部署在同一臺物理機器上是及其不合理的

二、軟體定位

每個軟體的專注的功能不同,必然導致它們對各種軟硬體資源的利用效率不一樣。web伺服器主要是用來處理網路連線和資源請求的,因此要求就是高頻寬,高併發,對CPU的要求其實不高,對記憶體的要求高,因為在這一層面需要快取大量的資訊以及執行緒池來追求速度,對磁碟IO要求不高,因此可以專門優化為大記憶體的多核伺服器,結合具體使用的伺服器(如Apache、Tomcat、Nginx等)做極致的優化,然而為web伺服器所做的優化顯然不適合資料庫伺服器。資料庫伺服器的主要職責是處理SQL語句,管理磁碟上儲存的資料,要求大量的磁碟IO,對緩衝池要求極高,拿MySQL的Innodb引擎來講,基本上最好記憶體的80%都分配給innodb_buffer_pool_size,用來快取索引資訊,磁碟髒頁,臨時表等,但是併發程度是遠遠低於web伺服器的,比如對於乙個秒殺系統而言,如果web伺服器在1秒內收到了100萬請求需要處理,而庫存只有1萬個,這時會落到資料庫的請求就是最多1萬個,當然,生產環境中甚至不應該使用資料庫來查這些實時資料。

總結,web伺服器和資料庫伺服器定位不同,優化點也不同,強行放一起會嚴重影響兩者的效能

三、安全

一般企業的資料庫都是部署在內網,埠不會開放的,以防止黑客攻擊,只能通過內網跳板機去訪問,由專業的DBA管理,而web伺服器是開放的,容易造成誤操作或者被攻擊導致資料損壞什麼的

雲伺服器和雲資料庫如何關聯?

已登出 購買雲伺服器和雲資料庫時,注意一點,那就是雲伺服器和雲資料庫必須在同一專有網路中!同一專有網路中意味著內網互通,這樣就可以用內網來訪問雲資料庫,不僅速度快,而且不會產生任何流量費用。如果不在同一專有網路中,那麼麻煩事特別多,需要打通內網或者雲資料庫開公網,都可能會產生額外的成本。如果在同一專...

網路遊戲伺服器與資料庫的關係?

逐風 資料庫太慢,一般情況下資料庫以冷資料儲存為主。熱資料在快取中處理,然後落地刷到資料庫。分割槽和資料庫的關係涉及到你具體的邏輯業務。比如,你單服使用者少無互動,那麼乙個資料庫對應乙個,或者乾脆不用都沒事。或者,你需要跨服,那麼最好避免分庫,或者對映出共用庫。或者,不依賴資料庫,自己架中間資料層。...

能否將秘密共享協議用於資料庫伺服器root許可權控制機制實現多使用者共同確保root許可權合理使用?

jiangtao9999 多人同時許可帶來的問題是,當你需要 root 許可權的時候,必須有多人到場才可以。但是其實這是沒必要的。解決刪庫的最好辦法是用乙個不會被真實刪庫的資料庫去解決問題。即便你刪庫,也可以靠 log 記錄來恢復資料的資料庫是最佳的。至於你說的秘密共享,是另外一件事。這東西原則上說...