共計 1729 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。
這期內(nèi)容當(dāng)中丸趣 TV 小編將會給大家?guī)碛嘘P(guān)如何進(jìn)行數(shù)據(jù)庫的架構(gòu)整體分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
很少談架構(gòu)方面的事情,主要是因為這確實是個對知識面和知識深度要求很高的領(lǐng)域,無論是開發(fā)語言的選擇、代碼的架構(gòu),服務(wù)器的搭配、網(wǎng)絡(luò)的架構(gòu)、數(shù)據(jù)庫的架構(gòu)還是第三方軟件的選用等,每一方面都是個很大的方向,每個方向都值得一個人去研究一輩子;每每看到某某網(wǎng)站的首席架構(gòu)師之類的人(不過很多是海綿派),總覺得那就是樂于做技術(shù)的人的終極目標(biāo),總是有種崇拜感。
限于工作和知識的局限性,以及抱著對各位朋友負(fù)責(zé)的態(tài)度,本文談?wù)摰募軜?gòu)僅限于數(shù)據(jù)庫方面,而且是基于 SQLserver 數(shù)據(jù)庫來談的,以免誤導(dǎo)各位。
SQLServer
SQLServer 經(jīng)過這些年的發(fā)展,其實已經(jīng)有很多很好的技術(shù)可以使用,如 Replication、SSB、Cluster、Mirroring 等(可以參考我在 SQLServerDBA 三十問和 SQLServer 高可用、高性能和高保護(hù)延伸中的一些技術(shù)方面的知識),而且這些技術(shù)在可靠性方面已經(jīng)通過了市場的認(rèn)可,有很多公司在為提高其程序的可靠性、安全性和高效性等方面或多或少的采用了其中的某些技術(shù),以下就我接觸過的這些技術(shù)方面的應(yīng)用,主要針對網(wǎng)站這種流量很大,讀多寫少的應(yīng)用,就數(shù)據(jù)庫架構(gòu)方面做些探討,希望對各位有所幫助,如有不對的地方,歡迎大家指正和交流。
數(shù)據(jù)庫架構(gòu)需要考慮的問題:
數(shù)據(jù)可靠和一致性;
數(shù)據(jù)容災(zāi);
當(dāng)數(shù)據(jù)量和訪問壓力變大時,方便擴充;
高度可用,出問題時能及時恢復(fù),無單點故障;
不應(yīng)因為某一臺機器出現(xiàn)問題,導(dǎo)致整網(wǎng)性能的急劇下降;
方便維護(hù);
關(guān)于下面架構(gòu)的說明:
核心服務(wù)器采用 Cluster,還采用了 SSD 做磁盤陣列(SSD 可存放索引等數(shù)據(jù));
核心服務(wù)器的數(shù)據(jù)變更通過 SSB,分發(fā)到兩臺 Replication 的主機中(這一步可以先對數(shù)據(jù)進(jìn)行粗加工,加工成方便用戶查詢的數(shù)據(jù)形式,然后再通過 SSB 包裝后分發(fā)),使用了兩臺 SSB 分發(fā)機,既可以分擔(dān)壓力,也可以實現(xiàn)無單點故障;SSB 可用保證核心庫的數(shù)據(jù)和 Replication 主機數(shù)據(jù)一致;當(dāng)然這一步也可以直接使用 Replication 來實現(xiàn),但對核心服務(wù)器的壓力會有所增加;
接下來將 Replication 主機的數(shù)據(jù)通過分發(fā)服務(wù)器分別分發(fā)到三臺訂閱機,也就是 QUERYDB 服務(wù)器;
六臺 QUERYDB 通過 F5 控制訪問,同時在前段加了臺 MemoryCache 的服務(wù)器,增加緩存,減少查詢的壓力(這一部分很多公司使用了搜索引擎方面的技術(shù),將數(shù)據(jù)庫中的數(shù)據(jù)生成 XML 文件,再通過索引文件來查找數(shù)據(jù));
B3 和 B4 兩臺 SSB 的作用是做 QUERYDB 到核心服務(wù)器的 SSB 消息轉(zhuǎn)發(fā),SSB 消息既能從 QUERYDB 發(fā)送到核心服務(wù)器,同時也能從核心服務(wù)器發(fā)送到 QUERYDB;這樣有啥用呢?用處大了,因為核心服務(wù)器只有一臺,我們?nèi)绻丫W(wǎng)站的所有操作都集中到核心服務(wù)器處理,那在業(yè)務(wù)高峰時期,數(shù)據(jù)變更非常頻繁,核心服務(wù)器壓力必定非常大,很可能抗不住,為預(yù)防這樣的問題,我們勢必要把部分壓力分擔(dān)出去,于是我們可以在用戶做注冊、下單等操作時,先將操作放到 QUERYDB 中,再通過 SSB 把消息發(fā)送給核心服務(wù)器,核心服務(wù)器接受到 SSB 消息后,會先放到隊列中,然后一個個處理,這樣核心服務(wù)器就不會因為同時處理過多的請求,而產(chǎn)生當(dāng)機的風(fēng)險,同時核心服務(wù)器處理完信息后,會將這些數(shù)據(jù)的變動通過 Replication 分發(fā)到每臺 QUERYDB 中去,這樣 QUERYDB 的數(shù)據(jù)還是會和核心服務(wù)器保持一致,實現(xiàn)了通過 QUERYDB 來記錄操作,然后運用 SSB 技術(shù)來分壓的效果;因為 QUERYDB 有六臺(還可以擴展),QUERYDB 上 SSB 壓力都分散了,所以也不會給 QUERYDB 帶來很大的壓力(可能消息會有小的延時,應(yīng)該盡量在 SSB 通道上使用光纖網(wǎng)絡(luò));即便核心服務(wù)器當(dāng)機了,還是可以進(jìn)行查詢數(shù)據(jù)、注冊和下訂單等操作,SSB 會一直保留消息。
上述就是丸趣 TV 小編為大家分享的如何進(jìn)行數(shù)據(jù)庫的架構(gòu)整體分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。