一種實時消息交換平臺及分布式集群組建方法
【專利摘要】本發明公開了一種實時消息交換平臺及分布式集群組建方法,包括應用服務器集群和數據服務器集群,所述應用服務器集群與所述數據服務器集群通過千兆局域網絡通信連接。本發明具有支持任意數量節點(普通/網關)及負載均衡、極大增強系統可擴展性;通過大量節點提供的服務資源,極大增強系統的在線用戶支撐能力;通過不限制節點啟動順序降低系統運維成本;通過節點的動態加入及脫離集群、自動重構系統集群網絡,增加了系統動態擴容能力,減少系統停止時間、降低系統運維成本;通過數據數據分布式存儲,增加系統對大容量數據的支撐能力、對系統故障抵抗能力的優點。
【專利說明】一種實時消息交換平臺及分布式集群組建方法
【技術領域】
[0001]本發明涉及一種實時消息交換平臺,尤其涉及一種實時消息交換平臺及分布式集群組建方法。
【背景技術】
[0002]實時消息交換平臺(Server)擴展了標準XMPP協議,實現群組、部門、會議、文件傳輸與共享、語音、視頻等功能,數據庫采用的是mnesia,在所有服務器間復制并分布式存儲數據。受初始設計所限,原系統(ejabberd2111)存在以下問題:
[0003](I)集群系統擴展能力受限(上限10?20臺)
[0004]原系統僅有一種類型的服務器節點,每臺服務器節點都為外部客戶端提供服務,節點間的互連與數據交換則通過節點間的TCP長連接形成的網格狀集群網絡來進行。在N個節點的網絡中,僅節點間的連接就需要N* (N-1) /2個,假設20個節點的集群網絡,節點間數據通訊就將耗用190個連接,100個節點則將達到4950個連接。在服務器數量增長的情況下,整個系統資源的內部消耗更為可怕若集群節點數量上限估計為20個,按每個節點支撐在線用戶5000?10000個計算,20個節點的服務器集群系統預計支撐在線用戶數量為100000 ?200000。
[0005](2)數據庫(mnesia)支撐能力受限
[0006]原系統采用mnesia數據庫存儲用戶數據,包含帳號信息、離線消息、會話信息、用戶名片等。通過mnesia的分布式數據存儲機制,用戶信息存儲在所有服務器上,每一個節點都需要存儲全部或部分的數據,每一次的數據存儲都要在所有節點上完成一次數據庫事務。在節點數量超過10?20時,節點間數據的同步將消耗分布式集群系統的大量資源。
【發明內容】
[0007]本發明的目的就在于為了解決上述問題而提供一種實時消息交換平臺及分布式集群組建方法。
[0008]本發明通過以下技術方案來實現上述目的:
[0009]本發明包括應用服務器集群和數據服務器集群,所述應用服務器集群與所述數據服務器集群通過千兆局域網絡通信連接。
[0010]具體地,所述數據服務器集群包括數據服務器、管理服務器、第一結構化查詢語言服務器、第二結構化查詢語言服務器和虛擬服務器,所述管理服務器分別與所述數據服務器和第一結構化查詢語言服務器和所述第二結構化查詢語言服務器通信連接,所述虛擬服務器分別與所述第一結構化查詢語言服務器和所述第二結構化查詢語言服務器通信連接。
[0011]所述數據服務器包括多個,每個所述數據服務器分別與所述管理服務器通信連接。
[0012]具體地,所述應用服務器包括聊天服務器、文件代理服務器和語音視頻服務器,所述虛擬服務器與所述聊天服務器通信連接,所述虛擬服務器監控所述文件代理服務器和所述語音視頻服務器。
[0013]本發明所述實時消息交換平臺分布式集群組建方法:
[0014]步驟一:所述應用服務器集群中的服務器分為普通節點與網關節點兩種類型;
[0015](I)普通節點:向外部客戶端提供接入服務,完成登錄、驗證、會話管理、信息處理等實際業務功能的服務器。
[0016](2)網關節點:對外部客戶端完全透明,不直接連接外部客戶端,僅與各普通節點相連,具備監控普通節點存活情況,在普通節點間轉發消息等功能。
[0017]步驟二:所有節點信息存儲在一張全局節點表中,由系統管理人員、節點自己共同維護全局節點表中的相關信息;每個節點在安裝完畢后都由系統管理人員在全局節點表中增加一條節點數據,設置節點名稱為安裝時指定的節點名稱、節點類型為該節點所擔仟的角色類型(0/1)、是否啟用設置為I/啟用、是否運行則應該設置為0/停止、ip為實際IP地址、描述可不填、啟動時間由節點自已啟動時進行維護;若未在全局節點表中記錄節點信息,該節點將無法加入集群,與其它節點間無法通訊。
[0018](I)節點啟動:節點在啟動前應確保全局節點表中信息的正確,并且是否啟用(isenabled)設置為I/啟用;啟動時,節點服務首先更新當前結點的運行狀態(isstart)為I/啟動、啟動時間(start_time)為當前時間,然后查找全局節點表中所有已處于運行狀態的節點,并緩存于節點服務器內存中;至此網關節點、普通節點按不同的算法進行下一步動作;
[0019](2)節點停止:節點停止分為正常停止與異常停止,無論哪種停止情況,監控節點都將收到節點停止消息,當無網關節點在線時,普通節點遇到需要轉發到其它節點的消息,則會直接連接至該節點,并監控該節點的在線狀態,被監控節點停止時,監控節點同樣會收到節點停止消息,將其從本地在線節點緩存中刪除,并同步至全局節點表。
[0020](3)集群網絡自動構建:應用服務集群由若干個節點構成,其中網關節點組成集群的第一層環狀網絡,網關節點間不相互監控,普通節點組成集群的第二層網絡,普通節點間不相互監控(無網關節點時除外);
[0021]步驟三:全局session管理,客戶端登錄后,會在連接節點記錄session信息,以保持會話狀態。組建分布式集群網絡后,session信息應該在全體節點中共享,因此創建全局session表,由全體節點其同維護。
[0022]步驟四:負載均衡,聊天服務器集群負載均衡分為普通節點的負載均衡與網關節點的負載均衡。
[0023](I)普通節點負載均衡,普通節點面向客戶端提供接入及消息處理服務,一個集群網絡包含若干個普通節點但對外域名或IP只有一個,利用其IP隧道或IP路由技術實現負載均衡。
[0024](2)網關節點負載均衡,在有多個網關節點的集群系統中,網關負載均衡按以下步驟運行:
[0025]I)每個普通節點需要轉發信息時,先在本地緩存中查找在線網關節點;
[0026]2)按設定的負載均衡算法選擇一個網關節點;
[0027]3)將目標節點及轉發信息組包發送網關節點;
[0028]4)網關節點收到一個轉發包后,判斷目標節點是否在線;[0029]5)若在線,則轉發信息;
[0030]6)若不在線,則轉入離線信息處理。
[0031]步驟五:消息路由,Server中的消息主要為分為presence、iq>message三種。
[0032](I) presence,在集群系統中,發送一個presence信息遵循如下路由規則:
[0033]I)查找目標用戶(xxx@yyycom/zzz)是否已登錄;
[0034]2)目標用戶未登錄則丟棄該消息;
[0035]3)目標用戶已登錄,判斷其登錄節點是否本節點;
[0036]4)是本節點,則直接發送消息;
[0037]5)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;
[0038]6)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;
[0039]7)若不是,則丟棄該消息;
[0040]8)若是,則判斷目標用戶是否在本結點登錄;
[0041]9)若不是,則丟棄該消息;
[0042]10)若是,則向目標用戶發送該消息。
[0043](2) iq,在集群系統中,發送一個iq信息遵循如下路由規則:
[0044]I)查找iq消息是否包含目標用戶;
[0045]2)若無,則直接本節點進行處理;
[0046]3)若有,查找目標用戶(xxx@yyycom/zzz)是否已登錄;
[0047]4)目標用戶未登錄則返回錯誤信息;
[0048]5)目標用戶已登錄,判斷其登錄節點是否本節點;
[0049]6)是本節點,則直接發送消息;
[0050]7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;
[0051]8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;
[0052]9)若不是,則丟棄該消息;
[0053]10)若是,則判斷目標用戶是否在本結點登錄;
[0054]11)若不是,則丟棄該消息;
[0055]12)若是,則向目標用戶發送該消息。
[0056](3)message,在集群系統中,發送一個message信息遵循如下路由規則:
[0057]I)查找message消息的目標用戶是否指定特定資源(res);
[0058]2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶優先級最高的session;
[0059]3)若已指定,則判斷該用戶是否已登錄;
[0060]4)若目標用戶未登錄,則轉入離線message消息處理;
[0061]5)若目標用戶已登錄,判斷其登錄節點是否本節點;
[0062]6)是本節點,則直接發送消息;
[0063]7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;[0064]8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;
[0065]9)若不是,則丟棄該消息;
[0066]10)若是,則判斷目標用戶是否在本結點登錄;
[0067]11)若不是,則轉入離線消息處理(可能因客戶端異常斷開造成);
[0068]12)若是,則向目標用戶發送該消息。
[0069]步驟六:文件代理服務器集群,Server在文件代理服務器集群時,考慮將每個節點的代理服務映射到對外域名或IP的一個特定端口,在進行文件代理傳輸前由服務器為客戶端分配一個代理服務節點,確保參與傳輸的雙方都連接至同一代理服務節點。
[0070]步驟七:語音視頻服務器集群,Server在語音視頻服務器集群時,考慮將每個節點的服務映射到對外域名或IP的一個特定端口,在進行流數據傳輸前由服務器為客戶端分配一個服務節點,確保參與傳輸的多方客戶端都連接至同一服務節點。
[0071]步驟八:數據庫設計采用my結構化查詢語言服務器進行分布式集群,由I個管理節點、2個結構化查詢語言服務器節點、2個數據節點構成,數據分片存儲、復制2份,分別存儲于各個數據節點中,整體在邏輯形成一個完整的數據庫,對外通過虛擬服務器由結構化查詢語言服務器提供數據訪問服務;后期根據數據量的增長、訪問量增加等實際運行情況增加結構化查詢語言服務器節點以及數據節點的數量
[0072]進一步,根據步驟二中的步驟(I)所述節點啟動包括網關節點和普通節點,按不同的算法進行下一步動作:
[0073]I)網關節點:網關節點查找全局節點表中所有運行的普通節點,通知各普通節自己已上線,并發起對所有普通節點的監控;網關節點收到普通節點的上線消息后,將其更新到本地在線節點緩存中。
[0074]2)普通節點:普通節點查找全局節點表中所有運行的網關節點,通知各網關節點自己已上線,并發起對所有網關節點的監控,普通節點收到網關節點的上線消息后,將其更新到本地在線節點緩存中。
[0075]進一步地,根據步驟二中的步驟(2)所述節點停止包括正常停止與異常停止,
[0076]I)網關節點收到普通節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表:
[0077]2)普通節點收到網關節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表。
[0078]本發明的有益效果在于:
[0079]本發明的提供一種實時消息交換平臺及分布式集群組建方法,具有:
[0080]1、支持任意數量節點(普通/網關)及負載均衡、極大增強系統可擴展性;
[0081]2、通過大量節點提供的服務資源,極大增強系統的在線用戶支撐能力;
[0082]3、通過不限制節點啟動順序降低系統運維成本;
[0083]4、通過節點的動態加入及脫離集群、自動重構系統集群網絡,增加了系統動態擴容能力,減少系統停止時間、降低系統運維成本;
[0084]5、通過數據數據分布式行儲,增加系統對大容量數據的支撐能力、對系統故障抵抗能力。【專利附圖】
【附圖說明】
[0085]圖1是本發明所述數據服務器集群的結構框圖。
[0086]圖2是本發明所述應用服務器集群的結構框圖。
[0087]圖3是本發明所述實時消息交換平臺節點啟動示意圖。
[0088]圖4是本發明所述無網關集群網絡構建的初始示意圖。
[0089]圖5是本發明所述無網關集群網絡構建的節點構建中間示意圖。
[0090]圖6是本發明所述無網關集群網絡構建的節點構建完成示意圖。
[0091]圖7是本發明所述實時消息交換平臺及分布式集群組建方法的集群網絡構建示意圖。
【具體實施方式】
[0092]下面結合附圖對本發明作進一步說明:
[0093]如圖1、圖2、圖3、圖4、圖5、圖6和圖7所示:本發明包括應用服務器集群和數據服務器集群,數據服務器集群包括多個數據服務器、管理服務器、第一結構化查詢語言服務器、第二結構化查詢語言服務器、虛擬服務器、聊天服務器、文件代理服務器和語音視頻服務器,管理服務器分別與每個數據服務器和第一結構化查詢語言服務器和第二結構化查詢語言服務器通信連接,虛擬服務器分別與第一結構化查詢語言服務器、第二結構化查詢語言服務器和應用服務器通信連接,所述虛擬服務器監控所述文件代理服務器和所述語音視頻服務器。
[0094]本發明所述實時消息交換平臺分布式集群組建方法:
[0095]步驟一:所述應用服務器集群中的服務器分為普通節點與網關節點兩種類型;
[0096](I)普通節點:向外部客戶端提供接入服務,完成登錄、驗證、會話管理、信息處理等實際業務功能的服務器。
[0097](2)網關節點:對外部客戶端完全透明,不直接連接外部客戶端,僅與各普通節點相連,具備監控普通節點存活情況,在普通節點間轉發消息等功能。
[0098]步驟二:所有節點信息存儲在一張全局節點表中,由系統管理人員、節點自己其同維護全局節點表中的相關信息;每個節點在安裝完畢后都由系統管理人員在全局節點表中增加一條節點數據,設置節點名稱為安裝時指定的節點名稱、節點類型為該節點所擔任的角色類型(0/1)、是否啟用設置為I/啟用、是否運行則應該設置為0/停止、ip為實際IP地址、描述可不填、啟動時間由節點自己啟動時進行維護;若未在全局節點表中記錄節點信息,該節點將無法加入集群,與其它節點間無法通訊。
[0099](I)節點啟動:節點在啟動前應確保全局節點表中信息的正確,并且是否啟用(isenabled)設置為I/啟用;啟動時,節點服務首先更新當前結點的運行狀態(isstart)為I/啟動、啟動時間(start_time)為當前時間,然后查找全局節點表中所有已處于運行狀態的節點,并緩存于節點服務器內存中;至此網關節點、普通節點按不同的算法進行下一步動作;
[0100]I)網關節點:網關節點查找全局節點表中所有運行的普通節點,通知各普通節點己已上線,并發起對所有普通節點的監控;網關節點收到普通節中點的上線消息后,將其更新到本地在線節點緩存中。[0101]2)普通節點:普通節點查找全局節點表中所有運行的網關節點,通知各網關節點自己已上線,并發起對所有網關節點的監控,普通節點收到網關節點的上線消息后將其更新到本地在線節點緩存中。
[0102](2)節點停止:節點停止分為正常停止與異常停止,無論哪種停止情況,監控節點都將收到節點停止消息,當無網關節點在線時,普通節點遇到需要轉發到其它節點的消息,則會直接連接至該節點,并監控該節點的在線狀態,被監控節點停止時,監控節點同樣會收到節點停止消息,將其從本地在線節點緩存中刪除,并同步至全局節點表。
[0103]I)網關節點收到普通節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表;
[0104]2)普通節點收到網關節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表。
[0105](3)集群網絡自動構建:應用服務集群由若干個節點構成,其中網關節點組成集群的第一層環狀網絡,網關節點間不相互監控,普通節點組成集群的第二層網絡普通節點間不相互監控(無網關節點時除外);
[0106]步驟三:全局session管理,客戶端登錄后,會在連接節點記錄session信息,以保持會話狀態。組建分布式集群網絡后,session信息應該在全體節點中共享,因此創建全局session表,由全體節點共同維護。
[0107]步驟四:負載均衡,聊天服務器集群負載均衡分為普通節點的負載均衡與網關節點的負載均衡。
[0108](I)普通節點負載均衡,普通節點面向客戶端提供接入及消息處理服務,一個集群網絡包含若干個普通節點,但對外域名或IP只有一個,利用其IP隧道或IP路由技術實現負載均衡。
[0109](2)網關節點負載均衡,在有多個網關節點的集群系統中,網關負載均衡按以下步驟運行:
[0110]I)每個普通節點需要轉發信息時,先在本地緩存中查找在線網關節點;
[0111]2)按設定的負載均衡算法選擇一個網關節點;
[0112]3)將目標節點及轉發信息組包發送網關節點;
[0113]4)網關節點收到一個轉發包后,判斷目標節點是否在線;
[0114]5)若在線,則轉發信息;
[0115]6)若不在線,則轉入離線信息處理。
[0116]步驟五:消息路由,Server中的消息主要為分為presenceiq、message三種。
[0117](I) presence,在集群系統中,發送一個presence信息遵循如下路由規則:
[0118]I)查找目標用戶(xxx@yyycom/zzz)是否已登錄;
[0119]2)目標用戶未登錄則丟棄該消息;
[0120]3)目標用戶已登錄,判斷其登錄節點是否本節點;
[0121]4)是本節點,則直接發送消息;
[0122]5)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;
[0123]6)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;[0124]7)若不是,則丟棄該消息;
[0125]8)若是,則判斷目標用戶是否在本結點登錄;
[0126]9)若不是,則丟棄該消息;
[0127]10)若是,則向目標用戶發送該消息。
[0128](2) iq,在集群系統中,發送一個iq信息遵循如下路由規則:
[0129]I)查找iq消息是否包含目標用戶;
[0130]2)若無,則直接本節點進行處理;
[0131]3)若有,查找目標用戶(xxx@yyycom/zzz)是否已登錄;
[0132]4)目標用戶未登錄則返回錯誤信息;
[0133]5)目標用戶已登錄,判斷其登錄節點是否本節點;
[0134]6)是本節點則直接發送消息;
[0135]7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;
[0136]8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;
[0137]9)若不是,則丟棄該消息;
[0138]10)若是,則判斷目標用戶是否在本結點登錄;
[0139]11)若不是,則丟棄該消息;
[0140]12)若是,則向目標用戶發送該消息。
[0141](3) message
[0142]在集群系統中,發送一個message信息遵循如下路由規則:
[0143]I)查找message消息的目標用戶是否指定特定資源(res);
[0144]2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶優先級最高的session ;
[0145]3)若已指定,則判斷該用戶是否已登錄;
[0146]4)若目標用戶未登錄,則轉入離線message消息處理;
[0147]5)若目標用戶已登錄,判斷其登錄節點是否本節點;
[0148]6)是本節點,則直接發送消息;
[0149]7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息;
[0150]8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己;
[0151]9)若不是,則丟棄該消息;
[0152]10)若是,則判斷目標用戶是否在本結點登錄;
[0153]11)若不是,則轉入離線消息處理(可能因客戶端異常斷開造成);
[0154]12)若是,則向目標用戶發送該消息。
[0155]步驟六:文件代理服務器集群,Server在文件代理服務器集群時,考慮將每個節點的代理服務映射到對外域名或IP的一個特定端口,在進行文件代理傳輸前由服務器為客戶端分配一個代理服務節點,確保參與傳輸的雙方都連接至同一代理服務節點。
[0156]步驟七:語音視頻服務器集群,Server在語音視頻服務器集群時,考慮將每個節點的服務映射到對外域名或IP的一個特定端口,在進行流數據傳輸前由服務器為客戶端分配一個服務節點,確保參與傳輸的多方客戶端都連接至同一服務節點。
[0157]步驟八:數據庫設計采用my結構化查詢語言服務器進行分布式集群,由I個管理節點、2個結構化查詢語言服務器節點、2個數據節點構成,數據分片存儲復制2份,分別存儲于各個數據節點中,整體在邏輯形成一個完整的數據庫,對外通過虛擬服務器由結構化查詢語言服務器提供數據訪問服務;后期根據數據量的增長訪問量增加等實際運行情況增加結構化查詢語言服務器節點以及數據節點的數量。
[0158]如圖3所示:其中G為網關節點,N為普通節點,Gl為跟新運行狀態/啟動時間、G2為查找運行的普通節點、G3為通知普通節點并監控、NI為跟新運行狀態/啟動時間、N2為查找運行的普通節點、N3為通知普通節點并臨控。
[0159]如圖4、圖5和圖6所示:當需要啟動節點時,普通節點相連接,最終完成普通節點啟動。
[0160]如圖7所示:當普通節點需要啟動時,普通節點2選擇以有的網關節點I進行啟動,普通節點3選擇以有的網關節點I進行啟動,普通節點4選擇以有的網關節點I進行啟動,網關節點5選擇以有的普通節點2、3、4進行啟動,普通節點6選擇以有的網關節點I和5進行啟動。
【權利要求】
1.一種實時消息交換平臺,其特征在于:包括應用服務器集群和數據服務器集群,所述應用服務器集群與所述數據服務器集群通過千兆局域網絡通信連接。
2.根據權利要求1所述的實時消息交換平臺,其特征在于:所述數據服務器集群包括數據服務器、管理服務器、第一結構化查詢語言服務器、第二結構化查詢語言服務器和虛擬服務器,所述管理服務器分別與所述數據服務器和第一結構化查詢語言服務器和所述第二結構化查詢語言服務器通信連接,所述虛擬服務器分別與所述第一結構化查詢語言服務器和所述第二結構化查詢語言服務器通信連接。
3.根據權利要求2所述的實時消息交換平臺,其特征在于:所述數據服務器包括多個,每個所述數據服務器分別與所述管理服務器通信連接。
4.根據權利要求1或2所述的實時消息交換平臺,其特征在于:所述應用服務器包括聊天服務器、文件代理服務器和語音視頻服務器,所述虛擬服務器與所述聊天服務器通信連接,所述虛擬服務器監控所述文件代理服務器和所述語音視頻服務器。
5.一種實時消息交換平臺分布式集群組建方法,其特征在于: 步驟一:所述應用服務器集群中的服務器分為普通節點與網關節點兩種類型; (1)普通節點:向外部客戶端提供接入服務,完成登錄、驗證、會話管理、信息處理等實際業務功能的服務器; (2)網關節點:對外部客戶端完全透明,不直接連接外部客戶端,僅與各普通節點相連,具備監控普通節點存活情況,在普通節點間轉發消息等功能。 步驟二:所有節點信息存儲在一張全局節點表中,由系統管理人員、節點自己共同維護全局節點表中的相關信息;每個節點在安裝完畢后都由系統管理人員在全局節點表中增加一條節點數據,設置節點名稱為安裝時指定的節點名稱、節點類型為該節點所擔仟的角色類型(0/1)、是否啟用設置為I/啟用、是否運行則應該設置為0/停止、ip為實際IP地址、描述可不填、啟動時間由節點自已啟動時進行維護;若未在全局節點表中記錄節點信息,該節點將無法加入集群,與其它節點間無法通訊。 (1)節點啟動:節點在啟動前應確保全局節點表中信息的正確,并且是否啟用(isenabled)設置為I/啟用;啟動時,節點服務首先更新當前結點的運行狀態(isstart)為I/啟動、啟動時間(start_time)為當前時間,然后查找全局節點表中所有已處于運行狀態的節點,并緩存于節點服務器內存中;至此網關節點、普通節點按不同的算法進行下一步動作; (2)節點停止:節點停止分為正常停止與異常停止,無論哪種停止情況,監控節點都將收到節點停止消息,當無網關節點在線時,普通節點遇到需要轉發到其它節點的消息,則會直接連接至該節點,并監控該節點的在線狀態,被監控節點停止時,監控節點同樣會收到節點停止消息,將其從本地在線節點緩存中刪除,并同步至全局節點表; (3)集群網絡自動構建:應用服務集群由若干個節點構成,其中網關節點組成集群的第一層環狀網絡,網關節點間不相互監控,普通節點組成集群的第二層網絡,普通節點間不相互監控(無網關節點時除外)。 步驟三:全局session管理,客戶端登錄后,會在連接節點記錄session信息,以保持會話狀態。組建分布式集群網絡后,session信息應該在全體節點中共亨,因此創建全局session表,由全體節點共同維護。步驟四:負載均衡,聊天服務器集群負載均衡分為普通節點的負載均衡與網關節點的負載均衡。 (1)普通節點負載均衡,普通節點面向客戶端提供接入及消息處理服務,一個集群網絡包含若干個普通節點,但對外域名或IP只有一個,利用其IP隧道或IP路由技術實現負載均衡; (2)網關節點負載均衡,在有多個網關節點的集群系統中,網關負載均衡按以下步驟運行: 1)每個普通節點需要轉發信息時,先在本地緩存中查找在線網關節點; 2)按設定的負載均衡算法選擇一個網關節點; 3)將目標節點及轉發信息組包發送網關節點; 4)網關節點收到一個轉發包后,判斷目標節點是否在線; 5)若在線,則轉發信息; 6)若不在線,則轉入離線信息處理。 步驟五:消息路由,Server中的消息主要為分為presence、iq>message三種。 (1)presence,在集群系統中,發送一個presence信息遵循如下路由規則: 1)查找目標用戶(xxx@yyycom/zzz)是否已登錄; 2)目標用戶未登錄則丟棄該消息; 3)目標用戶已登錄,判斷其登錄節點是否本節點; 4)是本節點,則直接發送消息; 5)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息; 6)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己; 7)若不是,則丟棄該消息; 8)若是,則判斷目標用戶是否在本結點登錄; 9)若不是,則丟棄該消息; 10)若是,則向目標用戶發送該消息。 (2)iq,在集群系統中,發送一個iq信息遵循如下路由規則: 1)查找iq消息是否包含目標用戶; 2)若無,則直接本節點進行處理; 3)若有,查找目標用戶(xxx@yyycom/zzz)是否已登錄; 4)目標用戶未登錄則返回錯誤信息; 5)目標用戶已登錄,判斷其登錄節點是否本節點; 6)是本節點,則直接發送消息; 7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息; 8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己; 9)若不是,則丟棄該消息; 10)若是,則判斷目標用戶是否在本結點登錄; 11)若不是,則丟棄該消息; 12)若是,則向目標用戶發送該消息。 (3)message,在集群系統中,發送一個message信息遵循如下路由規則:1)查找message消息的目標用戶是否指定特定資源(res); 2)若未指定,如:xxx@yyycom,則在全局session中查找該用戶優先級最高的session ; 3)若已指定,則判斷該用戶是否已登錄; 4)若目標用戶未登錄,則轉入離線message消息處理; 5)若目標用戶已登錄,判斷其登錄節點是否本節點; 6)是本節點,則直接發送消息; 7)不是本節點,將目標節點與消息組包,按負載均衡算法選擇一網關節點,轉發消息; 8)普通節點收到一個網關節點發來消息后,判斷目標節點是否自己; 9)若不是,則丟棄該消息; 10)若是,則判斷目標用戶是否在本結點登錄; 11)若不是,則轉入離線消息處理(可能因客戶端異常斷開造成); 12)若是,則向目標用戶發送該消息。 步驟六:文件代理服務器集群,Server在文件代理服務器集群時,考慮將每個節點的代理服務映射到對外域名或IP的一個特定端口,在進行文件代理傳輸前由服務器為客戶端分配一個代理服務節點,確保參與傳輸的雙方都連接至同一代理服務節點。 步驟七:語音視頻服務器集群,Server在語音視頻服務器集群時,考慮將每個節點的服務映射到對外域名或IP的一個特定端口,在進行流數據傳輸前由服務器為客戶端分配一個服務節點,確保參與傳輸的多方客戶端都連接至同一服務節點。 步驟八:數據庫設計采用my結構化查詢語言服務器進行分布式集群,由I個管理節點、2個結構化查詢語言服務器節點、2個數據節點構成,數據分片存儲、復制2份,分別存儲于各個數據節點中,整體在邏輯形成一個完整的數據庫,對外通過虛擬服務器由結構化查詢語言服務器提供數據訪問服務;后期根據數據量的增長、訪問量增加等實際運行情況增加結構化查詢語言服務器節點以及數據節點的數量。
6.根據權利要求5所述的實時消息交換平臺分布式集群組建方法,其特征在于:根據步驟二中的步驟(I)所述節點啟動包括網關節點和普通節點,按不同的算法進行下一步動作: 1)網關節點:網關節點查找全局節點表中所有運行的普通節點,通知各普通節點自己已上線,并發起對所有普通節點的監控;網關節點收到普通節點的上線消息后,將其更新到本地在線節點緩存中; 2)普通節點:普通節點查找全局節點表中所有運行的網關節點通知各網關節點自己已上線,并發起對所有網關節點的監控,普通節點收到網關節點的上線消息后,將其更新到本地在線節點緩存中。
7.根據權利要求5所述的實時消息交換平臺分布式集群組建方法,其特征在于:根據步驟二中的步驟(2)所述節點停止包括正常停止與異常停止, 1)網關節點收到普通節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表: 2)普通節點收到網關節點的停止消息后,將其從本地在線節點緩存中刪除,并同步至全局節點表。
【文檔編號】H04L29/08GK103475566SQ201310287701
【公開日】2013年12月25日 申請日期:2013年7月10日 優先權日:2013年7月10日
【發明者】陳剛 申請人:北京發發時代信息技術有限公司