本發(fā)明涉及數(shù)據(jù)傳輸,特別涉及一種websocket集群與客戶端的連接方法及系統(tǒng)。
背景技術(shù):
1、websocket是一種在單個(gè)tcp連接上進(jìn)行全雙工通信的協(xié)議,websocket使得客戶端之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動(dòng)向接收端推送數(shù)據(jù)。
2、傳統(tǒng)的單節(jié)點(diǎn)websocket,其連接能力和處理能力有限,無法處理更多的連接和消息。而通過多節(jié)點(diǎn)形成的websocket集群可將連接分布到多個(gè)節(jié)點(diǎn)當(dāng)中,從而提高整體的處理能力和并發(fā)能力。在使用多節(jié)點(diǎn)形成的websocket集群與客戶端進(jìn)行連接時(shí),需考慮不同節(jié)點(diǎn)的負(fù)載情況,為客戶端提供更穩(wěn)定節(jié)點(diǎn)進(jìn)行連接,以實(shí)現(xiàn)高效的消息傳遞及處理。
3、現(xiàn)websocket集群中節(jié)點(diǎn)與客戶端連接時(shí),對(duì)于節(jié)點(diǎn)的選擇主要關(guān)注節(jié)點(diǎn)的帶寬、cpu、內(nèi)存等硬件能力,缺少對(duì)于節(jié)點(diǎn)的交互能力的考量,其往往導(dǎo)致與客戶端連接的節(jié)點(diǎn)的連接能力及處理能力仍較差,影響消息傳遞的效率及消息處理的效率。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種websocket集群與客戶端的連接方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)中于websocket集群中選擇節(jié)點(diǎn)與客戶端進(jìn)行連接時(shí),僅考慮了節(jié)點(diǎn)的硬件能力,缺少對(duì)于節(jié)點(diǎn)的交互能力的考量,導(dǎo)致消息傳遞的效率及消息處理的效率仍較差的技術(shù)問題。
2、為了實(shí)現(xiàn)上述目的,第一方面,本技術(shù)實(shí)施例提供了一種websocket集群與客戶端的連接方法,應(yīng)用于websocket集群中,所述websocket集群包括若干個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)用于連接客戶端,所述websocket集群與客戶端的連接方法包括以下步驟:
3、當(dāng)獲取到所述客戶端的連接請(qǐng)求時(shí),獲取所述節(jié)點(diǎn)的硬件指標(biāo),所述硬件指標(biāo)包括cpu使用率、內(nèi)存使用率及連接率,分別為所述cpu使用率、所述內(nèi)存使用率及所述連接率配置第一初始權(quán)重參數(shù)、第二初始權(quán)重參數(shù)及第三初始權(quán)重參數(shù),以獲取所述節(jié)點(diǎn)的初始硬件能力;
4、基于所述硬件指標(biāo)與指標(biāo)閾值之間的比對(duì)結(jié)果,更新所述第一初始權(quán)重、所述第二初始權(quán)重及所述第三初始權(quán)重,以獲取所述節(jié)點(diǎn)的實(shí)時(shí)硬件能力;
5、基于所述實(shí)時(shí)硬件能力自若干個(gè)所述節(jié)點(diǎn)中獲取若干個(gè)備選節(jié)點(diǎn);
6、采集所述備選節(jié)點(diǎn)于指定時(shí)間窗口下的埋點(diǎn)信息,通過所述埋點(diǎn)信息獲取所述備選節(jié)點(diǎn)的服務(wù)能力;
7、基于所述服務(wù)能力自若干個(gè)所述備選節(jié)點(diǎn)中確定最優(yōu)節(jié)點(diǎn),將所述客戶端連接至所述最優(yōu)節(jié)點(diǎn)。
8、進(jìn)一步,所述初始硬件能力的計(jì)算公式為:
9、py=λ1*l1*l2+λ2*l2+λ3*l3,
10、其中,py表示初始硬件能力,λ1表示第一初始權(quán)重參數(shù),λ2表示第二初始權(quán)重參數(shù),λ3表示第三初始權(quán)重參數(shù),l1表示cpu使用率,l2表示內(nèi)存使用率,l3表示連接率,且lnow表示節(jié)點(diǎn)的當(dāng)前連接數(shù),lmax表示節(jié)點(diǎn)的最大連接數(shù)。
11、更進(jìn)一步,所述基于所述硬件指標(biāo)與指標(biāo)閾值之間的比對(duì)結(jié)果,更新所述第一初始權(quán)重、所述第二初始權(quán)重及所述第三初始權(quán)重的步驟包括:
12、將所述cpu使用率與第一使用率閾值進(jìn)行比對(duì),若所述cpu使用率大于所述第一使用率閾值,則獲取第一持續(xù)時(shí)間,若所述第一持續(xù)時(shí)間大于第一時(shí)間閾值,則將所述第一初始權(quán)重更新為第一子調(diào)節(jié)權(quán)重,若所述cpu使用率小于所述第一使用率閾值,則獲取第二持續(xù)時(shí)間,若所述第二持續(xù)時(shí)間大于所述第一時(shí)間閾值,則將所述第一初始權(quán)重更新為第二子調(diào)節(jié)權(quán)重;
13、將所述內(nèi)存使用率與第二使用率閾值進(jìn)行比對(duì),若所述內(nèi)存使用率大于所述第二使用率閾值,則獲取第三持續(xù)時(shí)間,若所述第三持續(xù)時(shí)間大于第二時(shí)間閾值,則將所述第二初始權(quán)重更新為第三子調(diào)節(jié)權(quán)重,若所述內(nèi)存使用率小于所述第二使用率閾值,則獲取第四持續(xù)時(shí)間,若所述第四持續(xù)時(shí)間大于所述第二時(shí)間閾值,則將所述第二初始權(quán)重更新為第四子調(diào)節(jié)權(quán)重;
14、將所述連接率與第三使用率閾值進(jìn)行比對(duì),若所述連接率大于所述第三使用率閾值,則獲取第五持續(xù)時(shí)間,若所述第五持續(xù)時(shí)間大于第三時(shí)間閾值,則將所述第三初始權(quán)重更新為第五子調(diào)節(jié)權(quán)重,若所述連接率小于所述第三使用率閾值,則獲取第六持續(xù)時(shí)間,若所述第六持續(xù)時(shí)間大于所述第三時(shí)間閾值,則將所述第三初始權(quán)重更新為第六子調(diào)節(jié)權(quán)重。
15、更進(jìn)一步,所述第一子調(diào)節(jié)權(quán)重的獲取公式為:
16、
17、其中,表示第一子調(diào)節(jié)權(quán)重,λ1表示第一初始權(quán)重,δ1表示調(diào)整因子;
18、所述第二子調(diào)節(jié)權(quán)重的獲取公式為:
19、
20、其中,表示第二子調(diào)節(jié)權(quán)重。
21、更進(jìn)一步,所述埋點(diǎn)信息包括連接建立時(shí)長、連接維持時(shí)長、總連接次數(shù)、連接失敗次數(shù)、重連成功次數(shù)、重連次數(shù)、消息傳輸次數(shù)、消息丟失次數(shù)、消息錯(cuò)誤次數(shù)、消息重復(fù)次數(shù)、消息傳輸延遲時(shí)長、消息處理時(shí)長。
22、更進(jìn)一步,所述通過所述埋點(diǎn)信息獲取所述備選節(jié)點(diǎn)的服務(wù)能力的步驟包括:
23、通過所述連接建立時(shí)長、所述連接維持時(shí)長、所述總連接次數(shù)、所述連接失敗次數(shù)、所述重連成功次數(shù)及所述重連次數(shù)確定連接穩(wěn)定性指標(biāo);
24、通過所述消息傳輸次數(shù)、所述消息丟失次數(shù)、所述消息錯(cuò)誤次數(shù)及所述消息重復(fù)次數(shù)確定消息穩(wěn)定性指標(biāo);
25、通過所述消息傳輸延遲時(shí)長及所述消息處理時(shí)長確定消息速度指標(biāo);
26、基于所述連接穩(wěn)定性指標(biāo)、所述消息穩(wěn)定性指標(biāo)及所述消息速度指標(biāo)獲取所述備選節(jié)點(diǎn)的服務(wù)能力。
27、更進(jìn)一步,所述服務(wù)能力的計(jì)算公式為:
28、service=α*cs-β*(1-ms)-γ*(1-mspeed),
29、其中,service表示服務(wù)能力,cs表示連接穩(wěn)定性指標(biāo),ms表示消息穩(wěn)定性指標(biāo),mspeed表示消息速度指標(biāo),α、β、γ均表示權(quán)重值。
30、第二方面,本技術(shù)實(shí)施例提供了一種websocket集群與客戶端的連接系統(tǒng),應(yīng)用于如上述第一方面所述的websocket集群與客戶端的連接方法,所述系統(tǒng)包括:
31、獲取模塊,用于當(dāng)獲取到所述客戶端的連接請(qǐng)求時(shí),獲取所述節(jié)點(diǎn)的硬件指標(biāo),所述硬件指標(biāo)包括cpu使用率、內(nèi)存使用率及連接率,分別為所述cpu使用率、所述內(nèi)存使用率及所述連接率配置第一初始權(quán)重參數(shù)、第二初始權(quán)重參數(shù)及第三初始權(quán)重參數(shù),以獲取所述節(jié)點(diǎn)的初始硬件能力;
32、更新模塊,用于基于所述硬件指標(biāo)與指標(biāo)閾值之間的比對(duì)結(jié)果,更新所述第一初始權(quán)重、所述第二初始權(quán)重及所述第三初始權(quán)重,以獲取所述節(jié)點(diǎn)的實(shí)時(shí)硬件能力;
33、第一選擇模塊,用于基于所述實(shí)時(shí)硬件能力自若干個(gè)所述節(jié)點(diǎn)中獲取若干個(gè)備選節(jié)點(diǎn);
34、采集模塊,用于采集所述備選節(jié)點(diǎn)于指定時(shí)間窗口下的埋點(diǎn)信息,通過所述埋點(diǎn)信息獲取所述備選節(jié)點(diǎn)的服務(wù)能力;
35、第二選擇模塊,基于所述服務(wù)能力自若干個(gè)所述備選節(jié)點(diǎn)中確定最優(yōu)節(jié)點(diǎn),將所述客戶端連接至所述最優(yōu)節(jié)點(diǎn)。
36、第三方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī),包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如上述第一方面所述的websocket集群與客戶端的連接方法。
37、第四方面,本技術(shù)實(shí)施例提供了一種存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述第一方面所述的websocket集群與客戶端的連接方法。
38、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:當(dāng)獲取到連接請(qǐng)求時(shí),優(yōu)先基于所述實(shí)時(shí)硬件能力對(duì)若干個(gè)所述節(jié)點(diǎn)進(jìn)行一次篩選,以確保所述備選節(jié)點(diǎn)具備較優(yōu)的硬件能力,而后在所述備選節(jié)點(diǎn)中,基于所述埋點(diǎn)信息獲取節(jié)點(diǎn)的所述服務(wù)能力,通過綜合考慮節(jié)點(diǎn)的硬件及與客戶端之間的交互能力,確定所述最優(yōu)節(jié)點(diǎn),確保所述最優(yōu)節(jié)點(diǎn)在可處理連接請(qǐng)求的前提下,還能提供高質(zhì)量的消息處理及消息傳遞服務(wù);在獲取所述實(shí)時(shí)硬件能力時(shí),引入了動(dòng)態(tài)權(quán)重調(diào)整機(jī)制,根據(jù)所述節(jié)點(diǎn)的實(shí)時(shí)表現(xiàn)不斷優(yōu)化權(quán)重分配,確保所述硬件指標(biāo)在不同場(chǎng)景下的重要性得到合理反應(yīng),進(jìn)而篩選出更為符合連接要求的所述備選節(jié)點(diǎn)。