本公開涉及互聯網電商,具體涉及一種消息隊列升級方法、消息隊列升級裝置、存儲介質及電子設備。
背景技術:
1、xml(extensible?markup?language)可擴展標記語言,本身就被設計用來存儲數據,任何一個對象都可以用xml來描述。xml報文反序列化是指將xml字符串轉換為指定類型的對象,xml報文序列化則是指將對象轉換為xml字符串。
2、由于將xml字符串轉換為指定類型的對象的反序列化過程比較耗費,因此,在一些促銷活動的訂單高峰期,訂單消息xml反序列化容易受到影響,會影響訂單消息的處理速度。所以可以在訂單序列化時,由xml升級為protobuf(google?protocol?buffer,是谷歌內部的混合語言數據標準),進而在反序列化時將protobuf字符串進行轉換,能夠達到提升系統性能、降本增效的目的。
3、在升級為protobuf的過程中涉及到訂單消息隊列topic(主題)的更換,即由xml格式更換為protobuf格式,但現有的更換過程程序繁瑣,對業務數據處理執行的影響較大,無法做到無感處理。
4、需要說明的是,在上述背景技術部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構成對本領域普通技術人員已知的現有技術的信息。
技術實現思路
1、本公開的目的在于提供一種消息隊列升級方法、消息隊列升級裝置、存儲介質及電子設備,旨在解決消息隊列升級對業務影響大的問題。
2、本公開的其他特性和優點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習得。
3、根據本公開實施例的一方面,提供了一種消息隊列升級方法,應用于監聽服務器,包括:接收數據源服務器下發的消息隊列;其中,所述消息隊列包括第一格式的第一消息隊列和第二格式的第二消息隊列;響應于第一監聽器的開啟指令,開啟所述第一監聽器,以將所述第一監聽器接收的所述第一消息隊列寫入數據庫;響應于第二監聽器的開啟指令,開啟所述第二監聽器,并基于所述第一監聽器接收的所述第一消息隊列和所述第二監聽器接收的所述第二消息隊列更新所述數據庫;響應于所述第一監聽器的關閉指令關閉所述第一監聽器,并將所述關閉指令轉發至所述數據庫,以使所述數據庫將所述第一消息隊列刪除。
4、根據本公開的一些實施例,基于前述方案,所述方法包括:所述第一消息隊列是在消息隊列的目標關鍵字段處于數據源服務器的預發環境白名單列表時,通過預發管道下發的消息隊列;所述第二消息隊列是在消息隊列的目標關鍵字段不處于數據源服務器的預發環境白名單列表時,通過生產管道下發的消息隊列。
5、根據本公開的一些實施例,基于前述方案,所述基于所述第一監聽器接收的所述第一消息隊列和所述第二監聽器接收的所述第二消息隊列更新所述數據庫,包括:對具有同一消息標識的第一消息隊列和第二消息隊列分別進行序列化,得到第一業務消息和第二業務消息;根據所述第一業務消息和所述第二業務消息配置分布式鎖,以使所述第一監聽器和所述第二監聽器同時競爭所述分布式鎖;基于競爭成功的監聽器接收的消息隊列更新所述數據庫,并將競爭失敗的監聽器接收的消息隊列丟棄。
6、根據本公開的一些實施例,基于前述方案,所述基于競爭成功的監聽器接收的消息隊列更新所述數據庫,包括:對競爭成功的監聽器接收的消息隊列進行驗重處理,以判斷所述數據庫中是否存在與該消息隊列狀態一致的消息隊列;若所述數據庫中存在與該消息隊列狀態一致的消息隊列時,將該消息隊列丟棄;若所述數據庫中不存與該消息隊列狀態一致的消息隊列時,將該消息隊列寫入所述數據庫。
7、根據本公開的一些實施例,基于前述方案,在所述開啟所述第二監聽器之前,所述方法還包括:獲取所述第二監聽器的監聽切量;開啟所述第二監聽器,并根據所述監聽切量控制所述第二監聽器;以及響應于所述監聽切量的變更指令,以根據變更后的監聽切量控制所述第二監聽器。
8、根據本公開的一些實施例,基于前述方案,所述方法還包括:在所述監聽切量為100%時,生成所述第一監聽器的關閉指令。
9、根據本公開的一些實施例,基于前述方案,在開啟所述第二監聽器之后,所述方法還包括:對更新所述數據庫進行運行監控;在運行監控得到運行異常結果時,生成關閉所述第二監聽器的關閉指令;其中,所述異常結果包括所述第二消息隊列數據異常、所述第二消息隊列數據丟失以及所述第二監聽器異常中的一項或多項。
10、根據本公開實施例的第二方面,提供了一種消息隊列升級裝置,包括:接收模塊,用于接收數據源服務器下發的消息隊列;其中,所述消息隊列包括第一格式的第一消息隊列和第二格式的第二消息隊列;第一單活模塊,用于響應于第一監聽器的開啟指令,開啟所述第一監聽器,以將所述第一監聽器接收的所述第一消息隊列寫入數據庫;雙活模塊,用于響應于第二監聽器的開啟指令,開啟所述第二監聽器,并基于所述第一監聽器接收的所述第一消息隊列和所述第二監聽器接收的所述第二消息隊列更新所述數據庫;第二單活模塊,用于響應于所述第一監聽器的關閉指令關閉所述第一監聽器,并將所述關閉指令轉發至所述數據庫,以使所述數據庫將所述第一消息隊列刪除。
11、根據本公開實施例的第三方面,提供了一種計算機可讀存儲介質,其上存儲有計算機程序,所述程序被處理器執行時實現如上述實施例中的消息隊列升級方法。
12、根據本公開實施例的第四方面,提供了一種電子設備,其特征在于,包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理器執行時,使得所述一個或多個處理器實現如上述實施例中的消息隊列升級方法。
13、本公開示例性實施例可以具有以下部分或全部有益效果:
14、在本公開的一些實施例所提供的技術方案中,在將第一格式的第一消息隊列topic1升級為第二格式的第二消息隊列topic2時,采用本公開提供的消息隊列升級方法,主要分為以下三個階段:階段一為topic1單活階段,即開啟第一監聽器時,將第一監聽器接收的topic1寫入數據庫;階段二為topic1、topic2同城雙活階段,即開啟第二監聽器,此時基于第一監聽器和第二監聽器分別得到的topic1、topic2更新數據庫;階段三為topic2單活階段,即關閉第一監聽器,下線topic1僅保留topic2單消息運轉,進而完成由topic1升級為topic2的過程。基于上述方法,能夠在不影響正常運行的前提下,僅通過控制第一監聽器和第二監聽器來逐步進行消息隊列topic的升級更換,保證數據準確的同時降低了對業務的影響,提高了系統的健壯性,做到無感升級。
15、應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本公開。
1.一種消息隊列升級方法,其特征在于,包括:
2.根據權利要求1所述的消息隊列升級方法,其特征在于,所述方法包括:
3.根據權利要求1所述的消息隊列升級方法,其特征在于,所述基于所述第一監聽器接收的所述第一消息隊列和所述第二監聽器接收的所述第二消息隊列更新所述數據庫,包括:
4.根據權利要求3所述的消息隊列升級方法,其特征在于,所述基于競爭成功的監聽器接收的消息隊列更新所述數據庫,包括:
5.根據權利要求1所述的消息隊列升級方法,其特征在于,在所述開啟所述第二監聽器之前,所述方法還包括:
6.根據權利要求5所述的消息隊列升級方法,其特征在于,所述方法還包括:
7.根據權利要求1所述的消息隊列升級方法,其特征在于,在開啟所述第二監聽器之后,所述方法還包括:
8.一種消息隊列升級裝置,其特征在于,包括:
9.一種計算機可讀存儲介質,其上存儲有計算機程序,所述程序被處理器執行時實現如權利要求1至7任一項所述的消息隊列升級方法。
10.一種電子設備,其特征在于,包括: