欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種服務(wù)器部署結(jié)構(gòu)的制作方法

文檔序號(hào):12135038閱讀:388來源:國知局
一種服務(wù)器部署結(jié)構(gòu)的制作方法與工藝

本發(fā)明涉及一種服務(wù)器部署結(jié)構(gòu)。



背景技術(shù):

如圖1所示,早期的服務(wù)器部署采用單點(diǎn)部署結(jié)構(gòu),三大通訊運(yùn)營商(電信、聯(lián)通、移動(dòng))的網(wǎng)絡(luò)出口都在一個(gè)機(jī)房,機(jī)房帶寬有限,單線IDC流量不足,接入率低。還存在單點(diǎn)問題,即一個(gè)機(jī)房若出現(xiàn)問題,所以業(yè)務(wù)都將無法使用。

如圖2所示,現(xiàn)有的另一種服務(wù)器部署方案中,業(yè)務(wù)模塊部署在多個(gè)機(jī)房,如果一個(gè)機(jī)房出現(xiàn)問題,還可以通過其他機(jī)房繼續(xù)服務(wù)。并且,不同運(yùn)營商的網(wǎng)絡(luò)接口處于不同的機(jī)房,可以根據(jù)需要選擇適合的運(yùn)營商的機(jī)房,流量和網(wǎng)絡(luò)穩(wěn)定性都有所提高。

當(dāng)今網(wǎng)絡(luò)視頻的播放過程中,發(fā)送或觀看彈幕越來越普遍;然而,由于彈幕服務(wù)器的承載能力有限,當(dāng)同時(shí)使用的用戶數(shù)量增多時(shí),基于上述方案部署的彈幕服務(wù)器與每個(gè)用戶之間的彈幕消息傳輸速度隨之降低。同時(shí),彈幕消息的數(shù)據(jù)大小隨著時(shí)間的積累而增加,使得用戶需要在觀看視頻之前等待較長時(shí)間才能獲取到全部彈幕消息,造成視頻的播放延遲,用戶體驗(yàn)差。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于提供一種新型的服務(wù)器部署結(jié)構(gòu),使服務(wù)器與客戶端之間的消息分發(fā)應(yīng)用更快,服務(wù)器資源更節(jié)省,運(yùn)行更穩(wěn)定。

為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供一種服務(wù)器部署結(jié)構(gòu),包含數(shù)據(jù)中心,以及在多個(gè)機(jī)房分別部署的多個(gè)CDN節(jié)點(diǎn);所述數(shù)據(jù)中心設(shè)置有Svrlist模塊,向客戶端發(fā)送列表,使客戶端根據(jù)所在IP在列表中查詢相應(yīng)的IP分段,以及與相應(yīng)IP分段所對(duì)應(yīng)的CDN節(jié)點(diǎn),通過客戶端本地的鏈接服務(wù)器測試其與所對(duì)應(yīng)的CDN節(jié)點(diǎn)連接的網(wǎng)速;所述Svrlist模塊根據(jù)各個(gè)客戶端定期上報(bào)的網(wǎng)速測試結(jié)果,來分配供各個(gè)客戶端連接的機(jī)房及CDN節(jié)點(diǎn)。

可選地,每個(gè)所述CDN節(jié)點(diǎn)設(shè)置有長鏈接模塊,和與其相應(yīng)的客戶端之間建立有TCP長鏈接,來進(jìn)行消息收發(fā);

所述數(shù)據(jù)中心還設(shè)置有邏輯處理模塊、在線信息的存儲(chǔ)模塊、隊(duì)列服務(wù)模塊、消息分發(fā)模塊;所述邏輯處理模塊將其從各個(gè)長鏈接模塊處接收到的消息,發(fā)送至所述隊(duì)列服務(wù)模塊進(jìn)行隊(duì)列排序;所述消息分發(fā)模塊將來自于隊(duì)列的消息進(jìn)行聚合得到的內(nèi)存分發(fā)到各個(gè)長鏈接模塊,由長鏈接模塊向相連接的客戶端發(fā)送相應(yīng)的內(nèi)存指針,來指定需發(fā)送給各客戶端的消息內(nèi)存塊。

