數(shù)據(jù)推送方法和系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明涉及一種數(shù)據(jù)推送方法和系統(tǒng)。該數(shù)據(jù)推送方法包括:抽取任務(wù)創(chuàng)建處理,以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器中,通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器的內(nèi)存中;消息分發(fā)處理,將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器中的相應(yīng)的一個(gè)或多個(gè)消息隊(duì)列中,主題代表邏輯的庫(kù)名,標(biāo)記代表邏輯的表名,每條作為消息被分發(fā)的增量數(shù)據(jù)都包括相應(yīng)的主題和標(biāo)記;以及訂閱推送處理,分布式消息隊(duì)列服務(wù)器基于訂閱端的各個(gè)訂閱任務(wù)訂閱的主題而將所述一個(gè)或多個(gè)消息隊(duì)列推送到訂閱端。
【專(zhuān)利說(shuō)明】數(shù)據(jù)推送方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及基于數(shù)據(jù)庫(kù)增量日志解析的大規(guī)模數(shù)據(jù)流實(shí)時(shí)消費(fèi)技術(shù),更具體地,涉及一種數(shù)據(jù)推送方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著公司業(yè)務(wù)的發(fā)展,對(duì)于大規(guī)模的數(shù)據(jù)抽取的需求越發(fā)強(qiáng)烈。數(shù)據(jù)抽取是指從源端數(shù)據(jù)庫(kù)抽取需要的數(shù)據(jù)。實(shí)際應(yīng)用中,源端數(shù)據(jù)庫(kù)較多采用的是關(guān)系數(shù)據(jù)庫(kù)。常見(jiàn)的數(shù)據(jù)抽取方式包括:(一)全量數(shù)據(jù)抽取,全量數(shù)據(jù)抽取類(lèi)似于數(shù)據(jù)遷移或數(shù)據(jù)復(fù)制,它將源端中的表或視圖的數(shù)據(jù)原封不動(dòng)的從數(shù)據(jù)庫(kù)中抽取出來(lái);(二)增量數(shù)據(jù)抽取,增量數(shù)據(jù)抽取只抽取自上次抽取以來(lái)數(shù)據(jù)庫(kù)中要抽取的表中新增或修改的數(shù)據(jù)。增量數(shù)據(jù)抽取較全量數(shù)據(jù)抽取應(yīng)用更廣。如何捕獲變化的數(shù)據(jù)是增量數(shù)據(jù)抽取的關(guān)鍵。對(duì)捕獲方法一般有兩點(diǎn)要求:準(zhǔn)確性,能夠?qū)I(yè)務(wù)系統(tǒng)中的變化數(shù)據(jù)準(zhǔn)確地捕獲到;性能,盡量減少對(duì)業(yè)務(wù)系統(tǒng)造成太大的壓力,影響現(xiàn)有業(yè)務(wù)。
[0003]在傳統(tǒng)的定時(shí)轉(zhuǎn)儲(chǔ)(dump)增量數(shù)據(jù)的方式已不能滿足需求的情況下,實(shí)時(shí)增量數(shù)據(jù)的獲取成為了解決這一問(wèn)題的趨勢(shì)。數(shù)據(jù)推送平臺(tái)是一套實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)間實(shí)現(xiàn)增/全量的數(shù)據(jù)推送的完整解決方案。增量推送旨在解決大規(guī)模下高效穩(wěn)定的推送增量數(shù)據(jù)給訂閱客戶端以滿足業(yè)務(wù)需求的目的。
[0004]傳統(tǒng)的增量數(shù)據(jù)的抽取方式是定時(shí)轉(zhuǎn)儲(chǔ)增量數(shù)據(jù)生成相應(yīng)的數(shù)據(jù)文件,但這種方式存在以下問(wèn)題:需要在源端業(yè)務(wù)表增加時(shí)間戳字段,一定程度上污染了源端業(yè)務(wù)表;定時(shí)執(zhí)行導(dǎo)致數(shù)據(jù)存在一定程度的延時(shí);轉(zhuǎn)儲(chǔ)出來(lái)的數(shù)據(jù)文件和業(yè)務(wù)關(guān)聯(lián)過(guò)緊,不易被重用;定時(shí)任務(wù)啟動(dòng)時(shí)往往對(duì)源端數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)造成較大的瞬時(shí)壓力。
[0005]而基于數(shù)據(jù)庫(kù)增量日志解析的增量數(shù)據(jù)流很好地解決了上述問(wèn)題,能夠?qū)υ炊藰I(yè)務(wù)表無(wú)侵入,增量數(shù)據(jù)的準(zhǔn)實(shí)時(shí)(只要訂閱端消費(fèi)速度夠快),按需抽取及訂閱數(shù)據(jù),h散,不易出現(xiàn)瞬時(shí)峰值。例如,現(xiàn)有技術(shù)中采用的canal開(kāi)源項(xiàng)目就是基于數(shù)據(jù)庫(kù)增量日志解析,并提供了增量訂閱和消費(fèi)功能。canal能夠很好的實(shí)現(xiàn)數(shù)據(jù)庫(kù)增量日志解析工作,基于canal的功能,我們可以通過(guò)配置抽取任務(wù)從源端抽取增量數(shù)據(jù)暫存于內(nèi)存,然后根據(jù)業(yè)務(wù)需求開(kāi)發(fā)定制的訂閱客戶端。
[0006]圖1示意性地圖示了根據(jù)現(xiàn)有技術(shù)的數(shù)據(jù)推送系統(tǒng)的視圖?,F(xiàn)有技術(shù)的數(shù)據(jù)推送系統(tǒng)100包括:源端數(shù)據(jù)庫(kù)101 ;數(shù)據(jù)庫(kù)增量日志解析服務(wù)器103,基于數(shù)據(jù)庫(kù)增量日志解析,提供增量訂閱和消費(fèi)功能,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器103例如canal服務(wù)器;訂閱端105,用于產(chǎn)生訂閱任務(wù)。
[0007]雖然canal提供了增量數(shù)據(jù)解析的基本功能,但仍然面臨以下幾個(gè)問(wèn)題:
[0008](I).數(shù)據(jù)抽取與數(shù)據(jù)訂閱無(wú)法實(shí)現(xiàn)一對(duì)多
[0009]因?yàn)閏anal增量數(shù)據(jù)不落地(即,數(shù)據(jù)暫存于內(nèi)存)的設(shè)計(jì)所限,canal無(wú)法做到只抽取一次數(shù)據(jù)而被多客戶端訂閱。這也就意味著抽取和訂閱必須成對(duì)出現(xiàn),過(guò)多的抽取任務(wù)加大了抽取源端數(shù)據(jù)庫(kù)的壓力、浪費(fèi)了大量的網(wǎng)絡(luò)流量、降低了單臺(tái)canal服務(wù)器的承載能力和吞吐量。
[0010](2).增量數(shù)據(jù)保存時(shí)間不受控
[0011]此問(wèn)題也和上述設(shè)計(jì)有關(guān),因?yàn)樵隽繑?shù)據(jù)不落地,且源端數(shù)據(jù)庫(kù)的日志保存時(shí)間不能由數(shù)據(jù)推送平臺(tái)控制,所以數(shù)據(jù)推送平臺(tái)也無(wú)法對(duì)下游的訂閱端承諾增量數(shù)據(jù)保存期限。這也降低了數(shù)據(jù)推送平臺(tái)對(duì)外提供服務(wù)的能力。
[0012](3).訂閱端與抽取端依賴過(guò)強(qiáng)
[0013]這里的依賴分為兩方面。
[0014]系統(tǒng)層面:抽取端與訂閱端是基于長(zhǎng)連接下的串行處理,訂閱端的消費(fèi)速度直接影響抽取端的抽取速度。
[0015]業(yè)務(wù)層面:抽取端任務(wù)是以數(shù)據(jù)庫(kù)實(shí)例為邊界的,無(wú)法對(duì)訂閱端屏蔽源端分庫(kù)分表等訂閱端本不該關(guān)心的信息,也就導(dǎo)致了抽取任務(wù)和訂閱任務(wù)間更強(qiáng)的耦合。
[0016](4).訂閱端缺少常用功能支持
[0017]canal本身只專(zhuān)注與數(shù)據(jù)的抽取與訂閱,而對(duì)于訂閱端一些常用的功能支持較弱,比如:雖然通過(guò)canal的訂閱端SDK (Software Development Kit:軟件開(kāi)發(fā)工具包)可以獲取增量的結(jié)構(gòu)體數(shù)據(jù),但對(duì)于將結(jié)構(gòu)體數(shù)據(jù)解析、轉(zhuǎn)化成相應(yīng)DML (Data Manipulat1nLanguage:數(shù)據(jù)操縱語(yǔ)言)并最終插入目標(biāo)DB (Database:數(shù)據(jù)庫(kù))這種最常見(jiàn)的應(yīng)用場(chǎng)景支持不足。另一個(gè)開(kāi)源項(xiàng)目otter(項(xiàng)目的開(kāi)源鏈接地址:https://github.com/alibaba/otter)雖然支持上述的部分功能,但仍然無(wú)法滿足復(fù)雜靈活的定制需求。
【發(fā)明內(nèi)容】
[0018]根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)推送方法,包括:抽取任務(wù)創(chuàng)建處理,以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器中,通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器的內(nèi)存中;消息分發(fā)處理,將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器中的相應(yīng)的一個(gè)或多個(gè)消息隊(duì)列中,主題代表邏輯的庫(kù)名,標(biāo)記代表邏輯的表名,每條作為消息被分發(fā)的增量數(shù)據(jù)都包括相應(yīng)的主題和標(biāo)記;以及訂閱推送處理,分布式消息隊(duì)列服務(wù)器基于訂閱端的各個(gè)訂閱任務(wù)訂閱的主題而將所述一個(gè)或多個(gè)消息隊(duì)列推送到訂閱端。
[0019]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)推送系統(tǒng),包括:源端數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)增量日志解析服務(wù)器;分布式消息隊(duì)列服務(wù)器;和訂閱端,其中,以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器中,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器的內(nèi)存中;數(shù)據(jù)庫(kù)增量日志解析服務(wù)器將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器中的相應(yīng)的一個(gè)或多個(gè)消息隊(duì)列中,主題代表邏輯的庫(kù)名,標(biāo)記代表邏輯的表名,每條作為消息被分發(fā)的增量數(shù)據(jù)都包括相應(yīng)的主題和標(biāo)記;以及分布式消息隊(duì)列服務(wù)器基于訂閱端的各個(gè)訂閱任務(wù)訂閱的主題而將所述一個(gè)或多個(gè)消息隊(duì)列推送到訂閱端。
[0020]本發(fā)明通過(guò)引入持久化消息隊(duì)列手段,可以實(shí)現(xiàn)只抽取一次數(shù)據(jù)而被多客戶端訂閱,也就是說(shuō)抽取和訂閱不必成對(duì)出現(xiàn),從而也極大的降低了網(wǎng)絡(luò)的流量,使得增量數(shù)據(jù)被多訂閱端消費(fèi)成為可能,極大的提高了服務(wù)器的承載能力及使用效率。此外,訂閱端通過(guò)使用基于RocketMQ client封裝后的專(zhuān)用SDK,可以實(shí)現(xiàn)訂閱端的定制開(kāi)發(fā),從而滿足復(fù)雜靈活的定制需求。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0021]圖1示意性地圖示了根據(jù)現(xiàn)有技術(shù)的數(shù)據(jù)推送系統(tǒng)的視圖。
[0022]圖2示意性地圖示了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)推送系統(tǒng)的視圖。
[0023]圖3示意性地圖示了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)推送方法的流程圖。
【具體實(shí)施方式】
[0024]下面將參照附圖詳細(xì)解釋根據(jù)本發(fā)明的實(shí)施例的技術(shù)方案。
[0025]術(shù)語(yǔ)“轉(zhuǎn)儲(chǔ)”(“dump”)含義是指將MySQL里的數(shù)據(jù)(可含數(shù)據(jù)結(jié)構(gòu))導(dǎo)出成文本文件,以便在在其它數(shù)據(jù)庫(kù)實(shí)例上導(dǎo)入或者作為其它應(yīng)用或系統(tǒng)的輸入數(shù)據(jù)。
[0026]圖2示意性地圖示了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)推送系統(tǒng)的視圖。如圖2所示,數(shù)據(jù)推送系統(tǒng)200包括:源端數(shù)據(jù)庫(kù)201,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203,分布式消息隊(duì)列服務(wù)器205,訂閱端207。出于說(shuō)明的目的,圖2中僅圖示了三個(gè)消息隊(duì)列1、2、3和分別與之相對(duì)應(yīng)的三個(gè)訂閱任務(wù)1、2、3,但是本領(lǐng)域技術(shù)人員理解,本發(fā)明不限于此,可以有更多或更少的消息隊(duì)列和訂閱任務(wù)。
[0027]源端數(shù)據(jù)庫(kù)201不限于某種特定類(lèi)型數(shù)據(jù)庫(kù),例如可以是MySQL數(shù)據(jù)庫(kù)?!癕ySQL”是一個(gè)開(kāi)放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng)。
[0028]數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203用于基于數(shù)據(jù)庫(kù)增量日志解析,提供增量訂閱和消費(fèi)功能。數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203例如可以是canal服務(wù)器?!癱anal”是基于MySQL數(shù)據(jù)庫(kù)增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi)功能。canal項(xiàng)目的開(kāi)源鏈接地址:https://github.com/alibaba/canal。
[0029]分布式消息隊(duì)列服務(wù)器205用于提供分布式、持久化消息隊(duì)列服務(wù),其具有保證消息的順序以及消息持久化的特點(diǎn),從而可以滿足增量數(shù)據(jù)的特點(diǎn)(強(qiáng)順序)以及持久化(persistence)需求的特點(diǎn)??筛鶕?jù)部署分布式消息隊(duì)列服務(wù)器205磁盤(pán)大小情況對(duì)外承諾數(shù)據(jù)的保留天數(shù),只要數(shù)據(jù)在保留的有效期內(nèi)訂閱端可以從任意位置消費(fèi)數(shù)據(jù)。分布式消息隊(duì)列服務(wù)器205例如可以是RocketMQ服務(wù)器?!癛ocketMQ”是一款分布式、隊(duì)列模型的消息中間件,具有以下特點(diǎn):支持嚴(yán)格的消息順序;支持主題(Topic)與隊(duì)列(Queue)兩種模式;億級(jí)消息堆積能力;比較友好的分布式特性;同時(shí)支持推(Push)與拉取(Pull)方式消費(fèi)消息。RocketMQ 項(xiàng)目的開(kāi)源鏈接地址:https://github.com/alibaba/RocketMQ。通過(guò)上述例如RocketMQ的分布式消息隊(duì)列中間件的引入,大大提高了系統(tǒng)的擴(kuò)展性,可以根據(jù)業(yè)務(wù)數(shù)據(jù)量的大小及時(shí)調(diào)整增量數(shù)據(jù)在不同分布式消息隊(duì)列服務(wù)器上的分布情況,以達(dá)到快速擴(kuò)展的目的。術(shù)語(yǔ)“中間件”是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源。
[0030]訂閱端207,用于產(chǎn)生訂閱任務(wù)。雖然圖2示意性地圖示了一個(gè)訂閱端207訂閱了三個(gè)訂閱任務(wù)1、2、3,但是本領(lǐng)域技術(shù)人員理解,本發(fā)明不限于此,訂閱端的數(shù)目可以是一個(gè)或多個(gè),并且每個(gè)訂閱端的訂閱任務(wù)可以是一個(gè)或多個(gè)。如果訂閱端207是最常見(jiàn)的數(shù)據(jù)庫(kù)推送場(chǎng)景,只需做一些最簡(jiǎn)單的訂閱配置(如訂閱的主題及目標(biāo)DB)即可啟動(dòng)訂閱端207而無(wú)需再做開(kāi)發(fā)。如果訂閱端207需要定制開(kāi)發(fā),那么可使用基于例如RocketMQclient封裝后的專(zhuān)用SDK,指定好訂閱主題后即可獲得增量數(shù)據(jù)。多個(gè)訂閱端可同時(shí)訂閱相同主題的增量數(shù)據(jù),且相互之間沒(méi)有影響。通過(guò)開(kāi)發(fā)通用的模塊供訂閱端使用,可以達(dá)到降低訂閱端開(kāi)發(fā)及維護(hù)成本的目的。通用模塊的的開(kāi)發(fā)使得訂閱端在常見(jiàn)場(chǎng)景下的開(kāi)發(fā)成本大大降低,并使得訂閱端與抽取端解耦,不必感知抽取端的分庫(kù)分表信息,使整體方案更易于擴(kuò)展。通過(guò)模塊化設(shè)計(jì)及對(duì)抽取訂閱任務(wù)有效的邊界劃分,配合現(xiàn)有的自動(dòng)化部署系統(tǒng),可方便的對(duì)訂閱抽取任務(wù)進(jìn)行管理維護(hù),大大降低對(duì)線上的運(yùn)維工作量。
[0031]圖3示意性地圖示了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)推送方法的流程圖。
[0032]如圖3所示,在步驟301中,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203創(chuàng)建抽取任務(wù),以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)201轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203中,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203的內(nèi)存中。
[0033]在步驟303中,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器205中的消息隊(duì)列1、2、3中,每條作為消息的增量數(shù)據(jù)都包含各自的主題和標(biāo)記以便訂閱端207訂閱和過(guò)濾,所述主題代表邏輯的庫(kù)名,所述標(biāo)記代表邏輯的表名。這里所說(shuō)的需要的規(guī)則是指源增量數(shù)據(jù)的庫(kù)表信息到隊(duì)列主題及標(biāo)記的映射規(guī)則,最常見(jiàn)的應(yīng)用場(chǎng)景是源端進(jìn)行了分庫(kù)分表,如庫(kù)名:product_pop_l、product_pop_2….product_pop_N 會(huì)映射到隊(duì)列的 product_pop 主題,同理,表名sku_N被映射到標(biāo)記sku。這種規(guī)則可根據(jù)業(yè)務(wù)需要自由定義。
[0034]在步驟305中,分布式消息隊(duì)列服務(wù)器205基于訂閱端207的各個(gè)訂閱任務(wù)1、2、3訂閱的主題而將消息隊(duì)列1、2、3推送到訂閱端207。
[0035]過(guò)去的抽取任務(wù)并不是以數(shù)據(jù)庫(kù)實(shí)例為單位的,是以一組業(yè)務(wù)相關(guān)的邏輯庫(kù)表為單位的,一個(gè)數(shù)據(jù)庫(kù)實(shí)例上會(huì)有很多的邏輯庫(kù)表,所以過(guò)去的抽取任務(wù)會(huì)在一個(gè)數(shù)據(jù)庫(kù)實(shí)例上根據(jù)業(yè)務(wù)庫(kù)表組的個(gè)數(shù)開(kāi)啟多個(gè)抽取數(shù)據(jù)的連接。這也就是圖1中源端數(shù)據(jù)庫(kù)101和數(shù)據(jù)庫(kù)增量日志解析服務(wù)器103的連接(轉(zhuǎn)儲(chǔ)1-3)有3個(gè),而圖2中的源端數(shù)據(jù)庫(kù)201和數(shù)據(jù)庫(kù)增量日志解析服務(wù)器203的連接只有I個(gè)的原因。與之對(duì)比,根據(jù)本發(fā)明上述實(shí)施例的數(shù)據(jù)推送系統(tǒng)和方法,通過(guò)使得增量數(shù)據(jù)的推送使用持久化消息隊(duì)列手段,因?yàn)槌槿∪蝿?wù)的創(chuàng)建以數(shù)據(jù)庫(kù)實(shí)例為邊界,相比過(guò)去的抽取任務(wù)方式,直接降低了源端數(shù)據(jù)庫(kù)的壓力,從而由如圖1示意性地圖示3個(gè)(實(shí)際應(yīng)用場(chǎng)景中為幾十甚至上百的)轉(zhuǎn)儲(chǔ)鏈接減少為如圖2所示的I個(gè),而且抽取和訂閱不必再成對(duì)出現(xiàn),從而也極大的降低了網(wǎng)絡(luò)的流量,使得增量數(shù)據(jù)被多訂閱端消費(fèi)成為可能,極大的提高了服務(wù)器的承載能力及使用效率。
[0036]上述實(shí)施例僅是本發(fā)明的優(yōu)選實(shí)施例,并不用于限制本發(fā)明。對(duì)本領(lǐng)域技術(shù)人員顯而易見(jiàn)的是,在不脫離本發(fā)明的精神和范圍的情況下,可以對(duì)本發(fā)明的實(shí)施例進(jìn)行各種修改和改變。因此,本發(fā)明意在涵蓋落入如權(quán)利要求所限定的本發(fā)明的范圍之內(nèi)的所有這樣的修改或變型。
【權(quán)利要求】
1.一種數(shù)據(jù)推送方法,包括: 抽取任務(wù)創(chuàng)建處理,以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器中,通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器的內(nèi)存中; 消息分發(fā)處理,將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器中的相應(yīng)的一個(gè)或多個(gè)消息隊(duì)列中,主題代表邏輯的庫(kù)名,標(biāo)記代表邏輯的表名,每條作為消息被分發(fā)的增量數(shù)據(jù)都包括相應(yīng)的主題和標(biāo)記;以及 訂閱推送處理,分布式消息隊(duì)列服務(wù)器基于訂閱端的各個(gè)訂閱任務(wù)訂閱的主題而將所述一個(gè)或多個(gè)消息隊(duì)列推送到訂閱端。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)推送方法, 其中,所述源端數(shù)據(jù)庫(kù)是MySQL數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)增量日志解析服務(wù)器是canal服務(wù)器,并且所述分布式消息隊(duì)列服務(wù)器是RocketMQ服務(wù)器。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)推送方法, 其中,所述訂閱端是通過(guò)使用基于RocketMQ client封裝后的專(zhuān)用SDK而定制開(kāi)發(fā)。
4.一種數(shù)據(jù)推送系統(tǒng),包括: 源端數(shù)據(jù)庫(kù); 數(shù)據(jù)庫(kù)增量日志解析服務(wù)器; 分布式消息隊(duì)列服務(wù)器;和 訂閱端, 其中, 以數(shù)據(jù)庫(kù)實(shí)例為邊界將數(shù)據(jù)從源端數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)到數(shù)據(jù)庫(kù)增量日志解析服務(wù)器中,數(shù)據(jù)庫(kù)增量日志解析服務(wù)器通過(guò)數(shù)據(jù)庫(kù)增量日志解析獲得增量數(shù)據(jù),并且將獲得的增量數(shù)據(jù)暫存于數(shù)據(jù)庫(kù)增量日志解析服務(wù)器的內(nèi)存中; 數(shù)據(jù)庫(kù)增量日志解析服務(wù)器將獲得的增量數(shù)據(jù)按照需要的規(guī)則以相應(yīng)的主題和標(biāo)記作為消息分發(fā)到分布式消息隊(duì)列服務(wù)器中的相應(yīng)的一個(gè)或多個(gè)消息隊(duì)列中,主題代表邏輯的庫(kù)名,標(biāo)記代表邏輯的表名,每條作為消息被分發(fā)的增量數(shù)據(jù)都包括相應(yīng)的主題和標(biāo)記;以及 分布式消息隊(duì)列服務(wù)器基于訂閱端的各個(gè)訂閱任務(wù)訂閱的主題而將所述一個(gè)或多個(gè)消息隊(duì)列推送到訂閱端。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)推送系統(tǒng), 其中,所述源端數(shù)據(jù)庫(kù)是MySQL數(shù)據(jù)庫(kù),所述數(shù)據(jù)庫(kù)增量日志解析服務(wù)器是canal服務(wù)器,并且所述分布式消息隊(duì)列服務(wù)器是RocketMQ服務(wù)器。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)推送系統(tǒng), 其中,所述訂閱端是通過(guò)使用基于RocketMQ client封裝后的專(zhuān)用SDK而定制開(kāi)發(fā)。
【文檔編號(hào)】G06F17/30GK104408132SQ201410706244
【公開(kāi)日】2015年3月11日 申請(qǐng)日期:2014年11月28日 優(yōu)先權(quán)日:2014年11月28日
【發(fā)明者】秦寶齊, 羅元旺 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司