消息推送的方法、裝置及系統的制作方法
【技術領域】
[0001]本發明涉及互聯網技術領域,尤其涉及一種消息推送的方法、裝置及系統。
【背景技術】
[0002]在現有網絡中,推送平臺會通過服務器向終端主動推送通知消息。當需要推送通知消息時,推送平臺會將通知消息發送給服務器,服務器與終端之間建立并保持傳輸控制協議(Transmiss1n ControI ProtocoI,簡稱TCP)連接,服務器通過TCP連接將接收到的通知消息發送給終端。日常生活中,手機里的熱點新聞推送、好友圈消息更新提示以及應用版本更新提示等功能即是通過消息推送機制實現的。
[0003]通常公網中的終端數量十分龐大,通過單臺服務器向所有終端推送通知消息并不現實。因此,現有技術中出現了分布式服務器集群的網絡架構,即使用多臺服務器負責消息推送。終端可以選擇與任意一臺服務器建立TCP連接,每臺服務器負責向自身連接的終端推送通知消息。
[0004]在上述通過分布式服務器集群推送消息的過程中,推送平臺需要向每一臺服務器分別推送通知消息,并且還需要對服務器進行管理,例如保證服務器接收通知消息的同步性、發現并處理宕機服務器等。由此可見,當采用分布式服務器集群的網絡架構時,推送平臺側的負荷壓力較大。
【發明內容】
[0005]本發明提供了一種消息推送的方法、裝置及系統,能夠解決分布式服務器集群環境中推送平臺負荷壓力較大的問題。
[0006]為解決上述問題,第一方面,本發明提供了一種消息推送的方法,該方法應用于主服務器側,該方法包括:
[0007]主服務器接收推送平臺發送的通知消息,主服務器為分布式服務器集群中通過投票選舉出的服務器;
[0008]將通知消息寫入到log日志中;
[0009]將log日志分發給集群中的從服務器,以使得從服務器更新自身的log日志并將通知消息下發給建立有連接關系的終端,從服務器為集群中除主服務器之外的其他服務器。
[0010]第二方面,本發明還提供了一種消息推送的方法,該方法應用于從服務器側,該方法包括:
[0011 ]從服務器接收主服務器分發的log日志,主服務器為分布式服務器集群中通過投票選舉出的服務器,從服務器為集群中除主服務器之外的其他服務器,log日志中記錄有推送平臺向主服務器發送的通知消息;
[00?2]根據log日志更新自身的log日志;
[0013]將IOg日志中的通知消息下發給建立有連接關系的終端。
[0014]第三方面,本發明還提供了一種消息推送的裝置,該裝置位于主服務器側,該裝置包括:
[0015]接收單元,用于接收推送平臺發送的通知消息,主服務器為分布式服務器集群中通過投票選舉出的服務器;
[0016]寫入單元,用于將通知消息寫入到log日志中;
[0017]發送單元,用于將log日志分發給集群中的從服務器,以使得從服務器更新自身的log日志并將通知消息下發給建立有連接關系的終端,從服務器為集群中除主服務器之外的其他服務器。
[0018]第四方面,本發明還提供了一種消息推送的裝置,該裝置位于從服務器側,該裝置包括:
[0019]接收單元,用于接收主服務器分發的log日志,主服務器為分布式服務器集群中通過投票選舉出的服務器,從服務器為集群中除主服務器之外的其他服務器,1g日志中記錄有推送平臺向主服務器發送的通知消息;
[0020]更新單元,用于根據log日志更新自身的log日志;
[0021]發送單元,用于將log日志中的通知消息下發給建立有連接關系的終端。
[0022]第五方面,本發明還提供了一種消息推送的系統,該系統包括:推送平臺、主服務器、從服務器以及終端;其中,主服務器為分布式服務器集群中通過投票選舉出的服務器,從服務器為集群中除主服務器之外的其他服務器;
[0023]推送平臺,用于向主服務器發送通知消息;
[0024]主服務器,用于接收推送平臺發送的通知消息,將通知消息寫入到log日志中,并將log日志分發給從服務器;
[0025]從服務器,用于接收主服務器分發的log日志,根據log日志更新自身的log日志,并將log日志中的通知消息下發給建立有連接關系的終端;
[0026]終端,用于接收建立有連接關系的從服務器下發的通知消息。
[0027]本發明提供的消息推送的方法、裝置及系統,能夠在分布式服務器集群中選舉出主服務器,推送平臺將通知消息下發給主服務器,由主服務器通過log日志的形式分發給各個從服務器,并使從服務器將接收的通知消息發送給建立有連接關系的終端。與現有技術相比,本發明中,推送平臺僅將通知消息發送給主服務器即可,無需與其他服務器進行通信,因此可以大大減輕推送平臺的負荷壓力。
[0028]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0029]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0030]圖1示出了本發明實施例提供的第一種消息推送的方法流程圖;
[0031 ]圖2示出了本發明實施例提供的第二種消息推送的方法流程圖;
[0032]圖3示出了本發明實施例提供的第三種消息推送的方法流程圖;
[0033]圖4示出了本發明實施例提供的第一種消息推送的裝置的組成框圖;
[0034]圖5示出了本發明實施例提供的第二種消息推送的裝置的組成框圖;
[0035]圖6示出了本發明實施例提供的第三種消息推送的裝置的組成框圖;
[0036]圖7示出了本發明實施例提供的第四種消息推送的裝置的組成框圖;
[0037]圖8示出了本發明實施例提供的一種消息推送的系統框圖。
【具體實施方式】
[0038]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0039]本發明實施例提供了一種消息推送的方法,該方法應用于主服務器側。如圖1所示,該方法包括:
[0040]101、主服務器接收推送平臺發送的通知消息。
[0041]本實施例中,推送平臺通過分布式服務器集群向終端下發通知消息。該分布式服務器集群由多個服務器組成,各個服務器之間同質,每臺服務器接入多個終端,終端可以更改接入的服務器。
[0042]在分布式服務器集群中,通過投票選舉出一個主服務器,剩余服務器則為從服務器。主服務器用于與推送平臺進行對接,接收推送平臺發送的通知消息,并將通知消息分發給各個從服務器,使得從服務器將該通知消息分發給自身接入的終端。本實施例中的投票主體為集群中的服務器,每臺服務器均需要向包括自身在內的服務器投出至少一票,例如僅向自身投票,或者向自身投一票并且向某個其他服務器頭一票。服務器可以依據預先配置的投票策略對其他服務器進行投票。例如對通信速度最快的服務器投票,或者對終端負載量最少的服務器投票,或者對處理資源最空閑的服務器投票等,本實施例對此不作限制。
[0043]本實施例中,任意時刻上分布式服務器集群可以僅有一個主服務器,也可以同時存在多個主服務器。對于后者情況,每一個主服務器負責一部分從服務器的消息分發。各個主服務器負責分發的從服務器沒有重復。從服務器可以根據自身配置的接入規則,選擇或更改連接的主服務器。所述規則包括但不限于是:選擇通信速度最快的主服務器、選擇距離最近的主服務器等,本實施例對此不作限制。需要說明的是,為保證切實減輕推送平臺的負荷壓力,實際應用中主服務器的數量最好不要超過服務器總量的三分之一。為便于說明和理解,本實施例后續將以集群中僅存在一個主服務器的情況為例進行說明。
[0044]進一步的,本實施例中的投票行為可以是一次性的,例如在網絡初始化時進行投票,確定出主服務器。或者投票行為也可以是動態的,例如按照預設的時間段周期性投票選擇主服務器。此外,當主服務器宕機時,應當重新進行投票,選舉出新的可用主服務器。
[0045]在確定主服務器后,該主服務器向推送平臺發送更新消息,向推送平臺通知自身的主服務器地位。推送平臺接收到該通知后,與該服務器建立連接,以便后續下發通知消息。對于從服務器而言,主服務器向集群中的其他服務器廣播自身的主服務器地位。在接收到該通知后,從服務器與該主服務器建立通信連接。對于存在多個主服務器的情況,主服務器僅向其負責的服務器單播或組播該通知消息,對于負責服務器的確定,每個服務器中可以預先配置一個IP地址段或者服務器標識列表,其中記錄有該服務器(如果當選為主服務器)負責的服務器的IP地址或標識。實際應用中,負責服務器的確定通常可以依據服務器就近原則確定,即主服務器負責距離較近的從服務器,該距離主要是指物理距離。
[0046]102、主服務器將通知消息寫入到log日志中。
[0047]本實施例中,主服務器通過log日志的形式向從服務器發送通知消息。主服務器將推送平臺發送的通知消息寫入到log日志中,然后執行步驟103,向從服務器發送log日志。
[0048]103、主服務器將log日志分發給集群中的從服務器。
[0049]本實施例中,主服務器通過廣播的方式將寫有通知消息的log日志分發給從服務器,以使得從服務器更新自身的log日志并將通知消息下發給建立有連接關系的終端,即使從服務器將通知消息發送給自身接入的終端。對于多個主服務器的情況,主服務器可以以單播或組播的方式定向地向自身負責的從服務器發送log日志。
[0050]在本實施例的一種實現方式中,主服務器可以周期性的向從服務器發送log日志。如果推送平臺推送了新的通知消息,則主服務器將該通知消息寫入到下一個即將發送的log日志中進行分發。如果沒有接收到推送平臺的通知消息,則當到達推送周期時,主服務器向從服務器下發空的log日