可選地,所述客戶端向其連接的長鏈接模塊提供賬號(hào)登錄信息,由連接至該長鏈接模塊的邏輯處理模塊,從存儲(chǔ)模塊獲取記錄的賬號(hào)注冊信息來進(jìn)行驗(yàn)證。

可選地,每個(gè)客戶端與相應(yīng)長鏈接模塊之間,通過建立TCP長鏈接所產(chǎn)生的維持Socket的內(nèi)存被創(chuàng)建在對(duì)應(yīng)的用戶協(xié)程里并放在棧上。

可選地,所述長鏈接模塊預(yù)先創(chuàng)建有設(shè)定數(shù)量的多個(gè)內(nèi)存塊,每個(gè)內(nèi)存塊具有各自對(duì)應(yīng)的鎖,以支持多方同時(shí)對(duì)這些內(nèi)存塊進(jìn)行操作。

可選地,所述消息分發(fā)模塊與各個(gè)長鏈接模塊分別有獨(dú)立的協(xié)程,實(shí)現(xiàn)消息分發(fā)的并行。

可選地,所述Svrlist模塊對(duì)每個(gè)CDN節(jié)點(diǎn)連接的客戶端數(shù)量進(jìn)行控制,每個(gè)客戶端與相應(yīng)CDN節(jié)點(diǎn)的長鏈接模塊建立連接后創(chuàng)建有固定數(shù)量的協(xié)程。

與現(xiàn)有技術(shù)相比,本發(fā)明的服務(wù)器部署結(jié)構(gòu),其優(yōu)點(diǎn)在于:

本發(fā)明由數(shù)據(jù)中心的Svrlist模塊進(jìn)行調(diào)節(jié)分配,控制客戶端所選擇連接的服務(wù)器,從而更好地控制適合的客戶網(wǎng)絡(luò)環(huán)境,來連接更合適的機(jī)房,解決現(xiàn)有技術(shù)完全依賴DNS做隨機(jī)負(fù)載,造成非客戶端真實(shí)最優(yōu)網(wǎng)絡(luò)的弊端。

本發(fā)明中消息所占用的系統(tǒng)內(nèi)存只有一塊,不用復(fù)制多份,聚合消息后長鏈接模塊只需指針引用即可。內(nèi)存創(chuàng)建放在對(duì)應(yīng)的用戶協(xié)程里,一個(gè)用戶的內(nèi)存被盡量放到棧上,以提高內(nèi)存釋放速度。并且,使用內(nèi)存池,查看模塊各個(gè)分配內(nèi)存的地方,對(duì)內(nèi)存塊數(shù)量實(shí)現(xiàn)控制。

本發(fā)明中消息分發(fā)并行進(jìn)行,互不干擾,消息分發(fā)模塊與每個(gè)長鏈接模塊都是獨(dú)立的協(xié)程;而并發(fā)數(shù)是可控的,每個(gè)需要異步處理開啟的協(xié)程都預(yù)先創(chuàng)建好固定的個(gè)數(shù)。全局鎖被打散,Socket鏈接池管理、用戶在線數(shù)據(jù)管理都使用多把鎖,以支持多人同時(shí)使用。

附圖說明

圖1是現(xiàn)有的一種服務(wù)器部署結(jié)構(gòu)的示意圖;

圖2是現(xiàn)有的另一種服務(wù)器部署結(jié)構(gòu)的示意圖;

圖3是本發(fā)明所述服務(wù)器部署結(jié)構(gòu)的原理示意圖;

圖4是本發(fā)明應(yīng)用于直播彈幕的服務(wù)架構(gòu)示意圖。

具體實(shí)施方式

