本發明涉及計算機技術領域,具體來說,涉及一種服務器的消息推送方法及推送系統。
背景技術:
對于業務復雜且對數據實時性需求高的一些平臺來說,保證業務數據的實時、穩定、安全、和準確是十分重要的。一般地,數據的傳遞大致可分為以下幾個步驟:實時業務操作產生實時數據,并存儲到數據庫;接收客戶端定時刷新或用戶手動刷新獲取數據;服務器根據一些條件查詢并返回數據結果;按照一定的格式將數據渲染到接收客戶端。
不難看出,現有技術是通過接收客戶端主動向服務器發出請求,從而把與該用戶相關的最新數據獲取回來,這種方法主要存在以下兩個方面的不足:
一、時效性差:通過接收客戶端向服務器設置定時任務或者手動刷新向服務端拉取數據,時效性差,數據產生后,不能及時的渲染到接收客戶端,造成渲染數據延時的問題。比如一些對數據要求時效性比較強的業務,當業務產生后,就立即需要去解決處理的業務,現有技術并不能很好的進行處理。
二、單點問題:當接入服務器的終端不斷增多時,數據并發量也會隨之不斷增大,服務器的壓力也不斷增大,響應速度慢,還可能出現數據丟失的問題,性能瓶頸問題會非常明顯。
針對相關技術時效性差、及由于單點問題導致的性能瓶頸的問題,目前尚未提出有效的解決方案。
技術實現要素:
針對相關技術時效性差、及由于單點問題導致的性能瓶頸的問題,本發明提出一種服務器的消息推送方法及推送系統,能夠實現消息數據的實時推送,以及實現消息數據的負載均衡,減輕服務器的壓力。
本發明的技術方案是這樣實現的:
根據本發明的一個方面,提供了一種服務器的消息推送方法,包括:建立服務器端與接收客戶端的AMQP連接;以及根據AMQP連接推送消息數據;其中,AMQP連接與消息中間件整合在一起。
優選地,接收客戶端為多個;以及消息中間件為Rabbitmq模塊。
優選地,建立服務器端與接收客戶端的AMQP連接,包括:設置消息推送策略;以及根據消息推送策略建立服務器端與接收客戶端的AMQP連接。
優選地,根據AMQP連接推送消息數據,包括:服務器端根據AMQP連接生成并發送消息數據至消息中間件;消息中間件根據AMQP連接將消息數據推送至與服務器端建立AMQP連接的接收客戶端或將消息數據丟棄。
優選地,消息中間件根據AMQP連接將消息數據推送至與服務器端建立AMQP連接的接收客戶端或將消息數據丟棄,包括:在至少有一個接收客戶端與服務器端AMQP連接的情況下,消息中間件將消息數據推送至接收客戶端;在沒有接收客戶端與服務器端AMQP連接的情況下,消息中間件將消息數據丟棄。
優選地,在服務器端根據AMQP連接生成并發送消息數據至消息中間件之后,還包括:消息中間件根據AMQP連接對消息數據進行存儲。
優選地,消息中間件根據AMQP連接對消息數據進行存儲,包括:在至少有一個接收客戶端與服務器端AMQP連接的情況下,對消息數據進行存儲;在沒有接收客戶端與服務器端AMQP連接的情況下,不對消息數據進行存儲。
優選地,消息中間件根據AMQP連接將消息數據推送至與服務器端建立AMQP連接的接收客戶端或將消息數據丟棄,包括:在對消息數據進行存儲的情況下,消息中間件將消息數據推送至接收客戶端;在沒有對消息數據進行存儲的情況下,消息中間件將消息數據丟棄。
優選地,消息中間件將消息數據推送至接收客戶端,包括:消息中間件通過POP模式、或通過Subscribe模式將消息數據推送至接收客戶端。
根據本發明的另一方面,提供了一種服務器的消息推送系統,包括:服務器端、接收客戶端、消息中間件、以及建立連接模塊;其中,建立連接模塊用于建立服務器端與客戶端的AMQP連接,AMQP連接與消息中間件整合在一起;服務器端用于根據AMQP連接生成消息數據;消息中間件用于根據所要AMQP連接推送消息數據。
本發明通過將服務器端和接收客戶端通過消息中間件建立AMQP連接,并根據AMQP連接生成并發送消息數據,能夠實現消息數據的實時推送,提高了消息推送的時效性;還通過消息中間件將消息數據推送至多個接收客戶端,即通過消息中間件加入了多個接收客戶端,實現了消息數據的負載均衡,減輕了服務器端的壓力。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是根據本發明實施例的服務器的消息推送方法的流程圖;
圖2是根據本發明實施例的服務器的消息推送方法的服務器端與接收客戶端通過消息中間件建立AMQP連接的示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員所獲得的所有其他實施例,都屬于本發明保護的范圍。
根據本發明的實施例,提供了一種服務器的消息推送方法。
如圖1所示,根據本發明實施例的服務器的消息推送方法包括以下步驟:
步驟S101,建立服務器端與需要接收消息數據的接收客戶端的AMQP(Advanced Message Queuing Protocol)連接,AMQP連接與消息中間件整合在一起;以及
步驟S103,根據AMQP連接推送消息數據。
通過上述技術方案,將服務器端和接收客戶端通過消息中間件建立AMQP連接,即使用AMQP作為傳輸協議進行服務器和客戶端間消息數據的傳輸,并根據AMQP連接生成并發送消息數據,能夠實現消息數據的實時推送,提高消息推送的時效性。
在一個實施例中,接收客戶端為多個;消息中間件為Rabbitmq模塊。可通過消息中間件將消息數據推送至多個接收客戶端,即通過消息中間件加入了多個接收客戶端,實現了消息數據的負載均衡,減輕了服務器端的壓力。
在一個實施例中,步驟S101包括:設置消息推送策略;根據消息推送策略建立服務器端與需要接收消息數據的接收客戶端的AMQP連接。
在一個實施例中,步驟S103包括:服務器端根據AMQP連接生成并發送消息數據;消息中間件根據AMQP連接將消息數據發送至與服務器端建立AMQP連接的接收客戶端或將消息數據丟棄。
進一步地,消息中間件根據AMQP連接將消息數據發送至與服務器端建立AMQP連接的接收客戶端或將消息數據丟棄,包括:在至少有一個接收客戶端與服務器端AMQP連接的情況下,消息中間件將消息數據發送至接收客戶端;在沒有接收客戶端與服務器端AMQP連接的情況下,消息中間件將消息數據丟棄。
在一個實施例中,在服務器端發送消息數據之后,還包括:消息中間件根據AMQP連接對消息數據進行存儲。
進一步地,消息中間件根據AMQP連接對消息數據進行存儲,包括:在至少有一個接收客戶端與服務器端AMQP連接的情況下,對消息數據進行存儲;在沒有接收客戶端與服務器端AMQP連接的情況下,不對消息數據進行存儲。
進一步地,消息中間件根據AMQP連接將消息數據發送至接收客戶端或將消息數據丟棄,包括:在對消息數據進行存儲的情況下,消息中間件將消息數據發送至接收客戶端;在沒有對消息數據進行存儲的情況下,消息中間件將消息數據丟棄。
在一個實施例中,消息中間件將消息數據發送至接收客戶端,包括:消息中間件通過POP模式、或通過Subscribe模式將消息數據發送至接收客戶端。
下面結合圖2對上述實施例進行具體說明。其中,所采用的消息中間件是Rabbitmq模塊10。Rabbitmq模塊10包括消息交換機(Exchange1、Exchange2)、消息列隊載體(Queue1、Queue2)。服務器(A、B)與消息交換機(Exchange1、Exchange2)之間、消息列隊載體(Queue1、Queue2)與客戶端(C1、C2、C3)之間均可以通過建立消息通道20來進行消息數據的傳遞。
Rabbitmq模塊10轉發消息數據的機制是:消息交換機(Exchange1、Exchange2)用于轉發消息數據,但不對消息數據進行存儲。如果沒有消息列隊載體(Queue1、Queue2)通過消息通道20綁定到消息交換機(Exchange1、Exchange2)的話,消息交換機(Exchange1、Exchange2)會直接丟棄掉服務器(A、B)發送過來的消息數據。一個客戶端(C1、C2、C3)若要接收消息數據,則要把對應連接的消息列隊載體(Queue1、Queue2)綁定到指定的消息交換機(Exchange1、Exchange2)上,然后消息交換機(Exchange1、Exchange2)會把消息數據轉發到消息列隊載體(Queue1、Queue2)那里,消息列隊載體(Queue1、Queue2)負責存儲消息數據,客戶端(C1、C2、C3)可以通過主動Pop或者是Subscribe之后被動回調的方式來從消息列隊載體(Queue1、Queue2)中獲取消息數據。
基于上述Rabbitmq模塊10轉發消息數據的機制,因此可以通過消息中間件設置和定制消息推送的策略。
其中,消息數據的推送流程為:建立服務器(A、B)與Rabbitmq模塊10的連接;獲取消息通道20以使服務器(A、B)與對應的消息交換機(Exchange1、Exchange2)連接;服務器(A、B)發送消息數據到Rabbitmq模塊10;Rabbitmq模塊10將消息數據推送到客戶端(C1、C2、C3)。
根據本發明的實施例,還提供了一種服務器的消息推送系統,包括:服務器端、接收客戶端、消息中間件、以及建立連接模塊;建立連接模塊,用于建立服務器端與接收客戶端的AMQP連接,該AMQP連接與消息中間件整合在一起;服務器端用于根據AMQP連接生成消息數據;消息中間件用于根據AMQP連接推送消息數據。
綜上所述,借助于本發明的上述技術方案,通過將服務器端和接收客戶端通過消息中間件建立AMQP連接,并根據AMQP連接生成并發送消息數據,能夠實現消息數據的實時推送,提高了消息推送的時效性;還通過消息中間件將消息數據推送至多個接收客戶端,即通過消息中間件加入了多個接收客戶端,實現了消息數據的負載均衡,減輕了服務器端的壓力;另外還可以通過消息中間件設置消息數據的推送策略。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。