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

一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法

文檔序號(hào):8002057閱讀:443來(lái)源:國(guó)知局
一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法,包括應(yīng)用服務(wù)器集群和數(shù)據(jù)服務(wù)器集群,所述應(yīng)用服務(wù)器集群與所述數(shù)據(jù)服務(wù)器集群通過(guò)千兆局域網(wǎng)絡(luò)通信連接。本發(fā)明具有支持任意數(shù)量節(jié)點(diǎn)(普通/網(wǎng)關(guān))及負(fù)載均衡、極大增強(qiáng)系統(tǒng)可擴(kuò)展性;通過(guò)大量節(jié)點(diǎn)提供的服務(wù)資源,極大增強(qiáng)系統(tǒng)的在線(xiàn)用戶(hù)支撐能力;通過(guò)不限制節(jié)點(diǎn)啟動(dòng)順序降低系統(tǒng)運(yùn)維成本;通過(guò)節(jié)點(diǎn)的動(dòng)態(tài)加入及脫離集群、自動(dòng)重構(gòu)系統(tǒng)集群網(wǎng)絡(luò),增加了系統(tǒng)動(dòng)態(tài)擴(kuò)容能力,減少系統(tǒng)停止時(shí)間、降低系統(tǒng)運(yùn)維成本;通過(guò)數(shù)據(jù)數(shù)據(jù)分布式存儲(chǔ),增加系統(tǒng)對(duì)大容量數(shù)據(jù)的支撐能力、對(duì)系統(tǒng)故障抵抗能力的優(yōu)點(diǎn)。
【專(zhuān)利說(shuō)明】一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種實(shí)時(shí)消息交換平臺(tái),尤其涉及一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法。
【背景技術(shù)】
[0002]實(shí)時(shí)消息交換平臺(tái)(Server)擴(kuò)展了標(biāo)準(zhǔn)XMPP協(xié)議,實(shí)現(xiàn)群組、部門(mén)、會(huì)議、文件傳輸與共享、語(yǔ)音、視頻等功能,數(shù)據(jù)庫(kù)采用的是mnesia,在所有服務(wù)器間復(fù)制并分布式存儲(chǔ)數(shù)據(jù)。受初始設(shè)計(jì)所限,原系統(tǒng)(ejabberd2111)存在以下問(wèn)題:
[0003](I)集群系統(tǒng)擴(kuò)展能力受限(上限10?20臺(tái))
[0004]原系統(tǒng)僅有一種類(lèi)型的服務(wù)器節(jié)點(diǎn),每臺(tái)服務(wù)器節(jié)點(diǎn)都為外部客戶(hù)端提供服務(wù),節(jié)點(diǎn)間的互連與數(shù)據(jù)交換則通過(guò)節(jié)點(diǎn)間的TCP長(zhǎng)連接形成的網(wǎng)格狀集群網(wǎng)絡(luò)來(lái)進(jìn)行。在N個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中,僅節(jié)點(diǎn)間的連接就需要N* (N-1) /2個(gè),假設(shè)20個(gè)節(jié)點(diǎn)的集群網(wǎng)絡(luò),節(jié)點(diǎn)間數(shù)據(jù)通訊就將耗用190個(gè)連接,100個(gè)節(jié)點(diǎn)則將達(dá)到4950個(gè)連接。在服務(wù)器數(shù)量增長(zhǎng)的情況下,整個(gè)系統(tǒng)資源的內(nèi)部消耗更為可怕若集群節(jié)點(diǎn)數(shù)量上限估計(jì)為20個(gè),按每個(gè)節(jié)點(diǎn)支撐在線(xiàn)用戶(hù)5000?10000個(gè)計(jì)算,20個(gè)節(jié)點(diǎn)的服務(wù)器集群系統(tǒng)預(yù)計(jì)支撐在線(xiàn)用戶(hù)數(shù)量為100000 ?200000。
[0005](2)數(shù)據(jù)庫(kù)(mnesia)支撐能力受限
[0006]原系統(tǒng)采用mnesia數(shù)據(jù)庫(kù)存儲(chǔ)用戶(hù)數(shù)據(jù),包含帳號(hào)信息、離線(xiàn)消息、會(huì)話(huà)信息、用戶(hù)名片等。通過(guò)mnesia的分布式數(shù)據(jù)存儲(chǔ)機(jī)制,用戶(hù)信息存儲(chǔ)在所有服務(wù)器上,每一個(gè)節(jié)點(diǎn)都需要存儲(chǔ)全部或部分的數(shù)據(jù),每一次的數(shù)據(jù)存儲(chǔ)都要在所有節(jié)點(diǎn)上完成一次數(shù)據(jù)庫(kù)事務(wù)。在節(jié)點(diǎn)數(shù)量超過(guò)10?20時(shí),節(jié)點(diǎn)間數(shù)據(jù)的同步將消耗分布式集群系統(tǒng)的大量資源。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的目的就在于為了解決上述問(wèn)題而提供一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法。
[0008]本發(fā)明通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)上述目的:
[0009]本發(fā)明包括應(yīng)用服務(wù)器集群和數(shù)據(jù)服務(wù)器集群,所述應(yīng)用服務(wù)器集群與所述數(shù)據(jù)服務(wù)器集群通過(guò)千兆局域網(wǎng)絡(luò)通信連接。
[0010]具體地,所述數(shù)據(jù)服務(wù)器集群包括數(shù)據(jù)服務(wù)器、管理服務(wù)器、第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器、第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和虛擬服務(wù)器,所述管理服務(wù)器分別與所述數(shù)據(jù)服務(wù)器和第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和所述第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器通信連接,所述虛擬服務(wù)器分別與所述第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和所述第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器通信連接。
[0011]所述數(shù)據(jù)服務(wù)器包括多個(gè),每個(gè)所述數(shù)據(jù)服務(wù)器分別與所述管理服務(wù)器通信連接。
[0012]具體地,所述應(yīng)用服務(wù)器包括聊天服務(wù)器、文件代理服務(wù)器和語(yǔ)音視頻服務(wù)器,所述虛擬服務(wù)器與所述聊天服務(wù)器通信連接,所述虛擬服務(wù)器監(jiān)控所述文件代理服務(wù)器和所述語(yǔ)音視頻服務(wù)器。
[0013]本發(fā)明所述實(shí)時(shí)消息交換平臺(tái)分布式集群組建方法:
[0014]步驟一:所述應(yīng)用服務(wù)器集群中的服務(wù)器分為普通節(jié)點(diǎn)與網(wǎng)關(guān)節(jié)點(diǎn)兩種類(lèi)型;
[0015](I)普通節(jié)點(diǎn):向外部客戶(hù)端提供接入服務(wù),完成登錄、驗(yàn)證、會(huì)話(huà)管理、信息處理等實(shí)際業(yè)務(wù)功能的服務(wù)器。
[0016](2)網(wǎng)關(guān)節(jié)點(diǎn):對(duì)外部客戶(hù)端完全透明,不直接連接外部客戶(hù)端,僅與各普通節(jié)點(diǎn)相連,具備監(jiān)控普通節(jié)點(diǎn)存活情況,在普通節(jié)點(diǎn)間轉(zhuǎn)發(fā)消息等功能。
[0017]步驟二:所有節(jié)點(diǎn)信息存儲(chǔ)在一張全局節(jié)點(diǎn)表中,由系統(tǒng)管理人員、節(jié)點(diǎn)自己共同維護(hù)全局節(jié)點(diǎn)表中的相關(guān)信息;每個(gè)節(jié)點(diǎn)在安裝完畢后都由系統(tǒng)管理人員在全局節(jié)點(diǎn)表中增加一條節(jié)點(diǎn)數(shù)據(jù),設(shè)置節(jié)點(diǎn)名稱(chēng)為安裝時(shí)指定的節(jié)點(diǎn)名稱(chēng)、節(jié)點(diǎn)類(lèi)型為該節(jié)點(diǎn)所擔(dān)仟的角色類(lèi)型(0/1)、是否啟用設(shè)置為I/啟用、是否運(yùn)行則應(yīng)該設(shè)置為0/停止、ip為實(shí)際IP地址、描述可不填、啟動(dòng)時(shí)間由節(jié)點(diǎn)自已啟動(dòng)時(shí)進(jìn)行維護(hù);若未在全局節(jié)點(diǎn)表中記錄節(jié)點(diǎn)信息,該節(jié)點(diǎn)將無(wú)法加入集群,與其它節(jié)點(diǎn)間無(wú)法通訊。
[0018](I)節(jié)點(diǎn)啟動(dòng):節(jié)點(diǎn)在啟動(dòng)前應(yīng)確保全局節(jié)點(diǎn)表中信息的正確,并且是否啟用(isenabled)設(shè)置為I/啟用;啟動(dòng)時(shí),節(jié)點(diǎn)服務(wù)首先更新當(dāng)前結(jié)點(diǎn)的運(yùn)行狀態(tài)(isstart)為I/啟動(dòng)、啟動(dòng)時(shí)間(start_time)為當(dāng)前時(shí)間,然后查找全局節(jié)點(diǎn)表中所有已處于運(yùn)行狀態(tài)的節(jié)點(diǎn),并緩存于節(jié)點(diǎn)服務(wù)器內(nèi)存中;至此網(wǎng)關(guān)節(jié)點(diǎn)、普通節(jié)點(diǎn)按不同的算法進(jìn)行下一步動(dòng)作;
[0019](2)節(jié)點(diǎn)停止:節(jié)點(diǎn)停止分為正常停止與異常停止,無(wú)論哪種停止情況,監(jiān)控節(jié)點(diǎn)都將收到節(jié)點(diǎn)停止消息,當(dāng)無(wú)網(wǎng)關(guān)節(jié)點(diǎn)在線(xiàn)時(shí),普通節(jié)點(diǎn)遇到需要轉(zhuǎn)發(fā)到其它節(jié)點(diǎn)的消息,則會(huì)直接連接至該節(jié)點(diǎn),并監(jiān)控該節(jié)點(diǎn)的在線(xiàn)狀態(tài),被監(jiān)控節(jié)點(diǎn)停止時(shí),監(jiān)控節(jié)點(diǎn)同樣會(huì)收到節(jié)點(diǎn)停止消息,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表。
[0020](3)集群網(wǎng)絡(luò)自動(dòng)構(gòu)建:應(yīng)用服務(wù)集群由若干個(gè)節(jié)點(diǎn)構(gòu)成,其中網(wǎng)關(guān)節(jié)點(diǎn)組成集群的第一層環(huán)狀網(wǎng)絡(luò),網(wǎng)關(guān)節(jié)點(diǎn)間不相互監(jiān)控,普通節(jié)點(diǎn)組成集群的第二層網(wǎng)絡(luò),普通節(jié)點(diǎn)間不相互監(jiān)控(無(wú)網(wǎng)關(guān)節(jié)點(diǎn)時(shí)除外);
[0021]步驟三:全局session管理,客戶(hù)端登錄后,會(huì)在連接節(jié)點(diǎn)記錄session信息,以保持會(huì)話(huà)狀態(tài)。組建分布式集群網(wǎng)絡(luò)后,session信息應(yīng)該在全體節(jié)點(diǎn)中共享,因此創(chuàng)建全局session表,由全體節(jié)點(diǎn)其同維護(hù)。
[0022]步驟四:負(fù)載均衡,聊天服務(wù)器集群負(fù)載均衡分為普通節(jié)點(diǎn)的負(fù)載均衡與網(wǎng)關(guān)節(jié)點(diǎn)的負(fù)載均衡。
[0023](I)普通節(jié)點(diǎn)負(fù)載均衡,普通節(jié)點(diǎn)面向客戶(hù)端提供接入及消息處理服務(wù),一個(gè)集群網(wǎng)絡(luò)包含若干個(gè)普通節(jié)點(diǎn)但對(duì)外域名或IP只有一個(gè),利用其IP隧道或IP路由技術(shù)實(shí)現(xiàn)負(fù)載均衡。
[0024](2)網(wǎng)關(guān)節(jié)點(diǎn)負(fù)載均衡,在有多個(gè)網(wǎng)關(guān)節(jié)點(diǎn)的集群系統(tǒng)中,網(wǎng)關(guān)負(fù)載均衡按以下步驟運(yùn)行:
[0025]I)每個(gè)普通節(jié)點(diǎn)需要轉(zhuǎn)發(fā)信息時(shí),先在本地緩存中查找在線(xiàn)網(wǎng)關(guān)節(jié)點(diǎn);
[0026]2)按設(shè)定的負(fù)載均衡算法選擇一個(gè)網(wǎng)關(guān)節(jié)點(diǎn);
[0027]3)將目標(biāo)節(jié)點(diǎn)及轉(zhuǎn)發(fā)信息組包發(fā)送網(wǎng)關(guān)節(jié)點(diǎn);
[0028]4)網(wǎng)關(guān)節(jié)點(diǎn)收到一個(gè)轉(zhuǎn)發(fā)包后,判斷目標(biāo)節(jié)點(diǎn)是否在線(xiàn);[0029]5)若在線(xiàn),則轉(zhuǎn)發(fā)信息;
[0030]6)若不在線(xiàn),則轉(zhuǎn)入離線(xiàn)信息處理。
[0031]步驟五:消息路由,Server中的消息主要為分為presence、iq>message三種。
[0032](I) presence,在集群系統(tǒng)中,發(fā)送一個(gè)presence信息遵循如下路由規(guī)則:
[0033]I)查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄;
[0034]2)目標(biāo)用戶(hù)未登錄則丟棄該消息;
[0035]3)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0036]4)是本節(jié)點(diǎn),則直接發(fā)送消息;
[0037]5)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;
[0038]6)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;
[0039]7)若不是,則丟棄該消息;
[0040]8)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0041]9)若不是,則丟棄該消息;
[0042]10)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0043](2) iq,在集群系統(tǒng)中,發(fā)送一個(gè)iq信息遵循如下路由規(guī)則:
[0044]I)查找iq消息是否包含目標(biāo)用戶(hù);
[0045]2)若無(wú),則直接本節(jié)點(diǎn)進(jìn)行處理;
[0046]3)若有,查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄;
[0047]4)目標(biāo)用戶(hù)未登錄則返回錯(cuò)誤信息;
[0048]5)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0049]6)是本節(jié)點(diǎn),則直接發(fā)送消息;
[0050]7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;
[0051]8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;
[0052]9)若不是,則丟棄該消息;
[0053]10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0054]11)若不是,則丟棄該消息;
[0055]12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0056](3)message,在集群系統(tǒng)中,發(fā)送一個(gè)message信息遵循如下路由規(guī)則:
[0057]I)查找message消息的目標(biāo)用戶(hù)是否指定特定資源(res);
[0058]2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶(hù)優(yōu)先級(jí)最高的session;
[0059]3)若已指定,則判斷該用戶(hù)是否已登錄;
[0060]4)若目標(biāo)用戶(hù)未登錄,則轉(zhuǎn)入離線(xiàn)message消息處理;
[0061]5)若目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0062]6)是本節(jié)點(diǎn),則直接發(fā)送消息;
[0063]7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;[0064]8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;
[0065]9)若不是,則丟棄該消息;
[0066]10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0067]11)若不是,則轉(zhuǎn)入離線(xiàn)消息處理(可能因客戶(hù)端異常斷開(kāi)造成);
[0068]12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0069]步驟六:文件代理服務(wù)器集群,Server在文件代理服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的代理服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行文件代理傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)代理服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)碾p方都連接至同一代理服務(wù)節(jié)點(diǎn)。
[0070]步驟七:語(yǔ)音視頻服務(wù)器集群,Server在語(yǔ)音視頻服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行流數(shù)據(jù)傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)亩喾娇蛻?hù)端都連接至同一服務(wù)節(jié)點(diǎn)。
[0071]步驟八:數(shù)據(jù)庫(kù)設(shè)計(jì)采用my結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器進(jìn)行分布式集群,由I個(gè)管理節(jié)點(diǎn)、2個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)、2個(gè)數(shù)據(jù)節(jié)點(diǎn)構(gòu)成,數(shù)據(jù)分片存儲(chǔ)、復(fù)制2份,分別存儲(chǔ)于各個(gè)數(shù)據(jù)節(jié)點(diǎn)中,整體在邏輯形成一個(gè)完整的數(shù)據(jù)庫(kù),對(duì)外通過(guò)虛擬服務(wù)器由結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器提供數(shù)據(jù)訪(fǎng)問(wèn)服務(wù);后期根據(jù)數(shù)據(jù)量的增長(zhǎng)、訪(fǎng)問(wèn)量增加等實(shí)際運(yùn)行情況增加結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)以及數(shù)據(jù)節(jié)點(diǎn)的數(shù)量
[0072]進(jìn)一步,根據(jù)步驟二中的步驟(I)所述節(jié)點(diǎn)啟動(dòng)包括網(wǎng)關(guān)節(jié)點(diǎn)和普通節(jié)點(diǎn),按不同的算法進(jìn)行下一步動(dòng)作:
[0073]I)網(wǎng)關(guān)節(jié)點(diǎn):網(wǎng)關(guān)節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的普通節(jié)點(diǎn),通知各普通節(jié)自己已上線(xiàn),并發(fā)起對(duì)所有普通節(jié)點(diǎn)的監(jiān)控;網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)點(diǎn)的上線(xiàn)消息后,將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中。
[0074]2)普通節(jié)點(diǎn):普通節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的網(wǎng)關(guān)節(jié)點(diǎn),通知各網(wǎng)關(guān)節(jié)點(diǎn)自己已上線(xiàn),并發(fā)起對(duì)所有網(wǎng)關(guān)節(jié)點(diǎn)的監(jiān)控,普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的上線(xiàn)消息后,將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中。
[0075]進(jìn)一步地,根據(jù)步驟二中的步驟(2)所述節(jié)點(diǎn)停止包括正常停止與異常停止,
[0076]I)網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表:
[0077]2)普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表。
[0078]本發(fā)明的有益效果在于:
[0079]本發(fā)明的提供一種實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法,具有:
[0080]1、支持任意數(shù)量節(jié)點(diǎn)(普通/網(wǎng)關(guān))及負(fù)載均衡、極大增強(qiáng)系統(tǒng)可擴(kuò)展性;
[0081]2、通過(guò)大量節(jié)點(diǎn)提供的服務(wù)資源,極大增強(qiáng)系統(tǒng)的在線(xiàn)用戶(hù)支撐能力;
[0082]3、通過(guò)不限制節(jié)點(diǎn)啟動(dòng)順序降低系統(tǒng)運(yùn)維成本;
[0083]4、通過(guò)節(jié)點(diǎn)的動(dòng)態(tài)加入及脫離集群、自動(dòng)重構(gòu)系統(tǒng)集群網(wǎng)絡(luò),增加了系統(tǒng)動(dòng)態(tài)擴(kuò)容能力,減少系統(tǒng)停止時(shí)間、降低系統(tǒng)運(yùn)維成本;
[0084]5、通過(guò)數(shù)據(jù)數(shù)據(jù)分布式行儲(chǔ),增加系統(tǒng)對(duì)大容量數(shù)據(jù)的支撐能力、對(duì)系統(tǒng)故障抵抗能力?!緦?zhuān)利附圖】

【附圖說(shuō)明】
[0085]圖1是本發(fā)明所述數(shù)據(jù)服務(wù)器集群的結(jié)構(gòu)框圖。
[0086]圖2是本發(fā)明所述應(yīng)用服務(wù)器集群的結(jié)構(gòu)框圖。
[0087]圖3是本發(fā)明所述實(shí)時(shí)消息交換平臺(tái)節(jié)點(diǎn)啟動(dòng)示意圖。
[0088]圖4是本發(fā)明所述無(wú)網(wǎng)關(guān)集群網(wǎng)絡(luò)構(gòu)建的初始示意圖。
[0089]圖5是本發(fā)明所述無(wú)網(wǎng)關(guān)集群網(wǎng)絡(luò)構(gòu)建的節(jié)點(diǎn)構(gòu)建中間示意圖。
[0090]圖6是本發(fā)明所述無(wú)網(wǎng)關(guān)集群網(wǎng)絡(luò)構(gòu)建的節(jié)點(diǎn)構(gòu)建完成示意圖。
[0091]圖7是本發(fā)明所述實(shí)時(shí)消息交換平臺(tái)及分布式集群組建方法的集群網(wǎng)絡(luò)構(gòu)建示意圖。
【具體實(shí)施方式】
[0092]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明:
[0093]如圖1、圖2、圖3、圖4、圖5、圖6和圖7所示:本發(fā)明包括應(yīng)用服務(wù)器集群和數(shù)據(jù)服務(wù)器集群,數(shù)據(jù)服務(wù)器集群包括多個(gè)數(shù)據(jù)服務(wù)器、管理服務(wù)器、第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器、第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器、虛擬服務(wù)器、聊天服務(wù)器、文件代理服務(wù)器和語(yǔ)音視頻服務(wù)器,管理服務(wù)器分別與每個(gè)數(shù)據(jù)服務(wù)器和第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器通信連接,虛擬服務(wù)器分別與第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器、第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和應(yīng)用服務(wù)器通信連接,所述虛擬服務(wù)器監(jiān)控所述文件代理服務(wù)器和所述語(yǔ)音視頻服務(wù)器。
[0094]本發(fā)明所述實(shí)時(shí)消息交換平臺(tái)分布式集群組建方法:
[0095]步驟一:所述應(yīng)用服務(wù)器集群中的服務(wù)器分為普通節(jié)點(diǎn)與網(wǎng)關(guān)節(jié)點(diǎn)兩種類(lèi)型;
[0096](I)普通節(jié)點(diǎn):向外部客戶(hù)端提供接入服務(wù),完成登錄、驗(yàn)證、會(huì)話(huà)管理、信息處理等實(shí)際業(yè)務(wù)功能的服務(wù)器。
[0097](2)網(wǎng)關(guān)節(jié)點(diǎn):對(duì)外部客戶(hù)端完全透明,不直接連接外部客戶(hù)端,僅與各普通節(jié)點(diǎn)相連,具備監(jiān)控普通節(jié)點(diǎn)存活情況,在普通節(jié)點(diǎn)間轉(zhuǎn)發(fā)消息等功能。
[0098]步驟二:所有節(jié)點(diǎn)信息存儲(chǔ)在一張全局節(jié)點(diǎn)表中,由系統(tǒng)管理人員、節(jié)點(diǎn)自己其同維護(hù)全局節(jié)點(diǎn)表中的相關(guān)信息;每個(gè)節(jié)點(diǎn)在安裝完畢后都由系統(tǒng)管理人員在全局節(jié)點(diǎn)表中增加一條節(jié)點(diǎn)數(shù)據(jù),設(shè)置節(jié)點(diǎn)名稱(chēng)為安裝時(shí)指定的節(jié)點(diǎn)名稱(chēng)、節(jié)點(diǎn)類(lèi)型為該節(jié)點(diǎn)所擔(dān)任的角色類(lèi)型(0/1)、是否啟用設(shè)置為I/啟用、是否運(yùn)行則應(yīng)該設(shè)置為0/停止、ip為實(shí)際IP地址、描述可不填、啟動(dòng)時(shí)間由節(jié)點(diǎn)自己?jiǎn)?dòng)時(shí)進(jìn)行維護(hù);若未在全局節(jié)點(diǎn)表中記錄節(jié)點(diǎn)信息,該節(jié)點(diǎn)將無(wú)法加入集群,與其它節(jié)點(diǎn)間無(wú)法通訊。
[0099](I)節(jié)點(diǎn)啟動(dòng):節(jié)點(diǎn)在啟動(dòng)前應(yīng)確保全局節(jié)點(diǎn)表中信息的正確,并且是否啟用(isenabled)設(shè)置為I/啟用;啟動(dòng)時(shí),節(jié)點(diǎn)服務(wù)首先更新當(dāng)前結(jié)點(diǎn)的運(yùn)行狀態(tài)(isstart)為I/啟動(dòng)、啟動(dòng)時(shí)間(start_time)為當(dāng)前時(shí)間,然后查找全局節(jié)點(diǎn)表中所有已處于運(yùn)行狀態(tài)的節(jié)點(diǎn),并緩存于節(jié)點(diǎn)服務(wù)器內(nèi)存中;至此網(wǎng)關(guān)節(jié)點(diǎn)、普通節(jié)點(diǎn)按不同的算法進(jìn)行下一步動(dòng)作;
[0100]I)網(wǎng)關(guān)節(jié)點(diǎn):網(wǎng)關(guān)節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的普通節(jié)點(diǎn),通知各普通節(jié)點(diǎn)己已上線(xiàn),并發(fā)起對(duì)所有普通節(jié)點(diǎn)的監(jiān)控;網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)中點(diǎn)的上線(xiàn)消息后,將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中。[0101]2)普通節(jié)點(diǎn):普通節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的網(wǎng)關(guān)節(jié)點(diǎn),通知各網(wǎng)關(guān)節(jié)點(diǎn)自己已上線(xiàn),并發(fā)起對(duì)所有網(wǎng)關(guān)節(jié)點(diǎn)的監(jiān)控,普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的上線(xiàn)消息后將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中。
[0102](2)節(jié)點(diǎn)停止:節(jié)點(diǎn)停止分為正常停止與異常停止,無(wú)論哪種停止情況,監(jiān)控節(jié)點(diǎn)都將收到節(jié)點(diǎn)停止消息,當(dāng)無(wú)網(wǎng)關(guān)節(jié)點(diǎn)在線(xiàn)時(shí),普通節(jié)點(diǎn)遇到需要轉(zhuǎn)發(fā)到其它節(jié)點(diǎn)的消息,則會(huì)直接連接至該節(jié)點(diǎn),并監(jiān)控該節(jié)點(diǎn)的在線(xiàn)狀態(tài),被監(jiān)控節(jié)點(diǎn)停止時(shí),監(jiān)控節(jié)點(diǎn)同樣會(huì)收到節(jié)點(diǎn)停止消息,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表。
[0103]I)網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表;
[0104]2)普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表。
[0105](3)集群網(wǎng)絡(luò)自動(dòng)構(gòu)建:應(yīng)用服務(wù)集群由若干個(gè)節(jié)點(diǎn)構(gòu)成,其中網(wǎng)關(guān)節(jié)點(diǎn)組成集群的第一層環(huán)狀網(wǎng)絡(luò),網(wǎng)關(guān)節(jié)點(diǎn)間不相互監(jiān)控,普通節(jié)點(diǎn)組成集群的第二層網(wǎng)絡(luò)普通節(jié)點(diǎn)間不相互監(jiān)控(無(wú)網(wǎng)關(guān)節(jié)點(diǎn)時(shí)除外);
[0106]步驟三:全局session管理,客戶(hù)端登錄后,會(huì)在連接節(jié)點(diǎn)記錄session信息,以保持會(huì)話(huà)狀態(tài)。組建分布式集群網(wǎng)絡(luò)后,session信息應(yīng)該在全體節(jié)點(diǎn)中共享,因此創(chuàng)建全局session表,由全體節(jié)點(diǎn)共同維護(hù)。
[0107]步驟四:負(fù)載均衡,聊天服務(wù)器集群負(fù)載均衡分為普通節(jié)點(diǎn)的負(fù)載均衡與網(wǎng)關(guān)節(jié)點(diǎn)的負(fù)載均衡。
[0108](I)普通節(jié)點(diǎn)負(fù)載均衡,普通節(jié)點(diǎn)面向客戶(hù)端提供接入及消息處理服務(wù),一個(gè)集群網(wǎng)絡(luò)包含若干個(gè)普通節(jié)點(diǎn),但對(duì)外域名或IP只有一個(gè),利用其IP隧道或IP路由技術(shù)實(shí)現(xiàn)負(fù)載均衡。
[0109](2)網(wǎng)關(guān)節(jié)點(diǎn)負(fù)載均衡,在有多個(gè)網(wǎng)關(guān)節(jié)點(diǎn)的集群系統(tǒng)中,網(wǎng)關(guān)負(fù)載均衡按以下步驟運(yùn)行:
[0110]I)每個(gè)普通節(jié)點(diǎn)需要轉(zhuǎn)發(fā)信息時(shí),先在本地緩存中查找在線(xiàn)網(wǎng)關(guān)節(jié)點(diǎn);
[0111]2)按設(shè)定的負(fù)載均衡算法選擇一個(gè)網(wǎng)關(guān)節(jié)點(diǎn);
[0112]3)將目標(biāo)節(jié)點(diǎn)及轉(zhuǎn)發(fā)信息組包發(fā)送網(wǎng)關(guān)節(jié)點(diǎn);
[0113]4)網(wǎng)關(guān)節(jié)點(diǎn)收到一個(gè)轉(zhuǎn)發(fā)包后,判斷目標(biāo)節(jié)點(diǎn)是否在線(xiàn);
[0114]5)若在線(xiàn),則轉(zhuǎn)發(fā)信息;
[0115]6)若不在線(xiàn),則轉(zhuǎn)入離線(xiàn)信息處理。
[0116]步驟五:消息路由,Server中的消息主要為分為presenceiq、message三種。
[0117](I) presence,在集群系統(tǒng)中,發(fā)送一個(gè)presence信息遵循如下路由規(guī)則:
[0118]I)查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄;
[0119]2)目標(biāo)用戶(hù)未登錄則丟棄該消息;
[0120]3)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0121]4)是本節(jié)點(diǎn),則直接發(fā)送消息;
[0122]5)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;
[0123]6)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;[0124]7)若不是,則丟棄該消息;
[0125]8)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0126]9)若不是,則丟棄該消息;
[0127]10)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0128](2) iq,在集群系統(tǒng)中,發(fā)送一個(gè)iq信息遵循如下路由規(guī)則:
[0129]I)查找iq消息是否包含目標(biāo)用戶(hù);
[0130]2)若無(wú),則直接本節(jié)點(diǎn)進(jìn)行處理;
[0131]3)若有,查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄;
[0132]4)目標(biāo)用戶(hù)未登錄則返回錯(cuò)誤信息;
[0133]5)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0134]6)是本節(jié)點(diǎn)則直接發(fā)送消息;
[0135]7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;
[0136]8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;
[0137]9)若不是,則丟棄該消息;
[0138]10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0139]11)若不是,則丟棄該消息;
[0140]12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0141](3) message
[0142]在集群系統(tǒng)中,發(fā)送一個(gè)message信息遵循如下路由規(guī)則:
[0143]I)查找message消息的目標(biāo)用戶(hù)是否指定特定資源(res);
[0144]2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶(hù)優(yōu)先級(jí)最高的session ;
[0145]3)若已指定,則判斷該用戶(hù)是否已登錄;
[0146]4)若目標(biāo)用戶(hù)未登錄,則轉(zhuǎn)入離線(xiàn)message消息處理;
[0147]5)若目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn);
[0148]6)是本節(jié)點(diǎn),則直接發(fā)送消息;
[0149]7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息;
[0150]8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己;
[0151]9)若不是,則丟棄該消息;
[0152]10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄;
[0153]11)若不是,則轉(zhuǎn)入離線(xiàn)消息處理(可能因客戶(hù)端異常斷開(kāi)造成);
[0154]12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。
[0155]步驟六:文件代理服務(wù)器集群,Server在文件代理服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的代理服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行文件代理傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)代理服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)碾p方都連接至同一代理服務(wù)節(jié)點(diǎn)。
[0156]步驟七:語(yǔ)音視頻服務(wù)器集群,Server在語(yǔ)音視頻服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行流數(shù)據(jù)傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)亩喾娇蛻?hù)端都連接至同一服務(wù)節(jié)點(diǎn)。
[0157]步驟八:數(shù)據(jù)庫(kù)設(shè)計(jì)采用my結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器進(jìn)行分布式集群,由I個(gè)管理節(jié)點(diǎn)、2個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)、2個(gè)數(shù)據(jù)節(jié)點(diǎn)構(gòu)成,數(shù)據(jù)分片存儲(chǔ)復(fù)制2份,分別存儲(chǔ)于各個(gè)數(shù)據(jù)節(jié)點(diǎn)中,整體在邏輯形成一個(gè)完整的數(shù)據(jù)庫(kù),對(duì)外通過(guò)虛擬服務(wù)器由結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器提供數(shù)據(jù)訪(fǎng)問(wèn)服務(wù);后期根據(jù)數(shù)據(jù)量的增長(zhǎng)訪(fǎng)問(wèn)量增加等實(shí)際運(yùn)行情況增加結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)以及數(shù)據(jù)節(jié)點(diǎn)的數(shù)量。
[0158]如圖3所示:其中G為網(wǎng)關(guān)節(jié)點(diǎn),N為普通節(jié)點(diǎn),Gl為跟新運(yùn)行狀態(tài)/啟動(dòng)時(shí)間、G2為查找運(yùn)行的普通節(jié)點(diǎn)、G3為通知普通節(jié)點(diǎn)并監(jiān)控、NI為跟新運(yùn)行狀態(tài)/啟動(dòng)時(shí)間、N2為查找運(yùn)行的普通節(jié)點(diǎn)、N3為通知普通節(jié)點(diǎn)并臨控。
[0159]如圖4、圖5和圖6所示:當(dāng)需要啟動(dòng)節(jié)點(diǎn)時(shí),普通節(jié)點(diǎn)相連接,最終完成普通節(jié)點(diǎn)啟動(dòng)。
[0160]如圖7所示:當(dāng)普通節(jié)點(diǎn)需要啟動(dòng)時(shí),普通節(jié)點(diǎn)2選擇以有的網(wǎng)關(guān)節(jié)點(diǎn)I進(jìn)行啟動(dòng),普通節(jié)點(diǎn)3選擇以有的網(wǎng)關(guān)節(jié)點(diǎn)I進(jìn)行啟動(dòng),普通節(jié)點(diǎn)4選擇以有的網(wǎng)關(guān)節(jié)點(diǎn)I進(jìn)行啟動(dòng),網(wǎng)關(guān)節(jié)點(diǎn)5選擇以有的普通節(jié)點(diǎn)2、3、4進(jìn)行啟動(dòng),普通節(jié)點(diǎn)6選擇以有的網(wǎng)關(guān)節(jié)點(diǎn)I和5進(jìn)行啟動(dòng)。
【權(quán)利要求】
1.一種實(shí)時(shí)消息交換平臺(tái),其特征在于:包括應(yīng)用服務(wù)器集群和數(shù)據(jù)服務(wù)器集群,所述應(yīng)用服務(wù)器集群與所述數(shù)據(jù)服務(wù)器集群通過(guò)千兆局域網(wǎng)絡(luò)通信連接。
2.根據(jù)權(quán)利要求1所述的實(shí)時(shí)消息交換平臺(tái),其特征在于:所述數(shù)據(jù)服務(wù)器集群包括數(shù)據(jù)服務(wù)器、管理服務(wù)器、第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器、第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和虛擬服務(wù)器,所述管理服務(wù)器分別與所述數(shù)據(jù)服務(wù)器和第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和所述第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器通信連接,所述虛擬服務(wù)器分別與所述第一結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器和所述第二結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器通信連接。
3.根據(jù)權(quán)利要求2所述的實(shí)時(shí)消息交換平臺(tái),其特征在于:所述數(shù)據(jù)服務(wù)器包括多個(gè),每個(gè)所述數(shù)據(jù)服務(wù)器分別與所述管理服務(wù)器通信連接。
4.根據(jù)權(quán)利要求1或2所述的實(shí)時(shí)消息交換平臺(tái),其特征在于:所述應(yīng)用服務(wù)器包括聊天服務(wù)器、文件代理服務(wù)器和語(yǔ)音視頻服務(wù)器,所述虛擬服務(wù)器與所述聊天服務(wù)器通信連接,所述虛擬服務(wù)器監(jiān)控所述文件代理服務(wù)器和所述語(yǔ)音視頻服務(wù)器。
5.一種實(shí)時(shí)消息交換平臺(tái)分布式集群組建方法,其特征在于: 步驟一:所述應(yīng)用服務(wù)器集群中的服務(wù)器分為普通節(jié)點(diǎn)與網(wǎng)關(guān)節(jié)點(diǎn)兩種類(lèi)型; (1)普通節(jié)點(diǎn):向外部客戶(hù)端提供接入服務(wù),完成登錄、驗(yàn)證、會(huì)話(huà)管理、信息處理等實(shí)際業(yè)務(wù)功能的服務(wù)器; (2)網(wǎng)關(guān)節(jié)點(diǎn):對(duì)外部客戶(hù)端完全透明,不直接連接外部客戶(hù)端,僅與各普通節(jié)點(diǎn)相連,具備監(jiān)控普通節(jié)點(diǎn)存活情況,在普通節(jié)點(diǎn)間轉(zhuǎn)發(fā)消息等功能。 步驟二:所有節(jié)點(diǎn)信息存儲(chǔ)在一張全局節(jié)點(diǎn)表中,由系統(tǒng)管理人員、節(jié)點(diǎn)自己共同維護(hù)全局節(jié)點(diǎn)表中的相關(guān)信息;每個(gè)節(jié)點(diǎn)在安裝完畢后都由系統(tǒng)管理人員在全局節(jié)點(diǎn)表中增加一條節(jié)點(diǎn)數(shù)據(jù),設(shè)置節(jié)點(diǎn)名稱(chēng)為安裝時(shí)指定的節(jié)點(diǎn)名稱(chēng)、節(jié)點(diǎn)類(lèi)型為該節(jié)點(diǎn)所擔(dān)仟的角色類(lèi)型(0/1)、是否啟用設(shè)置為I/啟用、是否運(yùn)行則應(yīng)該設(shè)置為0/停止、ip為實(shí)際IP地址、描述可不填、啟動(dòng)時(shí)間由節(jié)點(diǎn)自已啟動(dòng)時(shí)進(jìn)行維護(hù);若未在全局節(jié)點(diǎn)表中記錄節(jié)點(diǎn)信息,該節(jié)點(diǎn)將無(wú)法加入集群,與其它節(jié)點(diǎn)間無(wú)法通訊。 (1)節(jié)點(diǎn)啟動(dòng):節(jié)點(diǎn)在啟動(dòng)前應(yīng)確保全局節(jié)點(diǎn)表中信息的正確,并且是否啟用(isenabled)設(shè)置為I/啟用;啟動(dòng)時(shí),節(jié)點(diǎn)服務(wù)首先更新當(dāng)前結(jié)點(diǎn)的運(yùn)行狀態(tài)(isstart)為I/啟動(dòng)、啟動(dòng)時(shí)間(start_time)為當(dāng)前時(shí)間,然后查找全局節(jié)點(diǎn)表中所有已處于運(yùn)行狀態(tài)的節(jié)點(diǎn),并緩存于節(jié)點(diǎn)服務(wù)器內(nèi)存中;至此網(wǎng)關(guān)節(jié)點(diǎn)、普通節(jié)點(diǎn)按不同的算法進(jìn)行下一步動(dòng)作; (2)節(jié)點(diǎn)停止:節(jié)點(diǎn)停止分為正常停止與異常停止,無(wú)論哪種停止情況,監(jiān)控節(jié)點(diǎn)都將收到節(jié)點(diǎn)停止消息,當(dāng)無(wú)網(wǎng)關(guān)節(jié)點(diǎn)在線(xiàn)時(shí),普通節(jié)點(diǎn)遇到需要轉(zhuǎn)發(fā)到其它節(jié)點(diǎn)的消息,則會(huì)直接連接至該節(jié)點(diǎn),并監(jiān)控該節(jié)點(diǎn)的在線(xiàn)狀態(tài),被監(jiān)控節(jié)點(diǎn)停止時(shí),監(jiān)控節(jié)點(diǎn)同樣會(huì)收到節(jié)點(diǎn)停止消息,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表; (3)集群網(wǎng)絡(luò)自動(dòng)構(gòu)建:應(yīng)用服務(wù)集群由若干個(gè)節(jié)點(diǎn)構(gòu)成,其中網(wǎng)關(guān)節(jié)點(diǎn)組成集群的第一層環(huán)狀網(wǎng)絡(luò),網(wǎng)關(guān)節(jié)點(diǎn)間不相互監(jiān)控,普通節(jié)點(diǎn)組成集群的第二層網(wǎng)絡(luò),普通節(jié)點(diǎn)間不相互監(jiān)控(無(wú)網(wǎng)關(guān)節(jié)點(diǎn)時(shí)除外)。 步驟三:全局session管理,客戶(hù)端登錄后,會(huì)在連接節(jié)點(diǎn)記錄session信息,以保持會(huì)話(huà)狀態(tài)。組建分布式集群網(wǎng)絡(luò)后,session信息應(yīng)該在全體節(jié)點(diǎn)中共亨,因此創(chuàng)建全局session表,由全體節(jié)點(diǎn)共同維護(hù)。步驟四:負(fù)載均衡,聊天服務(wù)器集群負(fù)載均衡分為普通節(jié)點(diǎn)的負(fù)載均衡與網(wǎng)關(guān)節(jié)點(diǎn)的負(fù)載均衡。 (1)普通節(jié)點(diǎn)負(fù)載均衡,普通節(jié)點(diǎn)面向客戶(hù)端提供接入及消息處理服務(wù),一個(gè)集群網(wǎng)絡(luò)包含若干個(gè)普通節(jié)點(diǎn),但對(duì)外域名或IP只有一個(gè),利用其IP隧道或IP路由技術(shù)實(shí)現(xiàn)負(fù)載均衡; (2)網(wǎng)關(guān)節(jié)點(diǎn)負(fù)載均衡,在有多個(gè)網(wǎng)關(guān)節(jié)點(diǎn)的集群系統(tǒng)中,網(wǎng)關(guān)負(fù)載均衡按以下步驟運(yùn)行: 1)每個(gè)普通節(jié)點(diǎn)需要轉(zhuǎn)發(fā)信息時(shí),先在本地緩存中查找在線(xiàn)網(wǎng)關(guān)節(jié)點(diǎn); 2)按設(shè)定的負(fù)載均衡算法選擇一個(gè)網(wǎng)關(guān)節(jié)點(diǎn); 3)將目標(biāo)節(jié)點(diǎn)及轉(zhuǎn)發(fā)信息組包發(fā)送網(wǎng)關(guān)節(jié)點(diǎn); 4)網(wǎng)關(guān)節(jié)點(diǎn)收到一個(gè)轉(zhuǎn)發(fā)包后,判斷目標(biāo)節(jié)點(diǎn)是否在線(xiàn); 5)若在線(xiàn),則轉(zhuǎn)發(fā)信息; 6)若不在線(xiàn),則轉(zhuǎn)入離線(xiàn)信息處理。 步驟五:消息路由,Server中的消息主要為分為presence、iq>message三種。 (1)presence,在集群系統(tǒng)中,發(fā)送一個(gè)presence信息遵循如下路由規(guī)則: 1)查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄; 2)目標(biāo)用戶(hù)未登錄則丟棄該消息; 3)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn); 4)是本節(jié)點(diǎn),則直接發(fā)送消息; 5)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息; 6)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己; 7)若不是,則丟棄該消息; 8)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄; 9)若不是,則丟棄該消息; 10)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。 (2)iq,在集群系統(tǒng)中,發(fā)送一個(gè)iq信息遵循如下路由規(guī)則: 1)查找iq消息是否包含目標(biāo)用戶(hù); 2)若無(wú),則直接本節(jié)點(diǎn)進(jìn)行處理; 3)若有,查找目標(biāo)用戶(hù)(xxx@yyycom/zzz)是否已登錄; 4)目標(biāo)用戶(hù)未登錄則返回錯(cuò)誤信息; 5)目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn); 6)是本節(jié)點(diǎn),則直接發(fā)送消息; 7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息; 8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己; 9)若不是,則丟棄該消息; 10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄; 11)若不是,則丟棄該消息; 12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。 (3)message,在集群系統(tǒng)中,發(fā)送一個(gè)message信息遵循如下路由規(guī)則:1)查找message消息的目標(biāo)用戶(hù)是否指定特定資源(res); 2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶(hù)優(yōu)先級(jí)最高的session ; 3)若已指定,則判斷該用戶(hù)是否已登錄; 4)若目標(biāo)用戶(hù)未登錄,則轉(zhuǎn)入離線(xiàn)message消息處理; 5)若目標(biāo)用戶(hù)已登錄,判斷其登錄節(jié)點(diǎn)是否本節(jié)點(diǎn); 6)是本節(jié)點(diǎn),則直接發(fā)送消息; 7)不是本節(jié)點(diǎn),將目標(biāo)節(jié)點(diǎn)與消息組包,按負(fù)載均衡算法選擇一網(wǎng)關(guān)節(jié)點(diǎn),轉(zhuǎn)發(fā)消息; 8)普通節(jié)點(diǎn)收到一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來(lái)消息后,判斷目標(biāo)節(jié)點(diǎn)是否自己; 9)若不是,則丟棄該消息; 10)若是,則判斷目標(biāo)用戶(hù)是否在本結(jié)點(diǎn)登錄; 11)若不是,則轉(zhuǎn)入離線(xiàn)消息處理(可能因客戶(hù)端異常斷開(kāi)造成); 12)若是,則向目標(biāo)用戶(hù)發(fā)送該消息。 步驟六:文件代理服務(wù)器集群,Server在文件代理服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的代理服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行文件代理傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)代理服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)碾p方都連接至同一代理服務(wù)節(jié)點(diǎn)。 步驟七:語(yǔ)音視頻服務(wù)器集群,Server在語(yǔ)音視頻服務(wù)器集群時(shí),考慮將每個(gè)節(jié)點(diǎn)的服務(wù)映射到對(duì)外域名或IP的一個(gè)特定端口,在進(jìn)行流數(shù)據(jù)傳輸前由服務(wù)器為客戶(hù)端分配一個(gè)服務(wù)節(jié)點(diǎn),確保參與傳輸?shù)亩喾娇蛻?hù)端都連接至同一服務(wù)節(jié)點(diǎn)。 步驟八:數(shù)據(jù)庫(kù)設(shè)計(jì)采用my結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器進(jìn)行分布式集群,由I個(gè)管理節(jié)點(diǎn)、2個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)、2個(gè)數(shù)據(jù)節(jié)點(diǎn)構(gòu)成,數(shù)據(jù)分片存儲(chǔ)、復(fù)制2份,分別存儲(chǔ)于各個(gè)數(shù)據(jù)節(jié)點(diǎn)中,整體在邏輯形成一個(gè)完整的數(shù)據(jù)庫(kù),對(duì)外通過(guò)虛擬服務(wù)器由結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器提供數(shù)據(jù)訪(fǎng)問(wèn)服務(wù);后期根據(jù)數(shù)據(jù)量的增長(zhǎng)、訪(fǎng)問(wèn)量增加等實(shí)際運(yùn)行情況增加結(jié)構(gòu)化查詢(xún)語(yǔ)言服務(wù)器節(jié)點(diǎn)以及數(shù)據(jù)節(jié)點(diǎn)的數(shù)量。
6.根據(jù)權(quán)利要求5所述的實(shí)時(shí)消息交換平臺(tái)分布式集群組建方法,其特征在于:根據(jù)步驟二中的步驟(I)所述節(jié)點(diǎn)啟動(dòng)包括網(wǎng)關(guān)節(jié)點(diǎn)和普通節(jié)點(diǎn),按不同的算法進(jìn)行下一步動(dòng)作: 1)網(wǎng)關(guān)節(jié)點(diǎn):網(wǎng)關(guān)節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的普通節(jié)點(diǎn),通知各普通節(jié)點(diǎn)自己已上線(xiàn),并發(fā)起對(duì)所有普通節(jié)點(diǎn)的監(jiān)控;網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)點(diǎn)的上線(xiàn)消息后,將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中; 2)普通節(jié)點(diǎn):普通節(jié)點(diǎn)查找全局節(jié)點(diǎn)表中所有運(yùn)行的網(wǎng)關(guān)節(jié)點(diǎn)通知各網(wǎng)關(guān)節(jié)點(diǎn)自己已上線(xiàn),并發(fā)起對(duì)所有網(wǎng)關(guān)節(jié)點(diǎn)的監(jiān)控,普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的上線(xiàn)消息后,將其更新到本地在線(xiàn)節(jié)點(diǎn)緩存中。
7.根據(jù)權(quán)利要求5所述的實(shí)時(shí)消息交換平臺(tái)分布式集群組建方法,其特征在于:根據(jù)步驟二中的步驟(2)所述節(jié)點(diǎn)停止包括正常停止與異常停止, 1)網(wǎng)關(guān)節(jié)點(diǎn)收到普通節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表: 2)普通節(jié)點(diǎn)收到網(wǎng)關(guān)節(jié)點(diǎn)的停止消息后,將其從本地在線(xiàn)節(jié)點(diǎn)緩存中刪除,并同步至全局節(jié)點(diǎn)表。
【文檔編號(hào)】H04L29/08GK103475566SQ201310287701
【公開(kāi)日】2013年12月25日 申請(qǐng)日期:2013年7月10日 優(yōu)先權(quán)日:2013年7月10日
【發(fā)明者】陳剛 申請(qǐng)人:北京發(fā)發(fā)時(shí)代信息技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
伽师县| 邢台县| 响水县| 富源县| 茶陵县| 淮南市| 福州市| 依兰县| 乐东| 永新县| 全椒县| 高要市| 永年县| 华安县| 海南省| 宜宾县| 遂宁市| 兴业县| 丰顺县| 延寿县| 莱州市| 象州县| 历史| 福州市| 滨海县| 广宁县| 偃师市| 贺兰县| 通河县| 克拉玛依市| 五莲县| 台东县| 维西| 邓州市| 商河县| 桂东县| 宁南县| 北辰区| 菏泽市| 宁都县| 衡阳县|