單體架構:
簡介:所有功能都放在一個應用裏.
優點:便於開發,測試,部署也很方便
缺陷:高訪問,高併發的上限是固定的,一個服務有問題影響其他服務
比如一個單體架構,能夠承受 1000次訪問/秒。 但是訪問量達到 2000次/秒的時候,就會非常卡頓,嚴重影響業務,並且僅僅依靠單體架構本身,很難突破這個瓶頸。
解決辦法通常就是採用分佈式和集羣來做
分佈式
簡介:一個功能做成一個應用,相互不影響
優點:只要約定好接口可以讓不同的團隊開發不同的微服務,彼此之間是低耦合。 一個微服務掛了,其他微服務依然可以繼續使用
集羣
簡介:相同功能的應用 多複製幾個都部署上去
優點:把2個應用部署在2個機器上,理論來說能夠承受的負載就是 x 2 。一個掛了另一個還能用,高可用性。
負載均衡
集羣后,一個請求到底該交給哪臺服務器處理? 讓每臺服務器負載量均衡才能發揮最大的效果
一般功能有: 請求轉發,會話保持(一個會話請求保持在一臺服務器上),服務器狀態監測
負載策略:
- 按權重輪詢 (給每個服務器設置權重,按權重比例分配)
- 按ip hash (把ip作爲hash key, 同一ip始終請求同一服務器)
- 加權最小連接數 (服務器活躍數/權重, 然後分配請求, 適合複雜的場景)
實現方式:
CDN
CDN的基本原理是廣泛採用各種緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的緩存服務器上,由緩存服務器直接響應用戶請求。