優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利

數(shù)據(jù)庫(kù)擴(kuò)展立方在電子商務(wù)網(wǎng)站平臺(tái)的實(shí)際應(yīng)用

AllScale公司的數(shù)據(jù)架構(gòu)師認(rèn)為數(shù)據(jù)架構(gòu)將在三個(gè)維度上受到限制,即交易量的增長(zhǎng)、第23章所做的擴(kuò)展應(yīng)用的決策以及客戶和產(chǎn)品的增長(zhǎng)。因此,他們需要依靠AKF數(shù)據(jù)庫(kù)擴(kuò)展立方的所有坐標(biāo)軸。
 
架構(gòu)師團(tuán)隊(duì)決定劃分站點(diǎn)的功能,以便適應(yīng)應(yīng)用復(fù)雜度的增長(zhǎng)。也許你還記得,像瀏覽、搜索、產(chǎn)品目錄上傳、存貨管理等無(wú)需知道客戶特定的信息就能執(zhí)行的動(dòng)作,都可以成為站點(diǎn)上的一個(gè)功能分支, 具有自己的代碼庫(kù)。決定把這些功能放入泳道,每個(gè)泳道都需要具有它那部分功能所需的數(shù)據(jù)。架構(gòu)師團(tuán)隊(duì)認(rèn)識(shí)到,要這樣做,就要修改數(shù)據(jù)架構(gòu)的形式,有些數(shù)據(jù)元素要被復(fù)制到整個(gè)架構(gòu)中。要確保對(duì)于任何數(shù)據(jù)元素都有且只有一個(gè)節(jié)點(diǎn),用于存放最近最新的數(shù)據(jù)副本。在理想狀況下,架構(gòu)師團(tuán)隊(duì)把數(shù)據(jù)的更新放在一個(gè)泳道中,同時(shí)在客戶交易之外,采用某種形式的異步更新方法,來(lái)更新架構(gòu)中的其他部分中的數(shù)據(jù)。所有的客戶信息都要被劃分到N個(gè)豆莢中,其中N是個(gè)可配置的參數(shù)。每個(gè)豆莢中會(huì)駐留大約1/N的客戶。這是根據(jù)客戶進(jìn)行的Z軸劃分。在每個(gè)Z軸劃分中,架構(gòu)師團(tuán)隊(duì)準(zhǔn)備對(duì)代碼和執(zhí)行代碼所需的數(shù)據(jù)進(jìn)行Y軸劃分。登錄/登出是一個(gè)功能,支付是一個(gè)功能,賬戶狀態(tài)和匯總是一個(gè)功能,支持這些功能所需的數(shù)據(jù)也會(huì)隨應(yīng)用作出相應(yīng)的劃分。每個(gè)Y軸劃分的泳道只需了解1/N的客戶,因此,需要緩存的數(shù)據(jù)(如登錄信息)就大大減少了,緩存速度就更快了。


 
最后,架構(gòu)師團(tuán)隊(duì)在所有劃分中都應(yīng)用了X軸劃分,以便擴(kuò)展這些劃分中的交易量。
 
搜索這個(gè)功能引起了AlScale的數(shù)據(jù)和軟件架構(gòu)師的擔(dān)心,所以最終他們決定對(duì)這個(gè)領(lǐng)域給予更多的關(guān)注。他們打算利用擴(kuò)展立方的X軸、Y軸和Z軸來(lái)滿足搜素的需求,讓最終用戶非??斓鼐湍艿玫剿阉鹘Y(jié)果。把搜索功能單獨(dú)劃分出來(lái),就是Y軸劃分了,所以我們接下來(lái)要關(guān)注的是X軸和Z軸劃分。對(duì)于下面的討論。
 
架構(gòu)師團(tuán)隊(duì)決定采用聚合器來(lái)加速處理搜索請(qǐng)求。這些聚合器要負(fù)責(zé)處理交易量的增長(zhǎng),每個(gè)聚合器都是其他聚合器的克隆品,這就創(chuàng)建了一個(gè)X軸實(shí)現(xiàn)。最終請(qǐng)求被發(fā)送給N個(gè)系統(tǒng),每個(gè)系統(tǒng)中存放了1/N的要銷售的產(chǎn)品,N是應(yīng)用到產(chǎn)品目錄上的模數(shù)。這種N項(xiàng)劃分就是一種根據(jù)產(chǎn)品編號(hào)進(jìn)行的Z軸劃分。此外,每個(gè)Z軸劃分中還有M個(gè)克隆的數(shù)據(jù)集,這樣可以應(yīng)對(duì)交易量的增長(zhǎng)。
 
一個(gè)搜索請(qǐng)求可以經(jīng)過負(fù) 載均衡器被分配到任何一個(gè)聚合器上,然后這個(gè)聚合器會(huì)劃分出N個(gè)單獨(dú)的請(qǐng)求,每一個(gè)對(duì)應(yīng)于N個(gè)產(chǎn)品數(shù)據(jù)庫(kù)層中的一個(gè)。這些產(chǎn)品數(shù)據(jù)庫(kù)中的每一個(gè)都有1/N(產(chǎn)品編號(hào)對(duì)N取模)的數(shù)據(jù)。接下來(lái),每個(gè)數(shù)據(jù)層中都有M個(gè)克隆品,它們是這1/N數(shù)據(jù)的副本,對(duì)這個(gè)數(shù)據(jù)層的請(qǐng)求會(huì)被負(fù)載均衡地分配到這M個(gè)副本中的一個(gè)上。隨著每個(gè)數(shù)據(jù)層返回一個(gè)結(jié)果,聚合器會(huì)把這些數(shù)據(jù)元素編輯成一個(gè)完整的列表,完成后就把這個(gè)排列好的列表發(fā)送給請(qǐng)求者。這N個(gè)Z軸劃分返回結(jié)果都非常快,因?yàn)閿?shù)據(jù)可以駐留在內(nèi)存中,而且每個(gè)數(shù)據(jù)庫(kù)只查找1/N的數(shù)據(jù)。由于有多個(gè)聚合器,而且N個(gè)Z軸劃分中都有M個(gè)X軸副本,所以這個(gè)系統(tǒng)是完全冗余的。只要增加聚合器和網(wǎng)站制作數(shù)據(jù)的X軸副本,這個(gè)系統(tǒng)就能輕松地?cái)U(kuò)展交易量。如果必要,當(dāng)聚合器一次需要同太多Z軸劃分交互時(shí),還可以增加聚合器的聚合器。

本文地址:http://m.cdrpkj.cn//article/3897.html
相關(guān)文章:
最新文章: