1.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,用于發(fā)送端,所述發(fā)送端通過消息隊(duì)列服務(wù)與接收端進(jìn)行交互,其特征在于,包括:
步驟102,發(fā)起服務(wù)調(diào)用,記錄日志,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
步驟104,當(dāng)所述日志寫入動(dòng)作時(shí),定時(shí)檢查日志數(shù)據(jù)庫中未發(fā)起服務(wù)調(diào)用或者超過指定時(shí)間未收到返回結(jié)果的日志,發(fā)送調(diào)用請(qǐng)求,判斷所述調(diào)用請(qǐng)求是否成功發(fā)送;在所述調(diào)用請(qǐng)求成功發(fā)送時(shí),進(jìn)行步驟106,以調(diào)用所述消息隊(duì)列服務(wù);
步驟106,接收回執(zhí)消息,根據(jù)回執(zhí)消息查詢?nèi)罩居涗?,根?jù)日志狀態(tài)判斷調(diào)用處理是否完成,若調(diào)用處理完成,進(jìn)行步驟108;以及若調(diào)用為處理中,進(jìn)行步驟110;
步驟108,不作處理;
步驟110,調(diào)用返回結(jié)果,并將返回結(jié)果記錄到日志中,實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫,根據(jù)返回結(jié)果的狀態(tài)調(diào)用相應(yīng)業(yè)務(wù)的接口,返回步驟102。
2.根據(jù)權(quán)利要求1所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,其特征在于,還包括:
步驟112,在所述調(diào)用請(qǐng)求未成功發(fā)送時(shí),返回步驟102。
3.根據(jù)權(quán)利要求1所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,其特征在于,所述步驟102,具體包括:
業(yè)務(wù)系統(tǒng)服務(wù)的業(yè)務(wù)代碼調(diào)用遠(yuǎn)程服務(wù)接口時(shí),攔截調(diào)用所述遠(yuǎn)程服務(wù)接口;
生成全局唯一的事務(wù)ID,并記錄所述事務(wù)ID;
實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫,并記錄日志的調(diào)用狀態(tài)為未調(diào)用。
4.根據(jù)權(quán)利要求3所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用狀態(tài)。
5.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,用于消息隊(duì)列服務(wù),發(fā)送端通過所述消息隊(duì)列服務(wù)與接收端進(jìn)行交互,其特征在于,包括:
步驟202,接收所述發(fā)送端傳遞的消息,調(diào)用消息隊(duì)列,將所述消息放入執(zhí)行隊(duì)列中的實(shí)時(shí)隊(duì)列;
步驟204,管理消息隊(duì)列,以及監(jiān)聽到所述執(zhí)行隊(duì)列收到所述消息后,發(fā)送所述消息;
步驟206,接收所述消息,根據(jù)所述消息查詢?nèi)罩居涗?,判斷消息日志狀態(tài);若所述消息日志狀態(tài)為處理中或日志不存在,進(jìn)行步驟208;若所述消息日志狀態(tài)為成功或者失敗,進(jìn)行步驟210;
步驟208,根據(jù)所述消息調(diào)用業(yè)務(wù)系統(tǒng)服務(wù),判斷所述業(yè)務(wù)系統(tǒng)服務(wù)是否調(diào)用成功及調(diào)用失敗原因類型;若所述業(yè)務(wù)系統(tǒng)服務(wù)調(diào)用成功或者業(yè)務(wù)原因調(diào)用失敗,進(jìn)行步驟210;若所述業(yè)務(wù)系統(tǒng)服務(wù)非業(yè)務(wù)原因調(diào)用失敗,進(jìn)行步驟226;
步驟210,通知回執(zhí)隊(duì)列,并將返回結(jié)果放入回執(zhí)隊(duì)列的實(shí)時(shí)隊(duì)列中;
步驟212,監(jiān)聽到所述回執(zhí)隊(duì)列收到包含所述返回結(jié)果的消息后,發(fā)送回執(zhí)消息;
步驟214,接收所述回執(zhí)消息,發(fā)送給所述發(fā)送端,并返回處理結(jié)果;
步驟216,根據(jù)所述處理結(jié)果,判斷所述回執(zhí)隊(duì)列中的消息是否發(fā)送成功;若發(fā)送失敗,進(jìn)行步驟218;若發(fā)送成功,進(jìn)行步驟224;
步驟218,計(jì)算下級(jí)延時(shí)隊(duì)列,并判斷回執(zhí)隊(duì)列是否存在下級(jí)延時(shí)隊(duì)列;若回執(zhí)隊(duì)列存在下級(jí)延時(shí)隊(duì)列,進(jìn)行步驟220;若回執(zhí)隊(duì)列不存在下級(jí)延時(shí)隊(duì)列,進(jìn)行步驟222;
步驟220,將消息放入下級(jí)延時(shí)隊(duì)列,記錄消息日志狀態(tài)為回執(zhí)發(fā)送失敗,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
步驟222,記錄消息日志狀態(tài)為回執(zhí)發(fā)送失敗,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
步驟224,記錄消息日志狀態(tài)為結(jié)果發(fā)送成功,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
步驟226,根據(jù)當(dāng)前隊(duì)列計(jì)算下級(jí)延時(shí)隊(duì)列,判斷執(zhí)行隊(duì)列是否存在下級(jí)延時(shí)隊(duì)列,若執(zhí)行隊(duì)列存在下級(jí)延時(shí)隊(duì)列,進(jìn)行步驟228;若執(zhí)行隊(duì)列不存在下級(jí)延時(shí)隊(duì)列,返回步驟210;
步驟228,將消息放入下級(jí)執(zhí)行隊(duì)列中的延時(shí)隊(duì)列,返回步驟206,同時(shí)進(jìn)行步驟230;
步驟230,記錄消息日志狀態(tài)為處理中,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫。
6.根據(jù)權(quán)利要求5所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用狀態(tài)。
7.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,用于接收端,發(fā)送端通過消息隊(duì)列服務(wù)與所述接收端進(jìn)行交互,其特征在于,包括:
步驟302,攔截服務(wù)調(diào)用,查詢?nèi)罩居涗洠?/p>
步驟304,判斷是否存在日志記錄;若不存在日志記錄,進(jìn)行步驟306;若存在日志記錄,進(jìn)行步驟308;
步驟306,調(diào)用業(yè)務(wù)系統(tǒng)服務(wù),記錄日志,返回調(diào)用結(jié)果,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
步驟308,根據(jù)日志記錄,返回調(diào)用結(jié)果。
8.根據(jù)權(quán)利要求7所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的方法,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用結(jié)果。
9.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,用于發(fā)送端,所述發(fā)送端通過消息隊(duì)列服務(wù)與接收端進(jìn)行交互,其特征在于,包括:
日志記錄裝置,用于發(fā)起服務(wù)調(diào)用,記錄日志,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
定時(shí)發(fā)送裝置,用于當(dāng)所述日志寫入動(dòng)作時(shí),定時(shí)檢查日志數(shù)據(jù)庫中未發(fā)起服務(wù)調(diào)用或者超過指定時(shí)間未收到返回結(jié)果的日志,發(fā)送調(diào)用請(qǐng)求,判斷所述調(diào)用請(qǐng)求是否成功發(fā)送;在所述調(diào)用請(qǐng)求成功發(fā)送時(shí),以調(diào)用所述消息隊(duì)列服務(wù);
回執(zhí)處理裝置,用于接收回執(zhí)消息,根據(jù)所述回執(zhí)消息查詢?nèi)罩居涗?,根?jù)日志狀態(tài)判斷調(diào)用處理是否完成,若調(diào)用處理完成,不作處理;以及
還用于若調(diào)用為處理中,調(diào)用返回結(jié)果,并將所述返回結(jié)果記錄到日志中,實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫,根據(jù)所述返回結(jié)果的狀態(tài)調(diào)用相應(yīng)業(yè)務(wù)的接口,繼續(xù)發(fā)起服務(wù)調(diào)用。
10.根據(jù)權(quán)利要求9所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,其特征在于,
所述日志記錄裝置,還用于在所述調(diào)用請(qǐng)求未成功發(fā)送時(shí),重新發(fā)起服務(wù)調(diào)用。
11.根據(jù)權(quán)利要求9所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,其特征在于,所述日志記錄裝置,具體用于:
業(yè)務(wù)系統(tǒng)服務(wù)的業(yè)務(wù)代碼調(diào)用遠(yuǎn)程服務(wù)接口時(shí),攔截調(diào)用所述遠(yuǎn)程服務(wù)接口;
生成全局唯一的事務(wù)ID,并記錄所述事務(wù)ID;
實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù),并記錄日志的調(diào)用狀態(tài)為未調(diào)用。
12.根據(jù)權(quán)利要求9所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用狀態(tài)。
13.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,用于消息隊(duì)列服務(wù),發(fā)送端通過所述消息隊(duì)列服務(wù)與接收端進(jìn)行交互,其特征在于,包括:
消息接收裝置,用于接收所述發(fā)送端傳遞的消息,調(diào)用消息隊(duì)列,將所述消息放入執(zhí)行隊(duì)列中的實(shí)時(shí)隊(duì)列;
消息隊(duì)列管理裝置,用于管理消息隊(duì)列,以及監(jiān)聽到所述執(zhí)行隊(duì)列收到所述消息后,發(fā)送所述消息;
服務(wù)調(diào)用裝置,用于接收所述消息,根據(jù)所述消息查詢?nèi)罩居涗洠?/p>
重復(fù)檢測(cè)裝置,用于在調(diào)用業(yè)務(wù)系統(tǒng)服務(wù)前,判斷日志狀態(tài);
所述服務(wù)調(diào)用裝置,還用于若所述日志狀態(tài)為處理中或日志不存在,根據(jù)所述消息調(diào)用業(yè)務(wù)系統(tǒng)服務(wù),判斷所述業(yè)務(wù)系統(tǒng)服務(wù)是否調(diào)用成功及調(diào)用失敗原因類型;
若所述日志狀態(tài)為成功或者失敗,或者所述業(yè)務(wù)系統(tǒng)服務(wù)調(diào)用成功或者業(yè)務(wù)原因調(diào)用失敗,通知回執(zhí)隊(duì)列,并將返回結(jié)果放入回執(zhí)隊(duì)列的實(shí)時(shí)隊(duì)列中;
所述消息隊(duì)列管理裝置,還用于監(jiān)聽到所述回執(zhí)隊(duì)列收到包含所述返回結(jié)果的消息后,發(fā)送回執(zhí)消息;
回執(zhí)發(fā)送裝置,接收所述回執(zhí)消息,發(fā)送給所述發(fā)送端,并返回處理結(jié)果;
所述服務(wù)調(diào)用裝置,還用于根據(jù)所述處理結(jié)果,判斷所述回執(zhí)隊(duì)列中的消息是否發(fā)送成功;若發(fā)送失敗,計(jì)算下級(jí)延時(shí)隊(duì)列,并判斷回執(zhí)隊(duì)列是否存在下級(jí)延時(shí)隊(duì)列;若回執(zhí)隊(duì)列存在下級(jí)延時(shí)隊(duì)列,將消息放入下級(jí)延時(shí)隊(duì)列,同時(shí)消息日志記錄裝置,用于記錄消息日志狀態(tài)為回執(zhí)發(fā)送失敗,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
若回執(zhí)隊(duì)列不存在下級(jí)延時(shí)隊(duì)列,所述消息日志記錄裝置,用于直接記錄消息日志狀態(tài)為回執(zhí)發(fā)送失敗,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
還用于若所述回執(zhí)隊(duì)列中的消息發(fā)送成功,記錄消息日志狀態(tài)為結(jié)果發(fā)送成功,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
所述服務(wù)調(diào)用裝置,還用于若所述業(yè)務(wù)系統(tǒng)服務(wù)非業(yè)務(wù)原因調(diào)用失敗,根據(jù)當(dāng)前隊(duì)列計(jì)算下級(jí)延時(shí)隊(duì)列,判斷執(zhí)行隊(duì)列是否存在下級(jí)延時(shí)隊(duì)列,存在下級(jí)延時(shí)隊(duì)列,將消息放入下級(jí)執(zhí)行隊(duì)列中的延時(shí)隊(duì)列,所述回執(zhí)發(fā)送裝置,重新接收消息;以及
若執(zhí)行隊(duì)列不存在下級(jí)延時(shí)隊(duì)列時(shí),重新通知回執(zhí)隊(duì)列,并將返回結(jié)果放入回執(zhí)隊(duì)列的實(shí)時(shí)隊(duì)列中,以及
所述消息日志記錄裝置,還用于記錄消息日志狀態(tài)為回執(zhí)發(fā)送失敗,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫。
14.根據(jù)權(quán)利要13所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用狀態(tài)。
15.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,用于接收端,發(fā)送端通過消息隊(duì)列服務(wù)與所述接收端進(jìn)行交互,其特征在于,包括:
調(diào)用處理裝置,用于攔截服務(wù)調(diào)用,查詢?nèi)罩居涗洠⑴袛嗍欠翊嬖谌罩居涗洠?/p>
調(diào)用日志記錄裝置,用于若不存在日志記錄,調(diào)用業(yè)務(wù)系統(tǒng)服務(wù),記錄日志,返回調(diào)用結(jié)果,并實(shí)時(shí)存儲(chǔ)日志數(shù)據(jù)至日志數(shù)據(jù)庫;
還用于若存在日志記錄,根據(jù)日志記錄,返回調(diào)用結(jié)果。
16.根據(jù)權(quán)利要求15所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置,其特征在于,
所述日志數(shù)據(jù)包括以下至少之一或其組合:事務(wù)ID、調(diào)用參數(shù)、環(huán)境參數(shù)、調(diào)用時(shí)間、調(diào)用結(jié)果。
17.一種支持微服務(wù)架構(gòu)事務(wù)最終一致性的系統(tǒng),其特征在于,包括:
如權(quán)利要求9至12中任一項(xiàng)所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置;
如權(quán)利要求13或14所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置;以及
如權(quán)利要求15或16所述的支持微服務(wù)架構(gòu)事務(wù)最終一致性的裝置。