laravel 配置MySQL讀寫分離

語言: CN / TW / HK

前言:說到應對大流量、高併發的解決方案的時候,總會有這樣的回答,如:讀寫分離,主從複製...等,資料庫層今天先不討論,那麼今天我們就來看看怎麼在應用層實現讀寫分離。

框架:laravel5.7

說明:

Laravel預設將 select 的語句讓 read 指定的資料庫執行,insert/update/delete 則交給 write 指定的資料庫,達到讀寫分離的作用。
這些設定對原始查詢 raw queries,查詢生成器 query builder,以及物件對映 Eloquent 都生效。

一、單讀庫配置(一主一從)

開啟database.php檔案,找到mysql配置處,完成效果如下圖

二、多讀庫配置(一主多從)

 

.env檔案

 

三、多寫多讀配置(多主多從)

 

.env檔案

四、sticky 

說明:sticky 項是一個可選的配置值,可用於在當前請求生命週期內允許立即讀取寫入資料庫的記錄。
   如果 sticky 選項被啟用並且一個"寫"操作在當前生命週期內發生,則後續所有"讀"操作都會使用這個"寫"連線(前提是同一個請求生命週期內),
   這樣就可以確保同一個請求生命週期內寫入的資料都可以立即被讀取到,從而避免主從延遲導致的資料不一致,是否啟用這一功能取決於你。

解釋:當然,這只是一個針對分散式資料庫系統中主從資料同步延遲的一個非常初級的解決方案,訪問量不高的中小網站可以這麼做,大流量高併發網站肯定不能這麼幹,
   主從讀寫分離本來就是為了解決單點效能問題,這樣其實是把問題又引回去了,造成所有讀寫都集中到寫資料庫,對於高併發頻繁寫的場景下,後果可能是不堪設想的,
但是話說回來,對於併發量不那麼高,寫操作不那麼頻繁的中小型站點來說,sticky 這種方式不失為一個初級的解決方案。

示意圖(紅框中)

以上內容希望幫助到大家,更多PHP大廠PDF面試文件,PHP進階架構視訊資料,PHP精彩好文免費獲取可以關注公眾號:PHP開源社群,或者訪問:

2021金三銀四大廠面試真題集錦,必看!

騰訊一面的Redis秒殺面試題你會麼?

四年精華PHP技術文章整理合集——PHP框架篇

四年精華PHP技術文合集——微服務架構篇

四年精華PHP技術文合集——分散式架構篇

四年精華PHP技術文合集——高併發場景篇

四年精華PHP技術文章整理合集——資料庫篇