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