如圖3所示,本發(fā)明提供的服務(wù)器部署結(jié)構(gòu),包含數(shù)據(jù)中心,以及分別部署在各地網(wǎng)絡(luò)節(jié)點(diǎn)機(jī)房的多個(gè)CDN節(jié)點(diǎn)(CDN:內(nèi)容分發(fā)網(wǎng)絡(luò));所述數(shù)據(jù)中心設(shè)置有Svrlist模塊實(shí)現(xiàn)多IDC支持,為客戶端選擇合適的CDN節(jié)點(diǎn),對(duì)客戶端選擇連接哪個(gè)機(jī)房進(jìn)行控制。

所述數(shù)據(jù)中心通過Svrlist模塊將IP列表發(fā)送給客戶端;客戶端根據(jù)其提出服務(wù)請(qǐng)求時(shí)所在的IP,在列表中查詢與之對(duì)應(yīng)的IP分段及與該IP分段對(duì)應(yīng)的若干個(gè)CDN節(jié)點(diǎn),通過客戶端本地的鏈接服務(wù)器測試其與這些對(duì)應(yīng)CDN節(jié)點(diǎn)連接的網(wǎng)速。客戶端定期將網(wǎng)速測試的結(jié)果上報(bào)給數(shù)據(jù)中心,方便服務(wù)端進(jìn)行用戶調(diào)節(jié)為其分配合適的CDN節(jié)點(diǎn)。

以部署彈幕服務(wù)器為例,如圖4所示,每個(gè)CDN節(jié)點(diǎn)部署有長鏈接模塊(Comet),來維持節(jié)點(diǎn)與客戶端之間的長鏈接、心跳?;赥CP長鏈接網(wǎng)絡(luò)通訊協(xié)議,所述長鏈接模塊保持與客戶端的雙向數(shù)據(jù)交互,來接收彈幕消息、服務(wù)請(qǐng)求等,發(fā)送彈幕、服務(wù)端反饋信息等。

所述數(shù)據(jù)中心設(shè)置有邏輯處理模塊(Logic)、在線信息(session)的存儲(chǔ)模塊(Router)、隊(duì)列服務(wù)模塊(Kafka)、消息分發(fā)模塊(Job)。所述邏輯處理模塊進(jìn)行諸如賬號(hào)驗(yàn)證、業(yè)務(wù)判斷等各種邏輯處理。客戶端向其連接的長鏈接模塊提供賬號(hào)登錄信息,由連接該長鏈接模塊的邏輯處理模塊,從相應(yīng)的存儲(chǔ)模塊獲取記錄的賬號(hào)注冊信息來進(jìn)行驗(yàn)證。

對(duì)于驗(yàn)證通過的用戶,邏輯處理模塊將其從各個(gè)CDN節(jié)點(diǎn)接收到的彈幕消息存入記錄彈幕消息的存儲(chǔ)模塊,并將收到的實(shí)時(shí)彈幕發(fā)送至隊(duì)列服務(wù)模塊進(jìn)行隊(duì)列排序。消息分發(fā)模塊從隊(duì)列服務(wù)模塊的隊(duì)列中定時(shí)獲取彈幕消息進(jìn)行聚合操作,并將聚合得到的內(nèi)存分發(fā)到各個(gè)CDN節(jié)點(diǎn)上的長鏈接模塊。由于本發(fā)明中所有彈幕消息只占用一塊公共的系統(tǒng)內(nèi)存,而不會(huì)將相關(guān)的彈幕消息復(fù)制多份。所以長鏈接模塊只需向其連接的客戶端,發(fā)送相應(yīng)的內(nèi)存指針來指定需發(fā)送給用戶的消息內(nèi)存塊,以實(shí)現(xiàn)利用同一塊彈幕消息內(nèi)存向所有連接的客戶端發(fā)送彈幕消息的效果。

每個(gè)客戶端與相應(yīng)的長鏈接模塊建立TCP長鏈接,都會(huì)產(chǎn)生一塊維持Socket的內(nèi)存,該內(nèi)存的創(chuàng)建是放在對(duì)應(yīng)的用戶協(xié)程(Goroutine)里,本發(fā)明盡量將該內(nèi)存都放到棧上,在使用完畢后可以立刻將棧的內(nèi)存釋放,以提高內(nèi)存釋放的速度,降低內(nèi)存使用。

