W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
從之前的介紹我們知道?gdb
?支持基于應用層的主從配置以及讀寫分離,并且所有的特性僅需要通過簡單的配置即可實現(xiàn),?gdb
?內(nèi)部將會對?SQL
?請求自動地進行主從切換。以下是一個簡單的主從配置,包含一主一從:
database:
default:
- type: "mysql"
link: "root:12345678@tcp(192.168.1.1:3306)/test"
role: "master"
- type: "mysql"
link: "root:12345678@tcp(192.168.1.2:3306)/test"
role: "slave"
在大部分的場景中,我們的寫入請求是到?Master
?主節(jié)點,而讀取請求是到?Slave
?從節(jié)點,這樣的好處是能夠?qū)?shù)據(jù)庫的請求進行壓力分攤,并提高數(shù)據(jù)庫的可用性。但在某些場景中,我們期望讀取操作在?Master
?節(jié)點上執(zhí)行,特別是一些對于即時性要求比較高的場景(因為主從節(jié)點之間的數(shù)據(jù)同步是有延遲的)。
開發(fā)者可以通過?Master
?和?Slave
?方法自定義決定當前鏈式操作執(zhí)行在哪個節(jié)點上。
我們來一個簡單的示例。我們有一個訂單系統(tǒng),每天的流量比較大,因此數(shù)據(jù)庫在主從同步時往往會存在?1-500ms
?時間的延遲。在業(yè)務需求中,創(chuàng)建訂單后需要立即展示訂單列表頁面??梢灶A料到如果該訂單列表頁面默認往從節(jié)點讀取數(shù)據(jù)的話,很有可能用戶在創(chuàng)建訂單后在訂單列表頁面看不到最新創(chuàng)建的訂單(因為數(shù)據(jù)庫主從同步延遲)。這個問題,我們可以在訂單列表頁面設置為往主節(jié)點讀取數(shù)據(jù)即可解決。
db.Model("order").Data(g.Map{
"uid" : 1000,
"price" : 99.99,
// ...
}).Insert()
Master
?方法指定查詢操作是在主節(jié)點上進行,以避免讀取延遲。 db.Model("order").Master().Where("uid", 1000).All()
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: