第一階段到第四階段:架構進化四階段:探索單體到集群的高可用性能優化之道-CSDN博客https://blog.csdn.net/pinbodeshaonian/article/details/147464084?spm=1001.2014.3001.5502
以下是對從第五階段到第十階段詳細的解釋:
第五階段:數據庫讀寫分離
1.原理
- 利用數據庫的主從復制機制,將主數據庫(Master)的寫操作記錄通過日志等方式同步到從數據庫(Slave)。主數據庫負責處理所有的寫請求,如 INSERT、UPDATE、DELETE 等操作,確保數據的一致性和完整性。從數據庫則實時復制主數據庫的數據,并提供讀服務,處理 SELECT 等查詢請求。這樣,寫操作和讀操作被分別分配到不同的數據庫服務器上,實現了讀寫分離。
2.作用
- 提升性能:在高并發場景下,大量的讀請求會占用數據庫的資源,影響寫操作的執行效率。通過讀寫分離,讀請求由從數據庫處理,減輕了主數據庫的負擔,使主數據庫能夠更專注于寫操作,從而提高了整個系統的并發處理能力和響應速度。例如,在一個電商網站中,商品瀏覽等讀操作遠遠多于訂單提交等寫操作,將讀操作分散到從數據庫可以避免主數據庫因大量讀請求而出現性能瓶頸。
- 增強可靠性:從數據庫作為主數據庫的副本,提供了數據的冗余備份。如果主數據庫出現故障,系統可以快速切換到從數據庫,繼續提供服務,保證數據的可用性和系統的穩定性,降低了因單點故障導致系統癱瘓的風險。
主從數據庫結構特點:
1、一般:一主多從,也可也多主多從。
2、主庫做寫操作,從庫做讀操作。
主從復制步驟:
1、主庫(Master)更新數據完成前,將操作寫入binlog日志文件。
2、從庫(Slave)打開I/O線程與主庫連接,做binlog dump process,并將事件寫入中繼日志。
3、從庫執行中繼日志事件,保持與主庫一致。
第六階段:使用反向代理和 CDN 加速網站響應
1.反向代理
- 工作原理:反向代理服務器位于 Web 服務器前端,充當著客戶端與后端服務器之間的中介。當客戶端發送請求到服務器時,請求首先到達反向代理服務器。反向代理服務器根據預設的規則,如根據請求的 URL、服務器的負載情況等,將請求轉發到后端合適的真實服務器上處理。對于客戶端來說,它并不知道自己訪問的是反向代理服務器,以為就是直接訪問到了目標服務器,反向代理服務器對客戶端隱藏了后端服務器的真實架構和細節。
- 功能作用:除了隱藏后端服務器信息外,反向代理還具有負載均衡的功能。它可以根據后端服務器的性能和負載狀況,將請求均勻地分配到不同的服務器上,避免某臺服務器負載過高而其他服務器閑置的情況,提高了整個系統的資源利用率和可用性。同時,反向代理還可以對請求進行緩存,對于一些經常訪問的靜態資源或動態頁面的部分內容進行緩存,當有相同的請求再次到來時,直接從緩存中返回數據,減少了后端服務器的處理壓力,進一步提高了響應速度。
2.CDN(內容分發網絡)
- 架構與原理:CDN 是一個由分布在不同地理位置的服務器節點組成的分布式網絡。它通過智能的內容緩存和分發機制,根據用戶的地理位置、網絡狀況以及內容的熱度等因素,將內容緩存到距離用戶最近的節點服務器上。當用戶請求訪問某個網站的內容時,CDN 系統會自動判斷用戶的位置,并將用戶的請求路由到距離用戶最近且擁有該內容緩存的節點服務器上,讓用戶從該節點獲取數據,而不是從網站的源服務器獲取。
- 加速效果:CDN 主要用于緩存靜態資源,如圖片、腳本、樣式表、視頻等。由于這些資源通常占據了網站加載時間的大部分,通過 CDN 的緩存和就近分發,可以大大減少數據在網絡中的傳輸距離和時間,顯著加快網站的加載速度,提高用戶體驗。例如,對于一個全球范圍內的電商網站,用戶在訪問商品詳情頁面時,圖片等靜態資源可以從距離用戶最近的 CDN 節點獲取,而無需從位于其他地區的源服務器下載,從而大大縮短了頁面的加載時間。
CDN和反向代理都使用了緩存機制?
第七階段:使用分布式文件系統和分布式數據庫系統
1.分布式文件系統
- 架構與原理:分布式文件系統將文件分割成多個數據塊,并將這些數據塊分散存儲在多個不同的服務器節點上。同時,它通過一個元數據服務器來管理文件的元數據信息,如文件的目錄結構、數據塊的存儲位置等。當用戶請求訪問文件時,首先向元數據服務器查詢文件的元數據,獲取數據塊的存儲位置信息,然后直接從相應的存儲節點讀取數據塊,再將這些數據塊組合成完整的文件返回給用戶。分布式文件系統還具備數據冗余和容錯機制,通過將數據塊復制到多個節點上,確保在某個節點出現故障時,數據不會丟失,可以從其他副本節點獲取數據。
- 應用場景與優勢:適用于大規模數據存儲和處理的場景,如互聯網公司的日志存儲、視頻網站的視頻文件存儲等。它提供了高可擴展性,可以方便地通過增加節點來擴展存儲容量和性能。同時,多個節點可以并行處理文件的讀寫請求,大大提高了文件系統的吞吐量和讀寫速度。例如,在一個大型數據中心中,分布式文件系統可以管理海量的服務器日志文件,支持快速的日志查詢和分析,并且能夠隨著業務的增長輕松擴展存儲能力。
2.分布式數據庫系統
- 架構與原理:分布式數據庫系統將數據庫中的數據按照一定的規則分布存儲在多個節點上,這些節點可以是不同的服務器或計算機。數據的分布方式可以基于數據的范圍、哈希值等進行劃分。同時,分布式數據庫系統通過分布式事務處理機制來保證數據在多個節點之間的一致性和完整性。當進行數據操作時,系統會協調各個節點共同完成事務,確保數據的正確性。此外,分布式數據庫系統還具備自動的數據復制和故障轉移功能,以提高系統的可靠性和可用性。
- 應用場景與優勢:用于處理大規模的結構化數據和高并發的業務請求,如大型電商平臺的訂單數據、社交網絡的用戶關系數據等。它能夠突破單機數據庫在存儲容量和處理能力上的限制,通過增加節點實現性能的線性擴展。例如,當電商平臺的訂單量不斷增長時,分布式數據庫系統可以通過添加節點來輕松應對日益增長的數據量和并發請求,保證系統的穩定運行和快速響應。
第八階段:使用 NoSQL 和搜索引擎
1.NoSQL(非關系型數據庫)
- 類型與特點:NoSQL 數據庫有多種類型,常見的包括鍵值對數據庫(如 Redis)、文檔數據庫(如 MongoDB)、列存儲數據庫(如 Cassandra)和圖數據庫(如 Neo4j)等。鍵值對數據庫以簡單的鍵值對形式存儲數據,讀寫速度極快,適用于緩存、實時數據處理等場景。文檔數據庫以文檔的形式存儲數據,數據結構更加靈活,適合存儲半結構化的數據,如 JSON 格式的文檔,常用于內容管理系統、移動應用等場景。列存儲數據庫則將數據按列進行存儲,適合處理大規模的數據分析和處理任務。圖數據庫用于存儲和處理具有復雜關系的數據,如社交網絡中的人際關系、知識圖譜等。
- 應用場景:NoSQL 數據庫在處理非結構化或半結構化數據、高并發讀寫以及對數據模型靈活性要求較高的場景中表現出色。例如,在實時通信應用中,使用 Redis 作為緩存來存儲用戶的在線狀態、消息隊列等數據,可以快速響應用戶的請求。在內容管理系統中,MongoDB 可以方便地存儲和管理各種類型的文檔內容,無需事先定義嚴格的表結構。
2.搜索引擎
- 工作原理:搜索引擎首先會對網站的文本內容進行抓取和索引。它通過網絡爬蟲程序遍歷網站的頁面,提取其中的文字信息,并對這些信息進行分析和處理,建立索引數據結構。索引中包含了關鍵詞與文檔之間的映射關系,以及文檔的相關元數據。當用戶在搜索框中輸入關鍵詞時,搜索引擎會在索引中快速查找匹配的文檔,并根據相關性和其他因素對搜索結果進行排序,然后將最相關的文檔列表返回給用戶。
- 應用場景:在各種網站和應用中,搜索引擎用于幫助用戶快速查找所需的信息,如文章、產品、用戶生成的內容等。例如,在電商網站中,用戶可以通過搜索引擎查找特定的商品;在企業內部的知識管理系統中,員工可以使用搜索引擎快速找到相關的文檔和資料,提高信息檢索的效率和準確性,提升用戶體驗。
第九階段:業務拆分
1.概念與方法
業務拆分是將一個龐大復雜的單體應用,按照不同的業務功能、模塊或領域,拆分成多個相對獨立的子系統或微服務。拆分的方法可以根據業務的邊界進行劃分,例如將電商系統拆分成商品管理、訂單管理、用戶管理、支付管理等微服務。每個微服務都有自己獨立的數據庫、業務邏輯和接口,它們之間通過輕量級的通信機制進行交互,如 RESTful API。
2.優勢與挑戰
- 優勢:首先,降低了系統的復雜度。每個微服務的功能相對單一,代碼規模較小,便于開發、測試和維護。不同的團隊可以專注于不同的微服務開發,提高了開發效率和代碼質量。其次,提高了系統的可擴展性。當某個微服務的業務需求增長時,可以獨立地對該微服務進行擴展,增加服務器資源或添加新的服務實例,而不會影響到其他微服務。此外,業務拆分還增強了系統的靈活性和可維護性。當某個業務功能發生變化時,只需對相應的微服務進行修改和部署,不會對整個系統造成大規模的影響。
- 挑戰:微服務架構也帶來了一些挑戰,如服務之間的通信和協作變得更加復雜,需要合理設計通信協議和接口,以確保服務之間的高效交互。同時,分布式系統的運維難度增加,需要對多個微服務進行統一的監控、管理和故障排查。
第十階段:分布式服務
1.架構與原理
分布式服務架構是基于微服務架構的進一步發展,將業務功能以服務的形式進行封裝和部署,這些服務分布在不同的服務器上,并通過網絡進行通信和協作。每個服務都有自己獨立的生命周期和運行環境,可以根據業務需求獨立地進行水平擴展,即增加或減少服務實例的數量。分布式服務架構通常采用服務治理框架來管理服務,包括服務的注冊與發現、負載均衡、容錯處理、流量控制等功能。服務提供者將自己的服務注冊到服務注冊中心,服務消費者通過服務注冊中心查找所需的服務,并通過負載均衡算法選擇合適的服務實例進行調用。
2.特點與應用
- 特點:分布式服務架構具有高度的靈活性和可擴展性。它可以根據不同的業務場景和流量變化,動態地調整服務的部署和資源分配,實現資源的高效利用。同時,它提供了強大的容錯機制,當某個服務實例出現故障時,服務治理框架可以自動將請求轉發到其他健康的服務實例上,保證系統的高可用性。此外,通過對服務的監控和管理,可以及時發現和解決服務中的問題,提高系統的穩定性和可靠性。
- 應用:適用于大型復雜的分布式系統,如互聯網電商平臺、金融科技系統等。例如,在電商平臺中,訂單服務、庫存服務、物流服務等可以作為獨立的分布式服務進行部署和管理。在促銷活動等高峰時段,可以根據業務流量動態地擴展訂單服務和庫存服務的實例數量,以應對高并發的請求,保證系統的穩定運行和快速響應。