本發(fā)明涉及服務器消息推送,尤其涉及一種分布式服務器集群推送數據的方法及系統(tǒng)。
背景技術:
1、網絡軟件技術中很重要的一個技術是服務器消息推送。為實現(xiàn)客戶端數據更及時的更新,需要服務端及時推送數據到客戶端,比如實時通知、實時數據大盤等場景。
2、現(xiàn)有前后端數據通信有基于http的長、短輪詢,然而基于http的長、短輪詢,安全性較差,占用系統(tǒng)資源和系統(tǒng)請求數量?;趖cp的websocket,websocket是一種全新的協(xié)議,隨著html5草案的不斷完善,越來越多的現(xiàn)代瀏覽器開始全面支持websocket技術,它將tcp的socket(套接字)應用在了webpage上,從而使通信雙方建立起一個保持在活動狀態(tài)連接通道。然而,在數據傳輸時,websocket傳輸數據需要進行二次解析,接入難度大,開發(fā)成本高,負載均衡問題處理起來比較復雜。
技術實現(xiàn)思路
1、鑒于目前服務器消息推送存在的上述不足,本發(fā)明提供一種分布式服務集群推送數據的方法及系統(tǒng),能夠實現(xiàn)分布式服務集群推送數據流到客戶端的效果。
2、為達到上述目的,本發(fā)明的實施例采用如下技術方案:
3、一種分布式服務集群推送數據的方法,所述分布式服務集群推送數據的方法包括以下模塊:
4、獲取客戶端發(fā)起的sse連接請求;
5、基于負載均衡邏輯從分布式服務集群選擇服務結點;
6、將sse連接請求轉發(fā)到選擇的服務結點,并建立sse連接;
7、通過建立的sse連接進行數據發(fā)送。
8、依照本發(fā)明的一個方面,所述獲取客戶端發(fā)起的sse連接請求,包括:由客戶端發(fā)起sse連接請求,所述sse連接請求包含具有唯一性的標識數據。
9、依照本發(fā)明的一個方面,所述標識數據用于將客戶端和sse連接進行關聯(lián),具體包括:結合選擇的服務結點的本地緩存和redis緩存,使得sse連接綁定標識數據。
10、依照本發(fā)明的一個方面,所述基于負載均衡邏輯從分布式服務集群選擇服務結點包括:注冊臨時服務結點;進行服務結點連接數判斷;選擇當前連接數量最小的臨時服務結點作為最終選擇的服務結點。
11、依照本發(fā)明的一個方面,所述注冊臨時服務結點包括:服務結點啟動時,注冊當前結點的ip和端口到zookeeper的臨時結點下。
12、依照本發(fā)明的一個方面,所述基于負載均衡邏輯從分布式服務集群選擇服務結點包括:設定每個服務結點的最大連接數量;判斷當前服務結點所建立的sse連接數量是否達到最大連接數量,若達到最大連接數量則不可被選擇為最終選擇的服務結點。
13、依照本發(fā)明的一個方面,所述注冊臨時服務結點包括:服務結點啟動時,注冊當前結點的ip和端口到zookeeper的臨時結點下。
14、依照本發(fā)明的一個方面,所述基于負載均衡邏輯從分布式服務集群選擇服務結點包括:設定每個服務結點的最大連接數量;判斷當前服務結點所建立的sse連接數量是否達到最大連接數量,若達到最大連接數量則不可被選擇為最終選擇的服務結點。
15、依照本發(fā)明的一個方面,所述將sse連接請求轉發(fā)到選擇的服務結點,并建立sse連接,包括:獲取到被選擇的服務結點的ip和端口。sse連接請求轉發(fā)到對應的ip和端口上,并帶上被選擇標識;服務結點判斷是已經被選擇的結點,則直接創(chuàng)建連接。
16、依照本發(fā)明的一個方面,通過建立的sse連接進行數據發(fā)送包括:所述sse連接請求包含具有唯一性的標識數據;根據標識數據在redi?s緩存的sse連接中獲取當前連接有服務結點的sse連接;把要發(fā)送的數據,發(fā)送到對應服務結點的數據發(fā)送接口;通過標識數據在當前服務結點本機緩存中獲取sse連接;構建spring框架,并調用完成數據的發(fā)送。
17、依照本發(fā)明的一個方面,所述方法還包括:sse連接的關閉;所述sse連接的關閉包括主動關閉連接和被動關閉連接,所述主動關閉連接為由客戶端或者服務端自行觸發(fā)關閉連接;所述被動關閉連接為由服務結點下線或者網絡中斷造成的連接失效,被迫關閉。
18、一種分布式服務集群推送數據的系統(tǒng),所述系統(tǒng)還包括:
19、請求獲取模塊,用于獲取客戶端發(fā)起的sse連接請求;
20、結點選擇模塊,用于基于負載均衡邏輯從分布式服務集群選擇服務結點;
21、連接建立模塊,用于將sse連接請求轉發(fā)到選擇的服務結點,并建立sse連接;
22、數據發(fā)送模塊,用于通過建立的sse連接進行數據發(fā)送。
23、本發(fā)明實施的優(yōu)點:通過合理的負載均衡分配,建立sse連接,分布式服務集群推送數據流到客戶端,解決sse在服務集群中分布式部署;增加負載均衡,使得sse鏈接合理分布在集群中。
1.一種分布式服務集群推送數據的方法,所述分布式服務集群推送數據的方法包括以下模塊:
2.根據權利要求1所述的分布式服務集群推送數據的方法,其特征在于,所述獲取客戶端發(fā)起的sse連接請求,包括:由客戶端發(fā)起sse連接請求,所述sse連接請求包含具有唯一性的標識數據。
3.根據權利要求2所述的分布式服務集群推送數據的方法,其特征在于,所述標識數據用于將客戶端和sse連接進行關聯(lián),具體包括:結合選擇的服務結點的本地緩存和redis緩存,使得sse連接綁定標識數據。
4.根據權利要求1所述的分布式服務集群推送數據的方法,其特征在于,所述基于負載均衡邏輯從分布式服務集群選擇服務結點包括:注冊臨時服務結點;進行服務結點連接數判斷;選擇當前連接數量最小的臨時服務結點作為最終選擇的服務結點。
5.根據權利要求4所述的分布式服務集群推送數據的方法,其特征在于,所述注冊臨時服務結點包括:服務結點啟動時,注冊當前結點的ip和端口到zookeeper的臨時結點下。
6.根據權利要求4所述的分布式服務集群推送數據的方法,其特征在于,所述基于負載均衡邏輯從分布式服務集群選擇服務結點包括:設定每個服務結點的最大連接數量;判斷當前服務結點所建立的sse連接數量是否達到最大連接數量,若達到最大連接數量則不可被選擇為最終選擇的服務結點。
7.根據權利要求1所述的分布式服務集群推送數據的方法,其特征在于,所述將sse連接請求轉發(fā)到選擇的服務結點,并建立sse連接,包括:獲取到被選擇的服務結點的ip和端口。sse連接請求轉發(fā)到對應的ip和端口上,并帶上被選擇標識;服務結點判斷是已經被選擇的結點,則直接創(chuàng)建連接。
8.根據權利要求1至7中任一所述的分布式服務集群推送數據的方法,其特征在于,所述通過建立的sse連接進行數據發(fā)送包括:所述sse連接請求包含具有唯一性的標識數據;根據標識數據在redis緩存的sse連接中獲取當前連接有服務結點的sse連接;把要發(fā)送的數據,發(fā)送到對應服務結點的數據發(fā)送接口;通過標識數據在當前服務結點本機緩存中獲取sse連接;構建spring框架,并調用完成數據的發(fā)送。
9.根據權利要求8所述的分布式服務集群推送數據的方法,其特征在于,所述方法還包括:sse連接的關閉;所述sse連接的關閉包括主動關閉連接和被動關閉連接,所述主動關閉連接為由客戶端或者服務端自行觸發(fā)關閉連接;所述被動關閉連接為由服務結點下線或者網絡中斷造成的連接失效,被迫關閉。
10.一種分布式服務集群推送數據的系統(tǒng),包括客戶端和分布式集群,其特征在于,所述系統(tǒng)還包括: