本申請涉及通信領域,尤其涉及同步通信方法、裝置、設備及程序產品。
背景技術:
1、發布訂閱模式是基于消息隊列或主題,發布者將消息發布到特定的消息隊列或主題中,而訂閱者可以訂閱這些消息隊列或主題以接收并處理消息。發布訂閱模式是一種松耦合的、異步的通信方式,該通信方式允許發布者和訂閱者在不知道彼此存在的情況下進行通信。
2、在平臺架構的設計上,通過redis數據庫解耦各個模塊,同時使用redis的發布訂閱機制構建平臺所有模塊的消息交互中心,可以有效降低模塊間交互的耦合性,使得它們可以獨立地運行和擴展。但是,redis直接進行消息轉發時,容易丟失消息,不利于發布者和訂閱者通信的可靠性。
技術實現思路
1、有鑒于此,本申請實施例提供了一種同步通信方法、裝置、設備及程序產品,以解決現有技術中進行數據通信時,容易丟失消息,不利于發布者和訂閱者通信的可靠性的問題。
2、本申請實施例的第一方面提供了一種同步通信方法,所述同步通信方法應用于redis服務器,所述方法包括:
3、接收發布端請求發布的數據,并將所述數據存儲在所述redis服務器的第一數據表;
4、確定預先已訂閱所述第一數據表的訂閱端,將所述數據發送至所述訂閱端;
5、通過第二數據表接收存儲所述訂閱端返回的處理結果,根據所述處理結果標記所述數據,并將所述處理結果發送至預先已訂閱所述第二數據表的所述發布端。
6、結合第一方面,在第一方面的第一種可能實現方式中,根據所述處理結果標記所述數據,包括:
7、在所述處理結果為處理成功時,將所述處理結果對應的數據寫入第三數據表。
8、結合第一方面的第一種可能實現方式,在第一方面的第二種可能實現方式中,在根據所述處理結果標記所述數據之后,所述方法還包括:
9、比較所述第一數據表和所述第三數據表;
10、在所述第一數據表和所述第三數據表相同時,則確定所述訂閱端成功處理所述數據,且所述數據已成功寫入所述第三數據表;
11、在所述第一數據表和所述第三數據表不同時,根據所述第二數據表中的處理結果進行異常處理。
12、結合第一方面的第二種可能實現方式,在第一方面的第三種可能實現方式中,根據所述第二數據表中的處理結果進行異常處理,包括:
13、在所述第二數據表中的處理結果為處理成功時,將所述數據寫入所述第三數據表;
14、在所述第二數據表中的處理結果為處理失敗時,根據預定的嘗試策略將所述數據發送至所述訂閱端進行嘗試處理。
15、結合第一方面,在第一方面的第四種可能實現方式中,將所述數據發送至所述訂閱端,包括:
16、監聽所述redis服務器中的鍵空間的狀態;
17、在所述數據存儲至所述第一數據表使所述鍵空間的鍵狀態發生變化時,根據預先已訂閱所述鍵狀態的訂閱端,通過鍵空間事件通知機制將所述數據發送至所述訂閱端。
18、結合第一方面至第一方面的第四種可能實現方式中的任意一種,在第一方面的第五種可能實現方式中,確定預先已訂閱所述第一數據表的訂閱端,將所述數據發送至所述訂閱端,包括:
19、確定預先已訂閱所述第一數據表的訂閱端為一個以上的分布式訂閱端;
20、將所述數據發送至每個所述分布式訂閱端。
21、結合第一方面至第一方面的第四種可能實現方式中的任意一種,在第一方面的第六種可能實現方式中,接收發布端請求發布的數據,并將所述數據存儲在所述redis服務器的第一數據表,包括:
22、接收所述發布者請求發布的序列化的數據;
23、將所述序列化的數據轉換為數據庫格式;
24、將所述數據庫格式的數據寫入所述redis服務器的第一數據表,并生成所述第一數據表對應的鍵空間訂閱通知。
25、本申請實施例的第二方面提供了一種同步通信裝置,所述同步通信裝置應用于redis服務器,所述裝置包括:
26、數據接收單元,用于接收發布端請求發布的數據,并將所述數據存儲在所述redis服務器的第一數據表;
27、數據發送單元,用于確定預先已訂閱所述第一數據表的訂閱端,將所述數據發送至所述訂閱端;
28、數據標記單元,用于通過第二數據表接收存儲所述訂閱端返回的處理結果,根據所述處理結果標記所述數據,并將所述處理結果發送至預先已訂閱所述第二數據表的所述發布端。
29、本申請實施例的第三方面提供了一種同步通信設備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序時,使得所述同步通信設備實現如第一方面任一項所述的方法。
30、本申請實施例的第四方面,提供了一種計算機程序產品,當其在計算機上運行時,使得計算機執行上述第一方面或其各實現方式中的方法。
31、本申請實施例的第五方面提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機程序,所述計算機程序被處理器執行時實現如第一方面任一項所述方法的步驟。
32、本申請實施例的第六方面提供了一種芯片,用于實現上述第一方面中各實現方式中的方法。具體地,上述芯片包括:處理器,用于從存儲器中調用并運行計算機程序,使得安裝有上述芯片的設備執行如上述第一方面或其各實現方式中的方法。
33、本申請實施例與現有技術相比存在的有益效果是:本申請實施例通過redis服務器將發布端的數據存儲至第一數據表,并將數據發送至預先訂閱了第一數據表的訂閱端,將訂閱端返回的處理結果存儲至第二數據表,并將處理結果發送至預先訂閱了第二數據表的發布端,以及根據處理結果標記該數據,從而使得發布端與訂閱端可以完成同步通信,且可以根據處理結果標記所同步的數據,從而可以根據第一數據表和標記的數據對數據進行追蹤,有利于提升同步通信的可靠性。
1.一種同步通信方法,其特征在于,所述同步通信方法應用于redis服務器,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,根據所述處理結果標記所述數據,包括:
3.根據權利要求2所述的方法,其特征在于,在根據所述處理結果標記所述數據之后,所述方法還包括:
4.根據權利要求3所述的方法,其特征在于,根據所述第二數據表中的處理結果進行異常處理,包括:
5.根據權利要求1所述的方法,其特征在于,將所述數據發送至所述訂閱端,包括:
6.根據權利要求1-5任一項所述的方法,其特征在于,確定預先已訂閱所述第一數據表的訂閱端,將所述數據發送至所述訂閱端,包括:
7.權利要求1-5任一項所述的方法,其特征在于,接收發布端請求發布的數據,并將所述數據存儲在所述redis服務器的第一數據表,包括:
8.一種同步通信裝置,其特征在于,所述同步通信裝置應用于redis服務器,所述裝置包括:
9.一種同步通信設備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時,使得所述同步通信設備實現如權利要求1-7中任一項所述的方法。
10.一種計算機程序產品,包括計算機程序指令,其特征在于,所述計算機程序被運行時,使得如權利要求1-7中任一項所述的方法被執行。