伺服器架構

後端的世界也是博大精深。

簡述

這邊會補充一些後端 Server 如何運作的相關知識。看完後希望你能知道這些關鍵字的涵義:

  • NAT 是什麼
  • Load Balance 是什麼
  • Replication 是什麼

NAT(Network Address Translation)

一個公司裡面通常有很多台 Server 在跑,可是你實際跟 Server 連線時看起來都只有連到一個對象,這是為什麼呢?

nat

其實這邊跟「內網」和「外網」的概念很像,公司內的 Server 彼此會透過內網 IP 來溝通,但對外要透過一台「機器」來跟外面的網路世界做溝通,這個機器就是「NAT」。

這裡的 例子 不錯,節錄一段內容:

假設台大電機系的網管人員將網路切割為內部與外部,內部網路的網址設定為 192.168.1.1、192.168.1.2、192.168.1.3;而外部網路的網址為 140.112.66.88,則 NAT 伺服器的功能就是更改封包表頭的傳送端 IP 位址與接收端 IP 位址。

所以呢,從外網沒辦法看到裡面有幾台 Server,而內網也看不到外面的世界。

最後附個懶人包,NAT 的功能有什麼:

  1. 重新封裝 IP,例如 192.168.1.1 變成 140.112.66.88
  2. 封包過濾,可以攔截一些惡意封包
  3. 負載均衡,把資源分散到不同 Server,減輕負擔

負載均衡(Load Balance)

load-balance

當流量很大的時候,把流量分散到不同的 Server,減輕負擔。

好處有:

  1. 減輕 Server 負擔
  2. 如果 PHP01 爆了,還有 PHP02 能撐

資料庫 Replication

replication

讀寫分離、從屬架構

簡單來說,可以把資料庫建立從屬關係

  • Master 負責處理「寫入資料」的資料庫
  • Slave 負責處理「讀取」資料的資料庫

當你在寫資料到 Master 時,MySQL 會透過 Replication(複製)機制,讓 Master 和所有 Slave 之間的資料同步。

這樣的好處是資料庫負擔不會那麼重,因為「讀跟寫是分開的」。另外雖然上面的圖只畫出一台,但實際上 Master 和 Slave 可以有多個(應該啦),所以又可以在透過這種方式來降低負擔。

資料庫高可用性 High Availability

high-high-availability

其實就是剛剛的從屬架構來做延伸:

假設 Master 壞掉了,就先把流量轉給 Slave,利用這段期間修復 Master。

總之呢,不管是前面提的 Load Balance 還是 Replication,重點都只有一個:

永遠要有兩台以上的機器來預防突發狀況

記住這點就好了。

設定 SSL 憑證 SSH 用別名的方式來連線
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×