47]步驟S110、根據所述上一推送周期所對應的數據包推送數量及時間,調整所述第一鏈路在下一推送周期所推送的數據包數量;
[0048]可選的,對于根據所述上一推送周期所對應的數據包推送數量及時間,調整所述第一鏈路在下一推送周期所推送的數據包數量的具體策略,本發明實施例可視推送服務器推送消息的場景情況進行劃分,下文將作詳細描述。
[0049]可選的,本發明實施例可根據所述上一推送周期所對應的數據包推送數量及時間,計算第一鏈路在上一推送周期內所對應的數據包推送速率;若上一推送周期所對應的數據包推送速率太低,如低于設定的推送下限速率,難以繼續推送數據包,則本發明實施例可屏蔽第一鏈路,調整第一鏈路在下一推送周期所推送的數據包數量為零。推送速率的計算方式較為常見,主要根據推送周期的時間,和推送的數據包數量得出,本發明實施例不作詳細描述。
[0050]值得注意的是,上一推送周期為已發生的推送時間區間,下一推送周期為將到來的推送時間區間。
[0051]步驟S120、控制所述第一鏈路在下一推送周期,推送與調整后的所述數據包數量對應的數據包。
[0052]本發明實施例提供的消息推送方法中,通過反映鏈路的質量情況的上一推送周期所對應的數據包推送數量及時間,對推送服務器在下一推送周期所推送的數據包數量進行調整,可實現鏈路質量變差時,鏈路在下一推送周期所推送的數據包的數量減少,達到減少數據包丟包,降低推送延遲的目的。
[0053]可選的,在進行消息推送的過程中,推送服務器可分批次獲取所述消息的數據包,一次獲取若干數量的數據包;如消息生成服務器生成消息后,推送服務器可分任務批次進行數據包的拉取,一次拉取若干數量的數據包進行推送;則一個所述推送周期為,所述第一鏈路推送所述推送服務器一次獲取的數據包的時間。對應的,圖3示出了本發明實施例提供的消息推送方法的另一流程圖,參照圖3,該方法可以包括:
[0054]步驟S200、在進行消息推送的過程中,推送服務器分批次獲取所述消息的數據包,
一次獲取若干數量的數據包;
[0055]對應的,一個推送周期為,第一鏈路推送所述推送服務器一次獲取的數據包的時間。
[0056]步驟S210、確定所述推送服務器上一次獲取的數據包的數量,及第一鏈路推送所述數量的數據包的時間,所述第一鏈路為所述推送服務器的任一鏈路;
[0057]第一鏈路推送所述數量的數據包的時間即為上一推送周期的時間。
[0058]步驟S220、根據所述數量和時間,調整所述推送服務器下一次所獲取的數據包的數量;
[0059]推送服務器下一次所獲取的數據包的數量,即為第一鏈路下一次所需要推送的數據包數量;根據所述數量和時間,調整所述推送服務器下一次所獲取的數據包的數量的策略如下:
[0060]策略一:可選的,本發明實施例可設第一鏈路上一次推送數據包的數量為M個(即推送服務器上一次獲取的數據包的數量),耗時為B秒,下一次推送數據包的時間區間最大值為A秒(下一次推送數據包的計劃時間);則下一次推送數據包的數量可以定義為T(推送服務器下一次獲取的數據包的數量),且T = (1-BAi) *M,i = 1-N的整數,i的取值具體可視實際應用情況而設定;
[0061]以i = 2為例,則T = (1-B/A2) *M ;若B較大,隨著B的增加,則在推送速率保持不變的情況下,下一次推送數據包的數量降低超出A太多,假設為B = A*A,則表示鏈路推送速率太慢,即上一次推送所述推送服務器所獲取的數據包的速率低于推送下限速率,則第一鏈路將被屏蔽,第一鏈路下一次推送數據包的數量降為零較小,隨著B的減小,則在推送速率保持不變的情況下,下一次推送數據包的數量提高。
[0062]策略二:可選的,本發明實施例也可根據推送服務器上一次獲取的數據包的數量,及所述第一鏈路推送所述數量的數據包的時間,計算所述第一鏈路上一次推送所述推送服務器所獲取的數據包的速率;確定第一鏈路下一次推送所述推送服務器所獲取的數據包的時間區間最大值;根據所述時間區間最大值及所述第一鏈路上一次推送所述推送服務器所獲取的數據包的速率,確定所述第一鏈路在所述時間區間最大值內的可推送數據包數量,所述可推送數據包數量為第一鏈路下一次所推送的數據包數量;
[0063]顯然,本發明實施例對于此種策略,可設置推送下限速率,若第一鏈路上一次推送所述推送服務器所獲取的數據包的速率低于該推送下限速率,則本發明實施例可屏蔽第一鏈路。
[0064]步驟S230、控制所述第一鏈路在下一推送周期,推送與調整后的所述數據包數量對應的數據包。
[0065]無論是采用上述哪種策略,本發明實施例可以所確定的所述第一鏈路下一次所推送的數據包數量,獲取對應數量的數據包,控制所述第一鏈路下一次推送對應數量的數據包。
[0066]可選的,本發明實施例還可根據用戶反饋調整所述第一鏈路在下一推送周期所推送的數據包數量;圖4示出了本發明實施例提供的消息推送方法的再一流程圖,參照圖4,該方法可以包括:
[0067]步驟S300、在進行消息推送的過程中,推送服務器分批次獲取所述消息的數據包,一次獲取若干數量的數據包;
[0068]步驟S310、確定所述推送服務器上一次獲取的數據包的數量,及第一鏈路推送所述數量的數據包的時間;根據所述時間和所述數量,計算所述第一鏈路上一次推送所述推送服務器所獲取的數據包的速率,所述第一鏈路為所述推送服務器的任一鏈路;
[0069]步驟S320、確定用戶設備接收數據包的速率;
[0070]在本發明實施例中,推送服務器分任務批次拉取消息生成服務器生成的消息進行推送,在推送過程中,有可能出現數據包丟棄的情況(包括APNS丟棄和用戶主動丟棄等),本發明實施例可通過檢測眾多用戶設備單位時間所接收的數據包數量,確定推送過程中被丟棄的數據包;
[0071]步驟S330、若所述第一鏈路上一次推送所述推送服務器所獲取的數據包的速率,大于用戶設備接收數據包的速率,且差值符合預定條件,則降低第一鏈路在下一次所推送的數據包數量;
[0072]由于存在數據包丟棄,第一鏈路單位時間內推送的數據包數量,必然大于用戶設備單位數據內接收的數據包數量;若兩者的差值較大且符合預定條件,則可知數據包丟棄嚴重,第一鏈路推送再多的數據包也將大部分被丟棄,因此可降低第一鏈路在下一推送周期所推送的數據包數量,以提升數據包的有效推送;預定條件可視所支持的操作系統情況設定。
[0073]步驟S340、以所降低的所述第一鏈路在下一次所推送的數據包數量,獲取對應數量的數據包,控制所述第一鏈路下一次推送對應數量的數據包。
[0074]可選的,在進行消息推送的過程中,推送服務器可將用戶設備推送至推送服務器的消息,推送至目標設備;對應的,本發明實施例可設定時間段,一個所述推送周期即為一個設定的時間段,推送服務器在若干設定時間段組成的時間區間內,對用戶設備推送至推送服務器的消息進行平滑推送。對應的,圖5示出了本發明實施例提供的消息推送方法的又一流程圖,參照圖5,該方法可以包括:
[0075]步驟S400、在進行消息推送的過程中,確定上一設定的時間段內,第一鏈路推送的數據包的數量;
[0076]步驟S410、根據所述數量與所述設定的時間段,計算所述第一鏈路在上一設定的時間段內推送數據包的速率;
[0077]步驟S420、若所述第一鏈路在上一設定的時間段內推送數據包的速率,高于設定的正常數據包推送速率,則提高所述第一鏈路在下一設定的時間段內的數據包推送數量;
[0078]可選的,若第一鏈路在上一設定時間段內推送數據包的速率,高于設定的正常數據包推送速率,則說明當前的鏈路質量較好;由于推送服務器在推送用戶設備推送的消息的情況下,一般推送訪問表現的較為平滑,不會出現推送離線消息所出現的推送訪問在瞬間爆發的情況,因此本發明實施例可在第一鏈路在上一設定時間段內推送數據包的速率,高于設定的正常數據包推送速率時,提升推送速率(即提高所述第一鏈路在下一設定時間段內的數據包推送數量);本發明實施例還可設置推送上限速率,所提升的推送速率不應大于推送上限速率;
[0079]顯然,若在提高速率后,下一設定的時間段內實際的數據包推送速率反而減小,則本發明實施例還可再降低速率,通過如此反復操作,使得推送數據包的速率,在高于設定的正常數據包推送速率時,能夠使得推送數據包的速率盡量的最大化優化;
[0080]可選的,若第一鏈路在上一設定時間段內推送數據包的速率,低于設定推送下限速率,則本發明實施例可對所述第一鏈路進行屏蔽;若第一鏈路在上一設定時間段內推送數據包的速率,介于推送下限速率與正常數據包推送速率之間,則本發明實施例可保持推送速率不變,或在下一設定的時間段降低推送速率,以減少丟包和延遲情況。
[0081]步驟S430、控制所述第一鏈路在下一設定的時間段內,推送與調整后的所述數據包數量對應的數據包。
[0082]可選的,對于要求推送速率的推送請求而言,若第一鏈路當前的推送速率不滿足所要求的推送速率,則本發明實施例可將推送消息轉發至其他的鏈路進行推送。進一步,本發明實施例在確定了上一推送周期所對應