本技術涉及一種微服務之間數據一致性處理方法、裝置及系統。
背景技術:
1、在分布式微服務架構項目中,使用rabbitmq(以下簡稱mq)傳輸數據時,由于mq代碼和業務代碼揉和在一起,耦合度高,當消息發送到mq后,可能會因為數據和網絡等原因,mq自帶的消息確認機制(acknowledgement,ack)存在消息返回延遲,甚至不返回消息的情況,當回調(confirmcallback)函數收到消息確認機制返回成功標識時,會回寫數據庫,由于mq自帶的消息確認機制存在消息返回延遲,甚至不返回消息,導致無法回寫數據,從而導致數據丟失。經統計,項目中丟失數據量約為萬分之二。
技術實現思路
1、為了更好的保證微服務之間數據的一致性,本技術實施例提供了一種微服務之間數據一致性處理方法、裝置及系統。
2、第一方面,本技術實施例提供一種微服務之間數據一致性處理方法,應用于消息生產者,該方法包括:
3、將消息與對應的隊列名稱拼接,得到消息字節串;
4、調用api接口,將所述消息字節串發送至消息中臺;所述消息中臺為封裝mq得到的微服務;
5、當接收到所述消息中臺返回的消息確認標識時,根據所述消息確認標識,判斷所述消息字節串是否發送成功;
6、若是,將所述消息確認標識回寫數據庫。
7、本技術實施例的一種可選的實施方式中,所述當接收到所述消息中臺返回的消息確認標識時,根據所述消息確認標識,判斷所述消息字節串是否發送成功,包括:
8、當接收到所述消息中臺返回的消息確認標識時,判斷所述消息確認標識是否為預設標識;
9、若是,則所述消息字節串發送成功;
10、若否,則所述消息字節串發送失敗。
11、本技術實施例的一種可選的實施方式中,所述消息字節串發送失敗后,還包括:
12、重新發送所述消息字節串至所述消息中臺,直至所述消息字節串發送成功或達到預設發送次數。
13、第二方面,本技術實施例提供一種微服務之間數據一致性處理方法,應用于消息中臺,該方法包括:
14、當接收到消息生產者發送的消息字節串,通過api接口返回消息確認標識至所述消息生產者;所述消息字節串中包含消息與對應的隊列名稱;
15、根據預設算法,基于生產者負載均衡將所述消息字節串路由至消息隊列交換機;
16、根據所述消息字節串中隊列名稱,通過消息隊列交換機將所述消息字節串中消息路由至相應隊列。
17、本技術實施例的一種可選的實施方式中,還包括:
18、當消息中臺出現故障時,采用預設方式臨時存儲所述消息字節串,直至消息中臺恢復正常,將所述消息字節串恢復到消息中臺。
19、第三方面,本技術實施例提供一種微服務之間數據一致性處理方法,該方法包括:
20、消息生產者將消息與對應的隊列名稱拼接,得到消息字節串;
21、所述消息生產者調用api接口,將所述消息字節串發送至消息中臺;
22、所述消息中臺接收到所述消息字節串,通過api接口返回消息確認標識至所述消息生產者;
23、所述消息生產者接收到所述消息確認標識時,根據所述消息確認標識,判斷所述消息字節串是否發送成功;
24、若是,所述消息生產者將所述消息確認標識回寫數據庫。
25、第四方面,本技術實施例提供一種微服務之間數據一致性處理裝置,應用于消息生產者,該裝置包括:
26、拼接模塊,用于將消息與對應的隊列名稱拼接,得到消息字節串;
27、發送模塊,用于調用api接口,將所述消息字節串發送至消息中臺;
28、判斷模塊,用于當接收到消息中臺返回的消息確認標識時,根據所述消息確認標識,判斷所述消息字節串是否發送成功;
29、回寫模塊,用于若所述消息字節串發送成功,將所述消息確認標識回寫數據庫。
30、第五方面,本技術實施例提供一種微服務之間數據一致性處理裝置,應用于消息中臺,該裝置包括:
31、接收模塊,用于當接收到消息生產者發送的消息字節串,通過api接口返回消息確認標識至所述消息生產者;所述消息字節串中包含消息與對應的隊列名稱;
32、路由模塊,用于根據預設算法,基于生產者負載均衡將所述消息字節串路由至消息隊列交換機;
33、交換模塊,用于根據所述消息字節串中隊列名稱,通過消息隊列交換機將所述消息字節串中消息路由至相應隊列。
34、第六方面,本技術實施例提供一種計算機可讀存儲介質,其上存儲有計算機程序,該程序被處理器執行時實現如上述的微服務之間數據一致性處理方法。
35、第七方面,本技術實施例提供一種計算機設備,包括存儲器,處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上述的微服務之間數據一致性處理方法。
36、第八方面,本技術實施例提供一種包含指令的計算機程序產品,當計算機程序產品在計算機設備上運行時,使得計算機設備執行如上述的微服務之間數據一致性處理方法。
37、第九方面,本技術實施例提供一種芯片,芯片包括處理器和通信接口,通信接口和處理器耦合,處理器用于運行計算機程序或指令,以實現如上述的微服務之間數據一致性處理方法。
38、第十方面,本技術實施例提供一種微服務之間數據一致性處理系統,該系統包括:
39、所述消息生產者,用于將消息與對應的隊列名稱拼接,得到消息字節串;調用api接口,將所述消息字節串發送至消息中臺;當接收到消息中臺返回的消息確認標識時,根據所述消息確認標識,判斷所述消息字節串是否發送成功;以及,若是,將所述消息確認標識回寫數據庫;
40、所述消息中臺,用于當接收到消息生產者發送的消息字節串,通過api接口返回消息確認標識至所述消息生產者;所述消息字節串中包含消息與對應的隊列名稱;根據預設算法,基于生產者負載均衡將所述消息字節串路由至消息隊列交換機;以及,根據所述消息字節串中隊列名稱,通過消息隊列交換機將所述消息字節串中消息路由至相應隊列。
41、本技術實施例提供的上述技術方案的有益效果至少包括:
42、本技術實施例提供的微服務之間數據一致性處理方法,通過調用api接口將消息與對應的隊列名稱發送至消息中臺,再根據消息中臺返回的消息確認標識,判斷消息是否發送成功,及時回寫數據庫。該方法中將mq與自定義的消息確認標識共同封裝到一個微服務中作為消息中臺,通過api調用獨立的微服務,不使用mq自帶的消息確認機制(ack),使用自定義的消息確認標識,減少調用鏈步驟,簡化調用鏈邏輯,響應更及時,保證了數據不丟失以及微服務數據一致性;實現了業務的解耦和分離,消息高可靠性持久化,較高性能,較高實時性,高穩定性,高擴展性;實現了大量的業務消息堆積和消費能力,低延遲高吞吐,支持高并發。
43、本技術的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本技術而了解。本技術的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
44、下面通過附圖和實施例,對本技術的技術方案做進一步的詳細描述。