目錄
- 一、單機架構
- 二、分布式架構
- 1、應用服務與數據庫分離
- 2、負載均衡
- 3、數據庫讀寫分離
- 4、引入緩存
- 5、數據庫分庫分表
- 6、引入微服務
一、單機架構
單機架構,只有一臺服務器,這個服務器負責所有工作。
絕大多數公司的產品,都是這種單機架構。現在計算機硬件發展迅速,哪怕只有一臺服務器,但是這臺服務器性能很好,可以支持非常高的并發,非常大的數據存儲。單機架構足以支撐。
二、分布式架構
一臺主機的硬件資源是有上限的,包括不限于:CPU、內存、硬盤、網絡…等等。服務器每次收到一個請求,都是需要消耗上述的一些資源的。如果同一時刻,處理的請求多了就可能會導致某個硬件資源不夠用了。無論是那個方面不夠用了,都可能會導致服務器處理請求的時間變得很長,甚至于處理出錯。而一臺主機上面能增加的硬件資源是有限的,取決于主板的拓展能力。如果一臺主機拓展到了極限還是不夠,就只能引入多臺主機了。一旦引入了多臺主機,系統就可以稱作為“分布式系統”。引入分布式,一定是萬不得已。
1、應用服務與數據庫分離
針對不同的服務配備不同的服務器,例如應用服務器里面可能會包含很多的業務邏輯,會占用大量的CPU資源。而數據庫服務器,則需要更大的硬盤空間,更快的數據訪問速度,可以配備更大的硬盤服務器。
2、負載均衡
假設在上述情況下,應用服務器還是沒有抗住,就需要再引入更多的應用服務器來解決上述問題。
用戶的請求,會先到達負載均衡器/網關服務器。假設現在有1w個用戶請求,有2個應用服務器,此時按照負載均衡的方式,就可以讓每個應用服務器承擔5k的訪問量。負載均衡器對于請求量的承擔能力,是遠遠超過應用服務器的。負載均衡器是分配工作,不需要執行任務。
3、數據庫讀寫分離
增加應用服務器,確實能夠處理更高的請求量。但是隨之存儲服務器要承擔的請求量也更多了。
實際應用場景種,讀的頻率是遠高于寫的頻率。主服務器一般是一個,從服務器要有很多個(一主多從)。從節點的數據,要從主節點這同步過來,以主節點為主。
4、引入緩存
數據庫天然就有個問題,那就是響應速度慢。我們可以把數據區分為“冷熱”數據,熱點數據放到緩存中,緩存的訪問速度往往比數據庫快很多。
緩存服務器中會存放一些小部分的熱點數據,熱點數據是會被頻繁訪問到的數據。這里的緩存服務器,就可以用Redis,從數據庫存儲的仍然是全量數據。這時候,緩存服務器就幫數據庫服務器緩解了壓力。
5、數據庫分庫分表
引入分布式系統,不光要能夠去應對更高的請求量(并發量),同時也要能應對更大的數據量。一臺主句存不下,就需要多臺主機來存儲。針對數據庫進行進一步的拆分,分庫分表。引入多個數據庫服務器,每個數據庫服務器存儲一個或者一部分的數據庫。
具體如何分庫分表,要結合實際的業務場景來展開。業務至關重要,技術知識給業務提高支持。業務決定了技術。
6、引入微服務
前面的應用服務器通常都是一個服務器程序,其中包含了很多的業務邏輯,這可能導致單個服務器的代碼變得越來越復雜。為了便于代碼的維護,可以將這樣一個復雜的服務器拆分為更多、功能更單一但更小的服務器,這就是所謂的微服務。
引入微服務的代價:
- 系統的性能會下降:拆除更多的服務,多個功能之間要更依賴網絡通信,網絡通信的速度可能會比硬盤慢。
- 系統復雜程度更高,可用性收到影響:服務器更多了,出問題的概率更大了。
引入微服務的優勢:
- 解決了人的管理問題。
- 使用微服務,可以更方便于功能的復用。
- 給不同的服務進行不同的部署。