ShardingSphere 4.x 讀寫分離 上

  • 背景
  • 挑戰
  • 目標

背景

面對日益增長的系統訪問量,數據庫的吞吐量面臨着巨大瓶頸。 對於同一時刻有大量併發讀操做和較少寫操做類型的應用系統來講,將數據庫拆分爲主庫和從庫,主庫負責處理事務性的增刪改操做,從庫負責處理查詢操做,可以有效的避免由數據更新致使的行鎖,使得整個系統的查詢性能獲得極大的改善。數據庫

經過一主多從的配置方式,能夠將查詢請求均勻的分散到多個數據副本,可以進一步的提高系統的處理能力。 使用多主多從的方式,不但可以提高系統的吞吐量,還可以提高系統的可用性,能夠達到在任何一個數據庫宕機,甚至磁盤物理損壞的狀況下仍然不影響系統的正常運行。併發

與將數據根據分片鍵打散至各個數據節點的水平分片不一樣,讀寫分離則是根據SQL語義的分析,將讀操做和寫操做分別路由至主庫與從庫。運維

讀寫分離的數據節點中的數據內容是一致的,而水平分片的每一個數據節點的數據內容卻並不相同。將水平分片和讀寫分離聯合使用,可以更加有效的提高系統性能。性能

挑戰

讀寫分離雖然能夠提高系統的吞吐量和可用性,但同時也帶來了數據不一致的問題。 這包括多個主庫之間的數據一致性,以及主庫與從庫之間的數據一致性的問題。 而且,讀寫分離也帶來了與數據分片一樣的問題,它一樣會使得應用開發和運維人員對數據庫的操做和運維變得更加複雜。 下圖展示了將分庫分表與讀寫分離一同使用時,應用程序與數據庫集羣之間的複雜拓撲關係。spa

目標

透明化讀寫分離所帶來的影響,讓使用方儘可能像使用一個數據庫同樣使用主從數據庫集羣,是ShardingSphere讀寫分離模塊的主要設計目標。設計

相關文章
相關標籤/搜索