NDC系統(tǒng)設(shè)計(jì)與應(yīng)用
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
NDC簡(jiǎn)介
NDC全名Netease Data Canal,直譯為網(wǎng)易數(shù)據(jù)運(yùn)河系統(tǒng),是網(wǎng)易針對(duì)結(jié)構(gòu)化數(shù)據(jù)庫(kù)的數(shù)據(jù)實(shí)時(shí)遷移、同步和訂閱的平臺(tái)化解決方案。
在NDC之前,我們主要通過(guò)自研或開(kāi)源軟件工具來(lái)滿足異構(gòu)數(shù)據(jù)庫(kù)實(shí)時(shí)遷移和同步的需求,隨著云計(jì)算和公司業(yè)務(wù)的大力推進(jìn),公司內(nèi)部,尤其是運(yùn)維團(tuán)隊(duì)開(kāi)始對(duì)數(shù)據(jù)遷移工具的可用性、易用性以及其他多樣化功能提出了更多要求和挑戰(zhàn),NDC平臺(tái)化解決方案便應(yīng)運(yùn)而生。NDC的構(gòu)建快速整合了我們之前在結(jié)構(gòu)化數(shù)據(jù)遷移領(lǐng)域的積累,于2016年8月正式立項(xiàng),同年10月就已上線開(kāi)始為我們的各大產(chǎn)品線提供在線數(shù)據(jù)遷移和同步服務(wù)。
業(yè)界中與NDC類似的產(chǎn)品有阿里云的DTS、阿里開(kāi)源產(chǎn)品DataX、Canal、Twitter的Databus,在傳統(tǒng)領(lǐng)域有Oracle的GoldenGate、開(kāi)源產(chǎn)品SymmetricDS。從產(chǎn)品功能、成熟度來(lái)看,NDC與阿里云DTS最為相似,都具有簡(jiǎn)、快、全三大特性:
簡(jiǎn),使用簡(jiǎn)單,有平臺(tái)化的Web管理工具,配置流程簡(jiǎn)潔易懂。
快,數(shù)據(jù)同步、遷移和訂閱速度快,執(zhí)行高效,滿足互聯(lián)網(wǎng)產(chǎn)品快速迭代的需求。
全,功能齊全,NDC支持多種常用的異構(gòu)數(shù)據(jù)庫(kù),包括Oracle、MySQL、SQLServer、DB2、PostgreSQL以及網(wǎng)易分布式數(shù)據(jù)庫(kù)DDB,除了可以滿足不同數(shù)據(jù)庫(kù)之間在線數(shù)據(jù)遷移、實(shí)時(shí)同步之外,NDC也可以實(shí)現(xiàn)從數(shù)據(jù)庫(kù)到多種OLAP系統(tǒng)的實(shí)時(shí)數(shù)據(jù)同步和ETL,目前同步目標(biāo)支持的OLAP系統(tǒng)包含Kudu和Greeplum。另外,NDC支持對(duì)數(shù)據(jù)庫(kù)做數(shù)據(jù)訂閱,通過(guò)將數(shù)據(jù)庫(kù)的增量數(shù)據(jù)丟入消息隊(duì)列,使應(yīng)用端可以自由消費(fèi)數(shù)據(jù)庫(kù)的實(shí)時(shí)增量數(shù)據(jù),從而實(shí)現(xiàn)由數(shù)據(jù)驅(qū)動(dòng)業(yè)務(wù),復(fù)雜業(yè)務(wù)之間調(diào)用解耦。
提煉場(chǎng)景和需求是做好產(chǎn)品的第一步,本文先通過(guò)三種典型應(yīng)用場(chǎng)景介紹NDC的使用價(jià)值,之后從產(chǎn)品形態(tài)和系統(tǒng)架構(gòu)兩方面闡述NDC在產(chǎn)品交互、集群管理、資源調(diào)度以及跨機(jī)房部署上的設(shè)計(jì)理念,最后介紹NDC實(shí)現(xiàn)數(shù)據(jù)遷移、同步和訂閱的一些原理和關(guān)鍵特性,可以為開(kāi)發(fā)者在實(shí)現(xiàn)類似功能時(shí)提供思路和參考。
應(yīng)用場(chǎng)景
下面通過(guò)三個(gè)真實(shí)案例分別說(shuō)明NDC在數(shù)據(jù)遷移和數(shù)據(jù)訂閱上的應(yīng)用場(chǎng)景。
DDB數(shù)據(jù)遷移
分布式數(shù)據(jù)庫(kù)DDB自2006年就開(kāi)始為網(wǎng)易各大互聯(lián)網(wǎng)產(chǎn)品提供透明的分庫(kù)分表服務(wù),在我們的知名互聯(lián)網(wǎng)產(chǎn)品背后,幾乎都可以看到DDB的身影,如考拉、云音樂(lè)、云閱讀、教育等。
DDB作為分庫(kù)分表的結(jié)構(gòu)化數(shù)據(jù)庫(kù),一張表的數(shù)據(jù)一般存儲(chǔ)在多個(gè)數(shù)據(jù)節(jié)點(diǎn)中,每張表會(huì)選擇一個(gè)或多個(gè)字段作為分區(qū)鍵,來(lái)決定數(shù)據(jù)在數(shù)據(jù)節(jié)點(diǎn)上的分布方式。以用戶表為例,有用戶ID作為主鍵,電話號(hào)碼和郵箱作為唯一健,分區(qū)鍵一般會(huì)選擇這三個(gè)字段中的任意一個(gè)或組合。分區(qū)鍵的選擇決定了數(shù)據(jù)分布均勻與否,隨著業(yè)務(wù)數(shù)據(jù)量的增長(zhǎng),可能會(huì)發(fā)現(xiàn)之前選擇的分區(qū)鍵區(qū)分度不夠高,而需要更改分區(qū)鍵的需求,分區(qū)鍵的修改涉及到數(shù)據(jù)重分布,并且修改過(guò)程要與業(yè)務(wù)的線上服務(wù)同時(shí)進(jìn)行,這就要求DDB提供在線數(shù)據(jù)遷移的解決方案。
與此類似,在業(yè)務(wù)發(fā)展過(guò)程中可能遇到表擴(kuò)容或機(jī)房遷移的情況,都需要DDB的在線數(shù)據(jù)遷移功能,以表擴(kuò)容為例,NDC解決DDB在線數(shù)據(jù)遷移方式如圖1所示。
圖1 NDC解決DDB數(shù)據(jù)遷移問(wèn)題
當(dāng)DBA發(fā)起一個(gè)修改分區(qū)鍵或擴(kuò)容請(qǐng)求時(shí),管理工具會(huì)統(tǒng)一將其解析成一個(gè)數(shù)據(jù)遷移命令,并向NDC服務(wù)發(fā)起相應(yīng)的調(diào)度請(qǐng)求,NDC則根據(jù)調(diào)度規(guī)則選擇一組執(zhí)行節(jié)點(diǎn)執(zhí)行具體遷移過(guò)程,每個(gè)源端數(shù)據(jù)節(jié)點(diǎn)都會(huì)有對(duì)應(yīng)一個(gè)遷移進(jìn)程來(lái)拉取該節(jié)點(diǎn)上的全量數(shù)據(jù)和增量數(shù)據(jù),并將這些數(shù)據(jù)通過(guò)DDB的分庫(kù)分表驅(qū)動(dòng)重新應(yīng)用到目標(biāo)表。當(dāng)目標(biāo)端和源端的數(shù)據(jù)延遲在追趕到毫秒級(jí)范圍內(nèi)后,通過(guò)在DDB管理工具上執(zhí)行切換表操作完成最后的遷移工作。
應(yīng)用緩存更新
應(yīng)用緩存更新是NDC數(shù)據(jù)訂閱一類非常典型的應(yīng)用場(chǎng)景,在沒(méi)有使用數(shù)據(jù)訂閱做緩存更新的應(yīng)用環(huán)境中,緩存數(shù)據(jù)通常由應(yīng)用服務(wù)器自己維護(hù),但是由于緩存操作和數(shù)據(jù)庫(kù)操作不具有事務(wù)性,簡(jiǎn)單的緩存操作可能帶來(lái)數(shù)據(jù)不一致的情況,如圖2所示。
圖2 緩存數(shù)據(jù)庫(kù)不一致問(wèn)題
在圖2場(chǎng)景中,線程2在將緩存更新到最新數(shù)據(jù)后,又被線程1異步滯后地更新成老數(shù)據(jù),由于線程1和線程2沒(méi)有任何狀態(tài)共享,數(shù)據(jù)庫(kù)中后操作的數(shù)據(jù)可能在緩存中被先操作的數(shù)據(jù)覆蓋掉,導(dǎo)致緩存和數(shù)據(jù)庫(kù)數(shù)據(jù)不一致。若這種情況出現(xiàn),除非緩存主動(dòng)淘汰,否則應(yīng)用將始終讀到臟數(shù)據(jù)。
對(duì)上述的數(shù)據(jù)不一致問(wèn)題,業(yè)界也有一種基于CAS的解決方案,但會(huì)對(duì)緩存增加至少一倍以上的壓力。而通過(guò)NDC的數(shù)據(jù)訂閱,可以比較完美地解決上述問(wèn)題,NDC數(shù)據(jù)訂閱將數(shù)據(jù)庫(kù)中的增量數(shù)據(jù)丟入消息隊(duì)列,應(yīng)用讀取消息隊(duì)列的內(nèi)容,并將其同步到緩存系統(tǒng),在這個(gè)過(guò)程中,NDC執(zhí)行節(jié)點(diǎn)和消息隊(duì)列保障高可用,而數(shù)據(jù)庫(kù)增量數(shù)據(jù)具有唯一性和時(shí)序性,可以避免緩存和數(shù)據(jù)庫(kù)的狀態(tài)不一致。
如果說(shuō)使用數(shù)據(jù)訂閱只是緩存更新的一種優(yōu)選方案的話,那對(duì)下面的多機(jī)房緩存淘汰,NDC的數(shù)據(jù)訂閱功能就是必選方案了。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
NDC系統(tǒng)設(shè)計(jì)與應(yīng)用下載
相關(guān)電子資料下載
- 參數(shù)隨機(jī)策略:從randc到off-line cyclic random 118
- 機(jī)器視覺(jué)技術(shù)在醫(yī)藥行業(yè)具體有哪些應(yīng)用? 902
- Anker推出新品Soundcore Liberty Air 2 Pro耳機(jī) 4182
- DSP集團(tuán)收購(gòu)主動(dòng)降噪方案廠商SoundChip 4204
- 二氧化碳CO2傳感器模塊SH-NDC在蘑菇棚中的應(yīng)用原理解析 1514
- Sandcraft改善了與Sapphire的FormIT的時(shí)序關(guān)聯(lián) 1133
- SoundcoreFlare藍(lán)牙音箱體驗(yàn) 面面俱到又獨(dú)具特色 1535
- AnkerSoundcoreSpirit Pro藍(lán)牙耳機(jī)體驗(yàn) 無(wú)論是影音還是游戲都能輕松應(yīng)對(duì) 2705
- GandCrab勒索病毒的解密工具分享 3524
- SoundcoreFlare藍(lán)牙音箱評(píng)測(cè) 499元的售價(jià)值得購(gòu)買(mǎi) 1985