高度使用內(nèi)存的長鏈接模塊,其自身預(yù)先創(chuàng)建有一定數(shù)量的內(nèi)存塊,來提供給所有消息使用,而不是到實(shí)際使用時(shí)才臨時(shí)創(chuàng)建內(nèi)存,這樣本發(fā)明就可以將內(nèi)存塊控制在設(shè)定的數(shù)量。

并且,適用本發(fā)明的服務(wù)器部署結(jié)構(gòu)后,全局鎖被打散。即,程序訪問一塊內(nèi)存時(shí)在程序設(shè)計(jì)中控制用的鎖,作用是確保同一塊內(nèi)存只有一個(gè)人可以操作,所以要加鎖排隊(duì)操作,效率很低。本發(fā)明中的長鏈接模塊將一塊大內(nèi)存拆成多個(gè)內(nèi)存塊,每個(gè)內(nèi)存塊有各自對(duì)應(yīng)的鎖,這樣就可以同時(shí)有很多人分別操作相應(yīng)的內(nèi)存塊。

本發(fā)明中消息分發(fā)模塊與各個(gè)長鏈接模塊都有獨(dú)立的協(xié)程,從而可以實(shí)現(xiàn)消息分發(fā)的并行,互不干擾。同時(shí),本發(fā)明中的并發(fā)數(shù)又是可控的,因?yàn)樗霾l(fā)數(shù)主要體現(xiàn)每個(gè)客戶端與長鏈接模塊建立連接后都會(huì)創(chuàng)建的固定的協(xié)程數(shù)量,該協(xié)程數(shù)量的控制又可以主要通過控制與節(jié)點(diǎn)建立連接的客戶端數(shù)量來控制;本發(fā)明中正是通過Svrlist模塊對(duì)哪些用戶的客戶端與哪個(gè)節(jié)點(diǎn)的長鏈接模塊連接進(jìn)行控制,來實(shí)現(xiàn)對(duì)客戶端數(shù)量的控制,從而做到壓力分配。

除了彈幕消息外,消息發(fā)送方(Caller)也可將其提供的各種消息,以上述類似的過程,通過邏輯處理模塊、隊(duì)列服務(wù)模塊、消息分發(fā)模塊發(fā)送給連接至各CDN節(jié)點(diǎn)的客戶端。

本發(fā)明的數(shù)據(jù)中心,還可以模擬客戶端監(jiān)控每秒消息到達(dá);線上開啟Pprof,隨時(shí)可以抓圖分析進(jìn)程狀況;白名單功能,允許指定的交互方打印服務(wù)端日志;執(zhí)行服務(wù)器負(fù)載監(jiān)控,短信報(bào)警。

表1

表2

基于本發(fā)明的服務(wù)器部署結(jié)構(gòu),表1、表2提供兩個(gè)示例對(duì)應(yīng)的壓測數(shù)據(jù)。相比其他服務(wù)器部署結(jié)構(gòu),本發(fā)明中消息分發(fā)應(yīng)用更快,服務(wù)器資源更節(jié)省,運(yùn)行更穩(wěn)定。

盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來限定。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
白朗县| 沧源| 普定县| 东平县| 资兴市| 梅州市| 普陀区| 宁晋县| 潮州市| 临安市| 闻喜县| 厦门市| 仪陇县| 黑河市| 盐边县| 乌鲁木齐县| 黔西| 罗田县| 宜川县| 巴林左旗| 商河县| 曲周县| 武定县| 曲阜市| 丽江市| 庐江县| 尚义县| 凭祥市| 象州县| 海宁市| 襄城县| 哈巴河县| 鹿邑县| 宁明县| 辉县市| 麻城市| 太保市| 柞水县| 诏安县| 铜川市| 泸水县|