讀寫分離的思想

2022-06-07 20:42:10 字數 902 閱讀 9409

要想高效能,需要盡量:避開網路開銷(io),避開海量資料,避開資源爭奪。

cqrs(command query responsibility segration)架構,命令查詢職責分享架構。

乙個系統,從架構上把它拆分為兩部分:命令處理(寫請求)+查詢處理(讀請求)。

c端負責資料儲存,q端負責資料查詢,q端的資料通過c端產生的event來同步。

在進行大量的讀操作時,如果將讀取與寫入操作進行分離,將能夠提高查詢的可伸縮能力。

其實對於讀取密集型應用環境來說,可以通過另一種途徑實現可伸縮性,即主/從複製。資料的修改全部發生在主節點上,資料將同步到乙個或多個進行讀取的從節點上。

這種方式已經存在很久了,並且在許多資料庫機制中都已經得到了完整的支援。也可將它定義為一種cqrs架構,因為它確實做到了讀寫分離。

另一種用於處理可伸縮性問題的解決方案,即資料分片、或資料庫分割槽。這種方式將某張表中的資料切分到資料庫的多個例項中,並通過某個欄位在例項之間進行分布,例如客戶的名稱。這種方式的一大優點在於能夠設定多個主節點,因此可以對命令與查詢兩方面同時進行擴充套件。而許多資料庫技術本身就支援分割槽能力,只需一些非常簡單的**就可以實現。在使用多個主節點的情況下無法支援跨記錄的事務,因此就像對解決方案領域所進行的分割槽一樣,對業務領域也要進行某種程度的劃分。

在某一種場景下是非常適合應用cqrs架構的,即具有高競爭性的業務領域。在這種領域中的負載非常大,而且具有高度的局域性。一旦出現併發異常就可能導致大多數事務操作開始失敗、無法釋放資料庫連線、阻塞使用者請求等一系列問題,產生巨大的系統瓶頸。這種測試用例在進行效能測試時經常會被忽略,一般在進行可伸縮性測試時,通常會針對多條記錄建立大量的使用者請求,而不是讓所有的請求都集中於少數幾條記錄上。即使完美地實現了cqrs架構,這種瓶頸依然會出現在資料查詢的場景,由於後台的程序不能快速地完成更新操作,導致查詢模型總是無法及時獲得最新的資料。

Mysql的讀寫分離

進行mysql的讀寫分離配置之前,應該先進行mysql主從複製的配置工作 wget或者登陸mysql官網查詢其他版本的安裝包 2.將安裝包移動到 usr local 目錄下並進行解壓 mv mysql proxy 0.8.5 linux glibc2.3 x86 32bit.tar.gz usr l...

Mysql的讀寫分離

server2上檢查主從配置 下面開始設定讀寫分離。我們直接使用官方提供的外掛程式mysql proxy。mysql proxy是官方提供的mysql中介軟體產品可以實現負載平衡,讀寫分離,failover等。mysql proxy就是這麼乙個中間層 簡單的說,mysql proxy就是乙個連線池,...

mysql讀寫分離(三) 讀寫分離實現

現在的mysql讀寫分離方案有很多,在這裡筆者列舉出幾種自己使用過的方案 1.spring實現route不同的資料來源,來達到讀寫分離的目的。主要原理是根據service或者dao方法做切面,然後根據規範方法名字首來切換不同的資料來源,實現讀寫分離,好處,速度快,支援事務,但是缺點,是不好管理 2....