本文從個(gè)人項(xiàng)目經(jīng)歷來說一點(diǎn)自己對(duì)ddbs的理解,包括催生ddbs的原因,ddbs的基本原理,其解決了哪些問題,還有哪些不足。歡迎大家討論、斧正。
創(chuàng)新互聯(lián)建站一直通過網(wǎng)站建設(shè)和網(wǎng)站營(yíng)銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以網(wǎng)站制作、做網(wǎng)站、移動(dòng)互聯(lián)產(chǎn)品、成都全網(wǎng)營(yíng)銷服務(wù)為核心業(yè)務(wù)。10余年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡(jiǎn)單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
業(yè)務(wù)規(guī)模較小時(shí),使用單機(jī)MySQL作存儲(chǔ)。但伴隨業(yè)務(wù)發(fā)展,存儲(chǔ)容量和并發(fā)能力會(huì)有瓶頸。
首先,假設(shè)單機(jī)的硬盤為1.8T,也可以掛更大容量硬盤,但仍有限。
其次,單機(jī)的讀寫并發(fā)能力有限,假設(shè)峰值寫入qps1000,峰值讀取qps3000,網(wǎng)卡對(duì)讀取時(shí)流量也有要求,單次訪問的讀取量不應(yīng)過大。
單機(jī)的鏈接數(shù)也有限。
那么,當(dāng)使用單機(jī)mysql的業(yè)務(wù)發(fā)展,受到以上瓶頸時(shí),一般的思路會(huì)是什么呢?一臺(tái)機(jī)器不行,用兩臺(tái)呢,再不行,擴(kuò)展更多臺(tái)。
一臺(tái)擴(kuò)展為兩臺(tái),磁盤容量擴(kuò)大了,通過分表,將表打散在不同機(jī)器上,共同承擔(dān)寫入任務(wù),并發(fā)也提高了,感覺這個(gè)思路是對(duì)的。
那么在這個(gè)過程中,我們需要做什么?
業(yè)務(wù)發(fā)展到單機(jī)無法承受,即使在單機(jī)上,很多表應(yīng)該也做過分表了。一般會(huì)根據(jù)業(yè)務(wù)選擇分表鍵。單個(gè)表的大小mysql也有一定要求,一般存儲(chǔ)量不大于1G,單條記錄小一些,一般不超過1k,條數(shù)一般不超過1000萬條,最多不超過5000萬條,否則表的使用和維護(hù)效率都很低。假設(shè)業(yè)務(wù)已經(jīng)做了足夠多的分表,滿足三年的數(shù)據(jù)增長(zhǎng)需要,第一年過后,每個(gè)分表的條數(shù)達(dá)到200萬條,整機(jī)存儲(chǔ)容量使用了一半,此時(shí)我們想拆分為兩臺(tái)機(jī)器。
此時(shí)我們可以將原機(jī)器上部分表數(shù)據(jù)同步到新機(jī)器上,并在model層抽象一個(gè)路由層,將對(duì)數(shù)據(jù)庫(kù)的操作發(fā)到不同的機(jī)器上,上層業(yè)務(wù)仍可以認(rèn)為在使用單機(jī)。此時(shí)可以將原機(jī)器上不歸屬自己管理范圍的表刪除,騰出空間。
一臺(tái)變成了兩臺(tái),向分布式走了一步。此時(shí)存儲(chǔ)容量和并發(fā)都提高了,由路由層管理兩臺(tái)機(jī)器。如果兩臺(tái)或今后的多臺(tái)機(jī)器,并發(fā)數(shù)高于路由層處理能力怎么辦?那還要把路由層機(jī)器也擴(kuò)一下,把路由規(guī)則都寫進(jìn)去,大家按一個(gè)格則辦事。
經(jīng)過上面的一番折騰,數(shù)據(jù)庫(kù)機(jī)器水平擴(kuò)展,解決了單機(jī)存在的一些問題。在這個(gè)擴(kuò)展的過程中,是否會(huì)對(duì)業(yè)務(wù)產(chǎn)生中斷影響呢?
會(huì)有一點(diǎn)影響。至少在路由層改路由表時(shí),會(huì)中斷數(shù)據(jù)庫(kù)的寫入,讀取此時(shí)可以不中斷。
ddbs中,使用到的多臺(tái)機(jī)器,都叫做分片。分片提高了系統(tǒng)存儲(chǔ)容量和并發(fā)能力,引入分片,也是系統(tǒng)的復(fù)雜度提高了,需要引入路由層機(jī)器,路由機(jī)器也可能需要擴(kuò)展,復(fù)雜操作,還需要添加更多邏輯功能。但至少可以可業(yè)務(wù)邏輯區(qū)分開,業(yè)務(wù)可以把ddbs當(dāng)做單機(jī)在使用。
那么ddbs有哪些不足呢?
ddbs還是要基于分表、分片實(shí)現(xiàn)的。那么對(duì)數(shù)據(jù)庫(kù)的任何操作,首要條件是需要指明操作的分表鍵。沒有這個(gè)維度的準(zhǔn)確值,就不能對(duì)數(shù)據(jù)庫(kù)操作,當(dāng)然除非是備用庫(kù),那你隨便掃表,因?yàn)閭溆脦?kù)可以轉(zhuǎn)為冗余安全,不走線上流量,可以做統(tǒng)計(jì)任務(wù)。
單指明分表鍵還不行,還要注意操作的數(shù)據(jù)可能會(huì)分布在不同分表、不同分片中,這樣的操作會(huì)引發(fā)ddbs產(chǎn)生大量并發(fā)操作,業(yè)務(wù)的一個(gè)請(qǐng)求就會(huì)占用多個(gè)機(jī)器多個(gè)鏈接,使ddbs得并發(fā)能力大打折扣。比如‘where 分表鍵 in ()’操作,這種操作要慎重,in中個(gè)數(shù)不可太多。
分表鍵最好選用×××,字符串型,可能hash后分配不均,表大小不均衡。
事物操作在ddbs中的實(shí)現(xiàn),非常耗費(fèi)系統(tǒng)性能。事務(wù)類操作需要路由控制層控制整個(gè)操作過程,期中可能涉及多個(gè)分片,多個(gè)不同的表的操作,對(duì)系統(tǒng)整體可用性要求高。
文章標(biāo)題:ddbs簡(jiǎn)介
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article44/pgsiee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、做網(wǎng)站、ChatGPT、手機(jī)網(wǎng)站建設(shè)、Google、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)