• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法技術(shù)

    技術(shù)編號:40366947 閱讀:18 留言:0更新日期:2024-02-20 22:13
    本發(fā)明專利技術(shù)特別涉及一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法。該領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,將系統(tǒng)中發(fā)生的每一件事情,都以事件形式捕獲,通過領(lǐng)域驅(qū)動設(shè)計模式對領(lǐng)域事件進(jìn)行建模;對聚合進(jìn)行命令操作時,聚合本身將領(lǐng)域事件發(fā)布給訂閱方處理;領(lǐng)域事件發(fā)布后,訂閱方先存儲事件,然后再將其轉(zhuǎn)發(fā)到遠(yuǎn)程訂閱方,或不經(jīng)存儲,直接轉(zhuǎn)發(fā)給遠(yuǎn)程訂閱方;通過事件監(jiān)聽器監(jiān)聽發(fā)布的領(lǐng)域事件,進(jìn)行業(yè)務(wù)數(shù)據(jù)的異步傳輸,訂閱者進(jìn)行數(shù)據(jù)業(yè)務(wù)處理,進(jìn)行數(shù)據(jù)清洗或者根據(jù)具體業(yè)務(wù)進(jìn)行數(shù)據(jù)存儲/數(shù)據(jù)分析。該領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,數(shù)據(jù)源擴(kuò)展性強(qiáng),靈活可靠,且不受網(wǎng)絡(luò)因素制約,能夠在復(fù)雜的業(yè)務(wù)模式下靈活的傳輸數(shù)據(jù),大大提高了程序的方便性。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專利技術(shù)涉及領(lǐng)域驅(qū)動設(shè)計,特別涉及一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法


    技術(shù)介紹

    1、隨著系統(tǒng)業(yè)務(wù)復(fù)雜性越來越高,對數(shù)據(jù)的可擴(kuò)展性和傳輸性要求也越來越高。比如一個危貨運(yùn)輸代理商要入駐一個危貨運(yùn)輸企業(yè),就需要把代理商下的所有基礎(chǔ)數(shù)據(jù)同步給這個企業(yè)。包括賬號關(guān)系、設(shè)備類型與企業(yè)關(guān)系、作業(yè)活動與企業(yè)關(guān)系、安全檢查項(xiàng)目、部門組織架構(gòu)、崗位關(guān)系等等。這種應(yīng)用場景下,對與業(yè)務(wù)數(shù)據(jù)的可擴(kuò)展性、傳輸速率等性能要求比較高。

    2、領(lǐng)域事件(domain?events)是領(lǐng)域驅(qū)動設(shè)計(domain?driven?design,簡稱ddd)中的一個概念,用于捕獲我們所建模的領(lǐng)域中所發(fā)生過的事情。比如:“如果發(fā)生……,則……”,“當(dāng)做完……的時候,請通知……”(這里的通知本身并不能構(gòu)成一個事件,而只是表明需要向外界發(fā)出通知)。在這些場景中,如果發(fā)生某種事件后,會觸發(fā)進(jìn)一步的操作,那這個事件可能就是領(lǐng)域事件。由于領(lǐng)域事件需要發(fā)布到外部系統(tǒng),比如發(fā)布到另一個限界上下文。由于這樣的事件由訂閱方處理,它將對本地和遠(yuǎn)程上下文產(chǎn)生深遠(yuǎn)的影響。

    3、領(lǐng)域事件本身也作為通用語言(ubiquitous?language)的一部分,成為包括領(lǐng)域?qū)<以趦?nèi)的所有項(xiàng)目成員的交流用語。首先,從業(yè)務(wù)邏輯來說該事件關(guān)系到整個流程的成功或者失敗;同時又將觸發(fā)后續(xù)子流程。而對于業(yè)務(wù)方來說,該事件也是一個標(biāo)志性的里程碑,代表自己的數(shù)據(jù)同步到自己管轄下的子機(jī)構(gòu)的身上。所以通常來說,一個領(lǐng)域事件具有以下幾個特征:較高的業(yè)務(wù)價值,有助于形成完整的業(yè)務(wù)閉環(huán),將導(dǎo)致進(jìn)一步的業(yè)務(wù)操作。

    4、還需要強(qiáng)調(diào)的是,領(lǐng)域事件具有明確的邊界。本地限界上下文中的其他聚合實(shí)例便可以通過領(lǐng)域事件的方式同步,用于使遠(yuǎn)程依賴系統(tǒng)與本地系統(tǒng)保持一致。解耦本地系統(tǒng)和遠(yuǎn)程系統(tǒng)還有助于提高雙方協(xié)作服務(wù)的可伸縮性。

    5、為了解決項(xiàng)目前期不可明確的復(fù)雜業(yè)務(wù)數(shù)據(jù)的傳輸以及之后的擴(kuò)展復(fù)用問題,本專利技術(shù)提出了一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法。


    技術(shù)實(shí)現(xiàn)思路

    1、本專利技術(shù)為了彌補(bǔ)現(xiàn)有技術(shù)的缺陷,提供了一種簡單高效的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法。

    2、本專利技術(shù)是通過如下技術(shù)方案實(shí)現(xiàn)的:

    3、一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:包括以下步驟:

    4、步驟s1:創(chuàng)建領(lǐng)域事件

    5、將系統(tǒng)中發(fā)生的每一件事情,都以事件形式捕獲,通過領(lǐng)域驅(qū)動設(shè)計模式對領(lǐng)域事件進(jìn)行建模;

    6、步驟s2:事件發(fā)布

    7、對聚合進(jìn)行命令操作時,聚合本身將領(lǐng)域事件發(fā)布給訂閱方處理;

    8、步驟s3:事件訂閱

    9、領(lǐng)域事件發(fā)布后,訂閱方先存儲事件,然后再將其轉(zhuǎn)發(fā)到遠(yuǎn)程訂閱方,或不經(jīng)存儲,直接轉(zhuǎn)發(fā)給遠(yuǎn)程訂閱方;

    10、步驟s4:業(yè)務(wù)處理

    11、通過事件監(jiān)聽器監(jiān)聽發(fā)布的領(lǐng)域事件,進(jìn)行業(yè)務(wù)數(shù)據(jù)的異步傳輸,訂閱者進(jìn)行數(shù)據(jù)業(yè)務(wù)處理,進(jìn)行數(shù)據(jù)清洗或者根據(jù)具體業(yè)務(wù)進(jìn)行數(shù)據(jù)存儲/數(shù)據(jù)分析。

    12、所述步驟s1中,在創(chuàng)建領(lǐng)域事件時,領(lǐng)域事件本身是不變的(immutable);同時領(lǐng)域事件攜帶與事件發(fā)生時相關(guān)的上下文數(shù)據(jù)信息,但是并不攜帶整個聚合根的狀態(tài)數(shù)據(jù)。

    13、所述步驟s1中,根據(jù)業(yè)務(wù)和邏輯確定好關(guān)聯(lián)的實(shí)體和值對象,創(chuàng)建一個領(lǐng)域事件,并繼承applicationevent(應(yīng)用程序事件)事件。

    14、為了維護(hù)領(lǐng)域模型的獨(dú)立性和數(shù)據(jù)一致性,所述步驟s2中,事件發(fā)布完成后,發(fā)布方不必關(guān)心后續(xù)訂閱方事件處理是否成功,直接實(shí)現(xiàn)領(lǐng)域模型的解耦。

    15、所述步驟s2中,在領(lǐng)域模型映射到微服務(wù)架構(gòu)時,領(lǐng)域事件解耦微服務(wù),微服務(wù)間的數(shù)據(jù)不必要求強(qiáng)一致性,而是基于事件的最終一致性。

    16、所述步驟s2中,通過事件發(fā)布器eventpublisher注入applicationcontex(應(yīng)用程序上下文)的publishevent(發(fā)布事件)方法發(fā)布領(lǐng)域事件。

    17、所述步驟s4中,配置異步任務(wù),并啟動線程池執(zhí)行異步任務(wù);添加@async注解,調(diào)用異步線程,訂閱者采用addedeventlistener()方法實(shí)現(xiàn)applicationlistener接口,用于監(jiān)聽領(lǐng)域事件,并重寫onapplicationevent方法。

    18、一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)設(shè)備,其特征在于:包括存儲器和處理器;所述存儲器用于存儲計算機(jī)程序,所述處理器用于執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)如上所述的方法步驟。

    19、一種可讀存儲介質(zhì),其特征在于:所述可讀存儲介質(zhì)上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如上所述的方法步驟。

    20、本專利技術(shù)的有益效果是:該領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,數(shù)據(jù)源擴(kuò)展性強(qiáng),靈活可靠,且不受網(wǎng)絡(luò)因素制約,能夠在復(fù)雜的業(yè)務(wù)模式下靈活的傳輸數(shù)據(jù),大大提高了程序的方便性。

    本文檔來自技高網(wǎng)...

    【技術(shù)保護(hù)點(diǎn)】

    1.一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:包括以下步驟:

    2.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟S1中,在創(chuàng)建領(lǐng)域事件時,領(lǐng)域事件本身是不變的;同時領(lǐng)域事件攜帶與事件發(fā)生時相關(guān)的上下文數(shù)據(jù)信息,但是并不攜帶整個聚合根的狀態(tài)數(shù)據(jù)。

    3.根據(jù)權(quán)利要求2所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟S1中,根據(jù)業(yè)務(wù)和邏輯確定好關(guān)聯(lián)的實(shí)體和值對象,創(chuàng)建一個領(lǐng)域事件,并繼承ApplicationEvent事件。

    4.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:為了維護(hù)領(lǐng)域模型的獨(dú)立性和數(shù)據(jù)一致性,所述步驟S2中,事件發(fā)布完成后,發(fā)布方不必關(guān)心后續(xù)訂閱方事件處理是否成功,直接實(shí)現(xiàn)領(lǐng)域模型的解耦。

    5.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟S2中,在領(lǐng)域模型映射到微服務(wù)架構(gòu)時,領(lǐng)域事件解耦微服務(wù),微服務(wù)間的數(shù)據(jù)不必要求強(qiáng)一致性,而是基于事件的最終一致性。

    6.根據(jù)權(quán)利要求3所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟S2中,通過事件發(fā)布器EventPublisher注入ApplicationContex的publishEvent方法發(fā)布領(lǐng)域事件。

    7.根據(jù)權(quán)利要求6所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟S4中,配置異步任務(wù),并啟動線程池執(zhí)行異步任務(wù);添加@Async注解,調(diào)用異步線程,訂閱者采用AddedEventListener()方法實(shí)現(xiàn)ApplicationListener接口,用于監(jiān)聽領(lǐng)域事件,并重寫onApplicationEvent方法。

    8.一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)設(shè)備,其特征在于:包括存儲器和處理器;所述存儲器用于存儲計算機(jī)程序,所述處理器用于執(zhí)行所述計算機(jī)程序時實(shí)現(xiàn)如權(quán)利要求1至7任意一項(xiàng)所述的方法步驟。

    9.一種可讀存儲介質(zhì),其特征在于:所述可讀存儲介質(zhì)上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如權(quán)利要求1至7任意一項(xiàng)所述的方法步驟。

    ...

    【技術(shù)特征摘要】

    1.一種領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:包括以下步驟:

    2.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟s1中,在創(chuàng)建領(lǐng)域事件時,領(lǐng)域事件本身是不變的;同時領(lǐng)域事件攜帶與事件發(fā)生時相關(guān)的上下文數(shù)據(jù)信息,但是并不攜帶整個聚合根的狀態(tài)數(shù)據(jù)。

    3.根據(jù)權(quán)利要求2所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟s1中,根據(jù)業(yè)務(wù)和邏輯確定好關(guān)聯(lián)的實(shí)體和值對象,創(chuàng)建一個領(lǐng)域事件,并繼承applicationevent事件。

    4.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:為了維護(hù)領(lǐng)域模型的獨(dú)立性和數(shù)據(jù)一致性,所述步驟s2中,事件發(fā)布完成后,發(fā)布方不必關(guān)心后續(xù)訂閱方事件處理是否成功,直接實(shí)現(xiàn)領(lǐng)域模型的解耦。

    5.根據(jù)權(quán)利要求1所述的領(lǐng)域事件驅(qū)動異步傳輸數(shù)據(jù)方法,其特征在于:所述步驟s2中,在領(lǐng)域模型映射到微服務(wù)架構(gòu)時,領(lǐng)域事件解耦微服務(wù),微服務(wù)間的數(shù)據(jù)不必要求強(qiáng)一致性,而是基于事件的最終一致性。

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:李承林徐士強(qiáng)王禹博
    申請(專利權(quán))人:浪潮云信息技術(shù)股份公司
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲精品无码专区久久久| 无码av免费一区二区三区试看| 亚洲国产超清无码专区| 久久久久久亚洲AV无码专区| 无码无需播放器在线观看| 亚洲国产a∨无码中文777| 人妻无码久久精品人妻| 乱色精品无码一区二区国产盗| 午夜无码一区二区三区在线观看| 国产V亚洲V天堂无码久久久| 无码Aⅴ在线观看| 亚洲av无码专区在线观看亚| 亚洲色偷拍另类无码专区| 毛片一区二区三区无码| 久久久久亚洲AV无码网站| 亚洲A∨无码一区二区三区 | 国产免费av片在线无码免费看 | 亚洲AV永久纯肉无码精品动漫| 毛片亚洲AV无码精品国产午夜 | 久久午夜无码免费| 13小箩利洗澡无码视频网站免费 | 精品无码国产一区二区三区麻豆| 日日摸日日踫夜夜爽无码| 亚洲AV成人无码久久精品老人| 国产乱人无码伦av在线a| 亚洲中文字幕无码爆乳AV| 亚洲中文字幕无码专区| 免费无码一区二区三区蜜桃| 成人A片产无码免费视频在线观看 成人无码AV一区二区 | 午夜亚洲AV日韩AV无码大全| 亚洲av中文无码乱人伦在线咪咕| 一本加勒比HEZYO无码资源网| 国产亚洲3p无码一区二区| 国产AV无码专区亚汌A√| 丰满熟妇人妻Av无码区| 无码AV中文字幕久久专区| 精品无码一区二区三区爱欲| 最新无码人妻在线不卡| 国产精品无码一二区免费| 亚洲人成人无码网www国产| 少妇无码太爽了在线播放|