程序部署方面
單機:
描述:一個系統業務量很小的時候所有的代碼都放在一個項目中就好了,然後這個項目部署在一臺服務器上就好了。整個項目所有的服務都由這臺服務器提供。這就是單機結構。
缺點:單機的處理能力畢竟是有限的,當你的業務增長到一定程度的時候,單機的硬件資源將無法滿足你的業務需求。
集羣:
描述:集羣就是單機的多實例,在多個服務器上部署多個服務,每個服務就是一個節點,部署N個節點,處理業務的能力就提升 N倍(大約),這些節點的集合就叫做集羣。
通過負載均衡,協調集羣裏的每個節點均衡地接受業務請求。通俗的講就是服務器A和服務器B相同時間段內處理的同類業務請求數量是相似的,減輕服務器壓力,能夠將業務請求均等分配 (中間件可以使用nginx)
優點:擴展性好,集羣只是單機的多個複製,沒有改變單機的原有的代碼結構,每次部署新節點只需要複製部署即可。減輕服務器壓力,增加服務器訪問容量提升服務器壓力。
缺點: 單個節點業務耦合度高、資源浪費:節點是多個業務處理集合(耦合高),每個具體業務的訪問量可能差異很大。
但是他們部署的節點卻是一樣的,浪費服務器資源。(解決該問題用到的架構就是分佈式了)。
分佈式:
分佈式結構就是將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在分佈式結構中,每個子系統就被稱爲“服務”。這些子系統能夠獨立運行在web容器中,它們之間通過RPC方式通信。這樣我們可以根據業務的訪問量來部署服務的多少。
優點:
系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明確,排錯也變得相當容易,開發效率大大提升。
系統之間的耦合度降低,從而系統更易於擴展。我們可以針對性地擴展某些服務,就是對子系統集羣。
服務的複用性更高。比如,當我們將用戶系統作爲單獨的服務後,該公司所有的產品都可以使用該系統作爲用戶系統,無需重複開發。
數據庫方面:
單一數據庫:
缺點:數據量太大導致性能下降;
數據文件會變得很大,導致數據備份恢復會變得很慢;
數據文件越大,極端情況數據丟失的風險更高。
這些問題可以通過數據庫分庫解決。
數據庫分庫:
把一個數據庫切分成多個部分放在不同的數據庫上。緩解單一數據庫的性能問題。
數據庫優化:
數據庫讀寫分離:
優點:
增加了機器的數據處理能力
提升數據讀寫速度。