- 論壇徽章:
- 0
|
回復(fù) 39# ywbair
對(duì)于數(shù)據(jù)存儲(chǔ)問(wèn)題是網(wǎng)絡(luò)延遲造成最大影響的地方。在常見(jiàn)的解決方案中有多機(jī)房單集群,和多機(jī)房多集群部署兩種.數(shù)據(jù)的同步可以分為,數(shù)據(jù)庫(kù),緩存,消息隊(duì)列,session等。在多機(jī)房單集群中如何部署? 及整個(gè)系統(tǒng)中存儲(chǔ)服務(wù)是唯一的一個(gè)集群,只有一個(gè)master節(jié)點(diǎn).做讀寫(xiě)分離設(shè)計(jì),所有機(jī)房上的服務(wù)只能向數(shù)據(jù)存儲(chǔ)集群上的master節(jié)點(diǎn)提交寫(xiě)請(qǐng)求,而在讀數(shù)據(jù)時(shí)向自己機(jī)房上的salve節(jié)點(diǎn)提交請(qǐng)求。數(shù)據(jù)的同步委托給基礎(chǔ)組件完成,可以利用數(shù)據(jù)本身的數(shù)據(jù)同步方案,但通常無(wú)法結(jié)合業(yè)務(wù)特性進(jìn)行優(yōu)化提高性能,redis 本身的數(shù)據(jù)同步在master同步salve時(shí)會(huì)導(dǎo)致salve不可用,mysql自身的同步方案性能和穩(wěn)定性都比較差。這時(shí)需要團(tuán)隊(duì)親自制定化數(shù)據(jù)同步組件。來(lái)保證多個(gè)機(jī)房上的數(shù)據(jù)全量同步。還可以基于消息隊(duì)列來(lái)實(shí)現(xiàn)數(shù)據(jù)同步,但這會(huì)導(dǎo)致額外的帶寬占用,更可以搭建專(zhuān)用網(wǎng)絡(luò)線路解決。無(wú)論任何的同步方式,在業(yè)務(wù)端需要對(duì)訪問(wèn)數(shù)據(jù)庫(kù)的客戶端進(jìn)行重構(gòu)使其能夠支持讀寫(xiě)分離。并且為了防止網(wǎng)絡(luò)延遲,我們可以在客戶端做很多事情,第一,雙寫(xiě):多個(gè)機(jī)房下允許出現(xiàn)多個(gè)Master,那么客戶端進(jìn)行封裝在底層將寫(xiě)請(qǐng)求發(fā)送給多個(gè)Master上。第二:雙讀或回源讀,當(dāng)讀取本機(jī)房數(shù)據(jù)沒(méi)有讀到時(shí),去主機(jī)房讀取或者根據(jù)用戶請(qǐng)求解析出數(shù)據(jù)源在哪個(gè)機(jī)房然后去讀取
|
|