生成與所述業(yè)務事件數(shù)據(jù)對應的唯一標識符;
系統(tǒng)自動生成的唯一標示符,是用來唯一辨別事件數(shù)據(jù)的資訊,即每個事件都有與其他事件不沖突的標示符。通過唯一標示符,可以對事件進行識別、追溯、補發(fā)等。
[0029]S102:事件轉發(fā)裝置讀取所述發(fā)送隊列中的業(yè)務事件數(shù)據(jù),基于可配置的事件轉發(fā)表將所述業(yè)務事件數(shù)據(jù)轉發(fā)至事件接收裝置中;
事件轉發(fā)裝置從發(fā)送隊列kafka中讀取事件處理并分發(fā)到系統(tǒng)配置的camel路由規(guī)則中。
[0030]camel路由接受到事件后按照配置的規(guī)則對數(shù)據(jù)進行增強、組裝等處理,處理后的結果通過事件轉發(fā)裝置進行分發(fā)。分發(fā)通過配置可以是dubbo接口、kafka (訂閱隊列)、rest接口等多種形式。
[0031]S103:事件接收裝置接收所述事件轉發(fā)裝置轉發(fā)的業(yè)務事件數(shù)據(jù)。
[0032]通過本實施例一提供的上述方法,可以借助事件消息的傳遞完成系統(tǒng)間的合作,實現(xiàn)事件發(fā)送與接收方調(diào)用的異步化、徹底解耦,提高了系統(tǒng)性能并大幅改善應用的擴展性。
[0033]在業(yè)務高峰期,事件可暫存在系統(tǒng)隊列里等待處理,減輕事件接收者負載壓力,有效抵御業(yè)務并發(fā)高峰對系統(tǒng)的沖擊。
[0034]同時,由于事件發(fā)送者不需要等待消息接受者處理就可返回,故系統(tǒng)具有更好的響應延遲。
[0035]進一步的,所述生成與所述業(yè)務事件數(shù)據(jù)對應的唯一標識符之后,還包括:
實時獲取并記錄源應用系統(tǒng)中已發(fā)送的業(yè)務事件數(shù)據(jù)對應的已發(fā)送標識符和發(fā)送隊列中接收到的業(yè)務事件數(shù)據(jù)對應的接收標識符;
比較所述已發(fā)送標識符與接收標識符是否一致,得到不一致的已發(fā)送標識符。
[0036]存儲所述不一致的已發(fā)送標識符。
[0037]獲取與所述不一致的已發(fā)送標識符對應的業(yè)務事件數(shù)據(jù),將所述業(yè)務事件數(shù)據(jù)發(fā)送至發(fā)送隊列中。
[0038]進一步的,所述事件轉發(fā)裝置讀取所述發(fā)送隊列中的業(yè)務事件數(shù)據(jù),具體包括: 對讀取所述事件發(fā)送裝置發(fā)送的業(yè)務事件數(shù)據(jù)進行增強處理,對增強處理后的業(yè)務事件數(shù)據(jù)進行異步處理并按區(qū)間記錄已經(jīng)轉發(fā)的業(yè)務事件數(shù)據(jù),基于上述記錄的業(yè)務事件數(shù)據(jù)計算出轉發(fā)故障的事件并執(zhí)行補發(fā)動作。
[0039]數(shù)據(jù)增強處理是根據(jù)在系統(tǒng)預設的規(guī)則,從指定數(shù)據(jù)源中提取更多信息來豐富數(shù)據(jù)對象的屬性,存儲集成到事件消息中,為事件接收方做深入處理提供可能,是為深入挖掘和展現(xiàn)數(shù)據(jù)對象信息而提供的功能。
[0040]數(shù)據(jù)增強處理的步驟包括:
定義數(shù)據(jù)來源:數(shù)據(jù)來源即要對從事件接收的數(shù)據(jù)進行增強,附加額外的數(shù)據(jù)的配置。最終將所有增強后的數(shù)據(jù)發(fā)往“目標數(shù)據(jù)”
目標數(shù)據(jù):數(shù)據(jù)的目的地,從“數(shù)據(jù)來源”或“事件”中獲取增強過的結果集和事件消息體,發(fā)送到“目標數(shù)據(jù)”所配置的規(guī)則中。
[0041]定義增強規(guī)則:“規(guī)則”即從接口獲取數(shù)據(jù)的配置,包括但不僅限于SQL、DUBB0、REST等方式。規(guī)則可以采用特殊的配置從上一級獲取參數(shù),每條“規(guī)則”會返回一個結果集,該結果集可以用于下一級規(guī)則的輸入?yún)?shù),也可以作為整個組的結果集發(fā)往“目標數(shù)據(jù)”。
[0042]定義組:規(guī)則配置以組為單位,組有“串行”與“并行”兩種,組與組之前為并行關系O
[0043]定義并行:處于并行組下的“規(guī)則”,其結果集都是互不影響的,規(guī)則的結果集都將發(fā)送到“目標數(shù)據(jù)”
定義串行:處于串行組下的“規(guī)則”,只會取最后一個規(guī)則的結果集發(fā)往“目標數(shù)據(jù)”。
[0044]更進一步的,所述基于上述記錄的業(yè)務事件數(shù)據(jù)計算出轉發(fā)故障的事件并執(zhí)行補發(fā)動作具體包括:
將記錄的業(yè)務事件數(shù)據(jù)與發(fā)送隊列中的業(yè)務事件數(shù)據(jù)進行比對,得到未正常轉發(fā)的事件,并執(zhí)行補發(fā)動作。
[0045]進一步的,所述事件接收裝置接收所述事件轉發(fā)裝置轉發(fā)的業(yè)務事件數(shù)據(jù)之后,還包括:
獲取所述事件接收裝置中接收到的業(yè)務事件數(shù)據(jù)對應的待篩選標識符和源應用系統(tǒng)中已發(fā)送的業(yè)務事件數(shù)據(jù)對應的已發(fā)送標識符。
[0046]將重復的待篩選標識符刪除,得到篩選后標識符。
[0047]比較所述已發(fā)送標識符與所述篩選后標識符是否一致,得到不一致的已發(fā)送標識符;
根據(jù)不一致的已發(fā)送標識符,獲取與所述已發(fā)送標識符對應的業(yè)務事件數(shù)據(jù)。
[0048]事件接收保障模塊記錄已轉發(fā)的業(yè)務事件數(shù)據(jù)到數(shù)據(jù)庫中。在發(fā)生故障時,系統(tǒng)的事件數(shù)據(jù)將短時間內(nèi)處于不一致狀態(tài)?;谑录D發(fā)表的數(shù)據(jù),并通過恢復機制,將使系統(tǒng)恢復到一致。保證了事件消息不漏發(fā)、不重發(fā)、不重復接收。
[0049]實施例二
本發(fā)明實施例另一方面提供了一種事件發(fā)送與接收的處理系統(tǒng),該系統(tǒng)包括:
事件發(fā)送裝置201,用于將源應用系統(tǒng)中的業(yè)務事件數(shù)據(jù)發(fā)送至發(fā)送隊列中,并生成與所述業(yè)務事件數(shù)據(jù)對應的唯一標識符;
系統(tǒng)自動生成的唯一標示符,是用來唯一辨別事件數(shù)據(jù)的資訊,即每個事件都有與其他事件不沖突的標示符。通過唯一標示符,可以對事件進行識別、追溯、補發(fā)等。
[0050]事件轉發(fā)裝置202,用于讀取所述發(fā)送隊列中的業(yè)務事件數(shù)據(jù),基于可配置的事件轉發(fā)表將所述業(yè)務事件數(shù)據(jù)轉發(fā)至事件接收裝置中;
事件轉發(fā)裝置從發(fā)送隊列kafka中讀取事件處理并分發(fā)到系統(tǒng)配置的camel路由規(guī)則中。
[0051]camel路由接受到事件后按照配置的規(guī)則對數(shù)據(jù)進行增強、組裝等處理,處理后的結果通過事件轉發(fā)裝置進行分發(fā)。分發(fā)通過配置可以是dubbo接口、kafka (訂閱隊列)、rest接口等多種形式。
[0052]事件接收裝置203,用于接收所述事件轉發(fā)裝置轉發(fā)的業(yè)務事件數(shù)據(jù)。
[0053]進一步的,所述事件發(fā)送裝置201包括:
事件記錄模塊211,用于實時獲取并記錄源應用系統(tǒng)中已發(fā)送的業(yè)務事件數(shù)據(jù)對應的已發(fā)送標識符和發(fā)送隊列中接收到的業(yè)務事件數(shù)據(jù)對應的接收標識符;
事件比較模塊221,用于比較所述事件記錄模塊中的已發(fā)送標識符與接收標識符是否一致,得到不一致的已發(fā)送標識符;
事件存儲模塊231,用于存儲所述事件比較模塊中不一致的已發(fā)送標識符;
事件發(fā)送保障模塊241,用于獲取與所述事件存儲模塊中存儲的已發(fā)送標識符對應的業(yè)務事件數(shù)據(jù),將所述業(yè)務事件數(shù)據(jù)發(fā)送至發(fā)送隊列中。
[0054]進一步的,所述事件轉發(fā)裝置202包括:
事件增強模塊212,用于對讀取所述事件發(fā)送裝置發(fā)送的業(yè)務事件進行增強處理;事件記錄模塊222,用于對增強處理后的業(yè)務事件數(shù)據(jù)進行異步處理并按區(qū)間記錄已經(jīng)轉發(fā)的業(yè)務事件數(shù)據(jù)。
[0055]事件轉發(fā)保障模塊232,用于基于事件記錄模塊記錄的業(yè)務事件數(shù)據(jù)計算出轉發(fā)故障的事件并執(zhí)行補發(fā)動作。
[0056]所述事件轉發(fā)保障模塊232包括:
比對單元,用于將記錄的業(yè)務事件數(shù)據(jù)與發(fā)送隊列中的業(yè)務事件數(shù)據(jù)進行比對,得到未正常轉發(fā)的事件;
補發(fā)單元,用于將比對單元的得到的未正常轉發(fā)的事件進行補發(fā)。
[0057]數(shù)據(jù)增強處理是根據(jù)在系統(tǒng)預設的規(guī)則,從指定數(shù)據(jù)源中提取更多信息來豐富數(shù)據(jù)對象的屬性,存儲集成到事件消息中,為事件接收方做深入處理提供可能,是為深入挖掘和展現(xiàn)數(shù)據(jù)對象信息而提供的功能。
[0058]數(shù)據(jù)增強處理的步驟包括:
定義數(shù)據(jù)來源:數(shù)據(jù)來源即要對從事件接收的數(shù)據(jù)進行增強,附加額外的數(shù)據(jù)的配置。最終將所有增強后的數(shù)據(jù)發(fā)往“目標數(shù)據(jù)”
目標數(shù)據(jù):數(shù)據(jù)的目的地,從“數(shù)據(jù)