一種對即時通訊業(yè)務(wù)進行處理的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種對即時通訊業(yè)務(wù)進行處理的方法及系統(tǒng),屬于互聯(lián)網(wǎng)通信領(lǐng)域。該方法包括:選舉服務(wù)器接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;選舉服務(wù)器將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,通過主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理即時通訊業(yè)務(wù);選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理即時通訊業(yè)務(wù)。本發(fā)明可以提高即時通訊業(yè)務(wù)的吞吐量。
【專利說明】一種對即時通訊業(yè)務(wù)進行處理的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)通信領(lǐng)域,特別涉及一種對即時通訊業(yè)務(wù)進行處理的方法及系統(tǒng)。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)通信技術(shù)中,當用戶使用某個即時通訊業(yè)務(wù)時,服務(wù)器需要對該即時通訊業(yè)務(wù)進行處理。
[0003]目前,提供了一種對即時通訊業(yè)務(wù)進行處理的方法,具體為:遠程數(shù)據(jù)服務(wù)器包括主服務(wù)器和從服務(wù)器,主服務(wù)器與從服務(wù)器位于不同的機房中,且主服務(wù)器與即時通訊業(yè)務(wù)對應(yīng)的分區(qū)服務(wù)器位于同一個機房中。終端向遠程數(shù)據(jù)服務(wù)器中寫入即時通訊業(yè)務(wù)的數(shù)據(jù)時,終端將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給分區(qū)服務(wù)器,分區(qū)服務(wù)器將該即時通訊業(yè)務(wù)的數(shù)據(jù)轉(zhuǎn)發(fā)給主服務(wù)器;主服務(wù)器接收該即時通訊業(yè)務(wù)的數(shù)據(jù),對該即時通訊業(yè)務(wù)的數(shù)據(jù)進行處理,將處理后的數(shù)據(jù)進行存儲并將處理后的數(shù)據(jù)發(fā)送給從服務(wù)器,使從服務(wù)器將處理的數(shù)據(jù)進行存儲。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]由于從服務(wù)器中存儲的數(shù)據(jù)是主服務(wù)器發(fā)送的,并且當主服務(wù)器出現(xiàn)故障或者當分區(qū)服務(wù)器與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,從服務(wù)器不能將接收的數(shù)據(jù)同步到其他的從服務(wù)器,所以無法為終端提供可靠的即時通訊業(yè)務(wù);并且分區(qū)服務(wù)器需要將接收的即時通訊業(yè)務(wù)的數(shù)據(jù)從自身所在的機房發(fā)送到從服務(wù)器所在的機房,如此,變成了分區(qū)服務(wù)器跨機房寫即時通訊業(yè)務(wù)的數(shù)據(jù),影響了即時通訊業(yè)務(wù)的吞吐量。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種對即時通訊業(yè)務(wù)進行處理的方法及系統(tǒng)。所述技術(shù)方案如下:
[0007]一方面,提供了一種對即時通訊業(yè)務(wù)進行處理的方法,所述方法包括:
[0008]選舉服務(wù)器接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;
[0009]所述選舉服務(wù)器將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過所述主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù);
[0010]所述選舉服務(wù)器監(jiān)聽所述主服務(wù)器和所述從服務(wù)器,當監(jiān)聽到所述主服務(wù)器出現(xiàn)故障或者當所述主服務(wù)器與所述前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過所述新的主服務(wù)器接收所述前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù)。
[0011]另一方面,提供了一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng),所述系統(tǒng)包括:選舉服務(wù)器和至少兩個數(shù)據(jù)服務(wù)器;
[0012]所述選舉服務(wù)器,用于接收所述至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;[0013]所述選舉服務(wù)器,用于將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過所述主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù);
[0014]所述選舉服務(wù)器,用于監(jiān)聽所述主服務(wù)器和所述從服務(wù)器,當監(jiān)聽到所述主服務(wù)器出現(xiàn)故障或者當所述主服務(wù)器與所述前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過所述新的主服務(wù)器接收所述前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù)。
[0015]在本發(fā)明實施例中,選舉服務(wù)器將第一次接收的注冊請求消息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器后,當前端代理設(shè)備接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給主服務(wù)器,通過主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。當選舉服務(wù)器監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器后,當前端代理設(shè)備再次接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,該選舉服務(wù)器直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,通過該新的主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。由于前端代理設(shè)備、主服務(wù)器和從服務(wù)器均位于不同的機房中,所以,當主服務(wù)器出現(xiàn)故障或者前端代理設(shè)備與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,前端代理設(shè)備不需要將即時通訊業(yè)務(wù)的數(shù)據(jù)先發(fā)送到主服務(wù)器所在的機房再發(fā)送到新的主服務(wù)器所在的機房,可以直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,不需要跨機房發(fā)送該即時通訊業(yè)務(wù)的數(shù)據(jù),進而提高了即時通訊業(yè)務(wù)的吞吐量。
【專利附圖】
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0017]圖1是本發(fā)明實施例一提供的一種對即時通訊業(yè)務(wù)進行處理的方法流程圖;
[0018]圖2是本發(fā)明實施例二提供的一種對即時通訊業(yè)務(wù)進行處理的方法流程圖;
[0019]圖3是本發(fā)明實施例二提供的一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng)架構(gòu)圖;
[0020]圖4是本發(fā)明實施例二提供的另一種對即時通訊業(yè)務(wù)進行處理的方法流程圖;
[0021]圖5是本發(fā)明實施例二提供的一種聊天分區(qū)界面示意圖;
[0022]圖6是本發(fā)明實施例二提供的另一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng)架構(gòu)圖;
[0023]圖7是本發(fā)明實施例三提供的一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng)結(jié)構(gòu)示意圖。
【具體實施方式】
[0024]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0025]實施例一
[0026]本發(fā)明實施例提供了一種對即時通訊業(yè)務(wù)進行處理的方法,參見圖1,該方法包括:[0027]步驟101:選舉服務(wù)器接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;
[0028]步驟102:選舉服務(wù)器將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù);
[0029]步驟103:選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù)。
[0030]其中,選舉服務(wù)器將第一次接收的注冊請求消息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器之后,還包括:
[0031]選舉服務(wù)器根據(jù)主服務(wù)器的網(wǎng)絡(luò)之間互連的協(xié)議IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點身份標識ID的對應(yīng)關(guān)系中獲取主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;
[0032]選舉服務(wù)器向前端代理設(shè)備發(fā)送加入消息,該加入消息攜帶節(jié)點ID、主服務(wù)器的角色信息、IP地址和端口號、以及從服務(wù)器的角色信息、IP地址和端口號;
[0033]前端代理設(shè)備根據(jù)該節(jié)點ID,將主服務(wù)器的角色信息、IP地址和端口號,以及從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點中。
[0034]進一步地,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器之后,還包括:
[0035]選舉服務(wù)器向前端代理設(shè)備發(fā)送更新消息,更新消息中攜帶節(jié)點ID、主服務(wù)器的IP地址和端口號,以及新的主服務(wù)器的新角色信息、IP地址和端口號;
[0036]前端代理設(shè)備根據(jù)節(jié)點ID、主服務(wù)器的IP地址和端口號,從哈希環(huán)中刪除主服務(wù)器的角色信息、IP地址和端口號;
[0037]前端代理設(shè)備根據(jù)節(jié)點ID、新的主服務(wù)器的IP地址和端口號,從該哈希環(huán)中獲取新的主服務(wù)器的角色信息,將獲取的角色信息替換為新角色信息。
[0038]進一步地,該方法還包括:
[0039]第一終端向第一終端接入的第一前端代理設(shè)備發(fā)送入座請求消息,該入座請求消息攜帶第一用戶的ID和頻道的頻道ID ;
[0040]第一前端代理設(shè)備根據(jù)該頻道ID,將該入座請求消息發(fā)送給頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器;
[0041]主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)中為第一用戶分配座位;
[0042]第一前端代理設(shè)備接收第一終端發(fā)送的第一用戶的ID、頻道ID和聊天內(nèi)容,并根據(jù)頻道ID將第一用戶的ID和聊天內(nèi)容發(fā)送給分區(qū)服務(wù)器集群包括的聊天服務(wù)器;
[0043]聊天服務(wù)器根據(jù)第一用戶的ID,將第一用戶的ID和聊天內(nèi)容發(fā)送給聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,第二用戶為聊天分區(qū)中除第一用戶之外的其他用戶。
[0044]其中,第一前端代理設(shè)備根據(jù)頻道ID,將該入座請求消息發(fā)送給頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器,包括:
[0045]第一前端代理設(shè)備對頻道ID進行一致性哈希運算,得到頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;
[0046]第一前端代理設(shè)備根據(jù)節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點;
[0047]第一前端代理設(shè)備根據(jù)節(jié)點中的主服務(wù)器的角色信息從節(jié)點中獲取主服務(wù)器的IP地址和端口號;
[0048]第一前端代理設(shè)備根據(jù)主服務(wù)器的IP地址和端口號,將該入座請求消息發(fā)送給主服務(wù)器。
[0049]其中,主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)中為第一用戶分配座位,包括:
[0050]主服務(wù)器根據(jù)第一用戶的ID,獲取第一用戶的身份信息;
[0051]如果第一用戶的身份信息為會員用戶,則主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為第一用戶分配座位;
[0052]如果第一用戶的身份信息為普通用戶,則主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在聊天分區(qū)包括的普通區(qū)域中為第一用戶分配座位。
[0053]優(yōu)選地,主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為第一用戶分配座位,包括:
[0054]主服務(wù)器獲取頻道的聊天分區(qū)中的每個分區(qū)組包括的特權(quán)區(qū)域中的用戶的第一個數(shù),以及獲取每個分區(qū)組包括的普通區(qū)域中的用戶的第二個數(shù);
[0055]主服務(wù)器將每個分區(qū)組對應(yīng)的第二個數(shù)分別除以每個分區(qū)組對應(yīng)的第一個數(shù),得到每個分區(qū)組對應(yīng)的第一數(shù)值;
[0056]主服務(wù)器從聊天分區(qū)包括的分區(qū)組中,選擇最大的第一數(shù)值對應(yīng)的分區(qū)組,如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則從選擇的分區(qū)組包括的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑座位分配給第一用戶;
[0057]如果選擇的分區(qū)組包括的特權(quán)區(qū)域中不存在空閑的座位,則主服務(wù)器在該聊天分區(qū)中創(chuàng)建一個分區(qū)組,并在創(chuàng)建的分區(qū)組中創(chuàng)建一個特權(quán)區(qū)域,并從創(chuàng)建的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0058]優(yōu)選地,主服務(wù)器根據(jù)第一用戶的ID和頻道ID,在該聊天分區(qū)包括的普通區(qū)域中為第一用戶分配座位,包括:
[0059]主服務(wù)器獲取頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),選擇用戶的個數(shù)最少的分區(qū)組;
[0060]在選擇的分區(qū)組包括的普通區(qū)域中,判斷是否存在用戶數(shù)最多且存在空閑座位的普通區(qū)域,如果是,則主服務(wù)器從用戶數(shù)最多且存在空閑座位的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶;
[0061]如果否,則主服務(wù)器在選擇的分區(qū)組中創(chuàng)建一個普通區(qū)域,并從創(chuàng)建的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0062]其中,聊天服務(wù)器根據(jù)第一用戶的ID,將第一用戶的ID和聊天內(nèi)容發(fā)送給聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,包括:
[0063]聊天服務(wù)器根據(jù)第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的分區(qū)組ID和區(qū)域ID ;
[0064]聊天服務(wù)器根據(jù)分區(qū)組ID和區(qū)域ID,從用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取第二用戶的ID ;
[0065]聊天服務(wù)器根據(jù)第二用戶的ID,從已存儲的用戶ID與前端代理設(shè)備的標識的對應(yīng)關(guān)系中獲取第二用戶對應(yīng)的第二終端接入的第二前端代理設(shè)備的標識;
[0066]聊天服務(wù)器根據(jù)第二前端代理設(shè)備的標識,將第一用戶的ID和聊天內(nèi)容發(fā)送給
第二終端。
[0067]在本發(fā)明實施例中,選舉服務(wù)器將第一次接收的注冊請求消息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器后,當前端代理設(shè)備接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給主服務(wù)器,通過主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。當選舉服務(wù)器監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器后,當前端代理設(shè)備再次接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,該選舉服務(wù)器直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,通過該新的主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。由于前端代理設(shè)備、主服務(wù)器和從服務(wù)器均位于不同的機房中,所以,當主服務(wù)器出現(xiàn)故障或者前端代理設(shè)備與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,前端代理設(shè)備不需要將即時通訊業(yè)務(wù)的數(shù)據(jù)先發(fā)送到主服務(wù)器所在的機房再發(fā)送到新的主服務(wù)器所在的機房,可以直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,不需要跨機房發(fā)送該即時通訊業(yè)務(wù)的數(shù)據(jù),進而提高了即時通訊業(yè)務(wù)的吞吐量。
[0068]實施例二
[0069]本發(fā)明實施例提供了一種對即時通訊業(yè)務(wù)進行處理的方法,參見圖2,該方法包括:
[0070]步驟201:選舉服務(wù)器接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;
[0071]其中,當數(shù)據(jù)服務(wù)器啟動后,數(shù)據(jù)服務(wù)器會向選舉服務(wù)器發(fā)送注冊請求消息,該注冊請求消息中攜帶該數(shù)據(jù)服務(wù)器的IP (Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)地址和
端口號。
[0072]如圖3所示的系統(tǒng)架構(gòu)圖中,該系統(tǒng)中包括終端、前端代理設(shè)備、選舉服務(wù)器、主服務(wù)器和從服務(wù)器,主服務(wù)器和從服務(wù)器位于同一個分區(qū)服務(wù)器集群中。該系統(tǒng)中的從服務(wù)器還可以繼續(xù)擴展,執(zhí)行該即時通訊業(yè)務(wù)中的其他操作。
[0073]步驟202:選舉服務(wù)器將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器;
[0074]其中,選舉服務(wù)器接收數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息時會記錄接收該注冊請求消息的接收時間,根據(jù)接收的至少兩個數(shù)據(jù)服務(wù)器的注冊請求消息的接收時間,將接收時間最早的一個數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器。
[0075]進一步地,當選舉服務(wù)器設(shè)置主服務(wù)器和從服務(wù)器之后,選舉服務(wù)器向該主服務(wù)器發(fā)送第一回復(fù)消息,該第一回復(fù)消息攜帶主服務(wù)器的角色信息、從服務(wù)器的角色信息、從服務(wù)器的IP地址和端口號;并向從服務(wù)器發(fā)送第二回復(fù)消息,該第二回復(fù)消息攜帶從服務(wù)器的角色信息、主服務(wù)器的角色信息、主服務(wù)器的IP地址和端口號。
[0076]其中,角色信息用于指示數(shù)據(jù)服務(wù)器是主服務(wù)器還是從服務(wù)器。
[0077]其中,選舉服務(wù)器設(shè)置主服務(wù)器和從服務(wù)器之后,該主服務(wù)器和從服務(wù)器便構(gòu)成了一個分區(qū)服務(wù)器集群,并通知該分區(qū)服務(wù)器集群中的每個服務(wù)器自身所在的分區(qū)服務(wù)器集群中包括的每個服務(wù)器的角色信息、IP地址和端口號。
[0078]其中,上述步驟中至少兩個數(shù)據(jù)服務(wù)器啟動的時間可能不同,所以選舉服務(wù)器可以在接收到第一個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息之后,將第一個數(shù)據(jù)服務(wù)器設(shè)置為分區(qū)服務(wù)器集群的主服務(wù)器,將后續(xù)接收的數(shù)據(jù)服務(wù)器設(shè)置為該分區(qū)服務(wù)器集群的從服務(wù)器。當然,選舉服務(wù)器也可以接收到第一個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息之后不執(zhí)行設(shè)置主服務(wù)器的步驟,可以在接收到第二個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息之后,將第一個數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將第二個數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,將第二個數(shù)據(jù)服務(wù)器之后接收的注冊請求消息的數(shù)據(jù)服務(wù)器也設(shè)置為從服務(wù)器。
[0079]其中,從服務(wù)器可以為聊天服務(wù)器。
[0080]步驟203:選舉服務(wù)器根據(jù)主服務(wù)器的IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點ID (identity,身份標識)的對應(yīng)關(guān)系中獲取主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;
[0081]其中,一個分區(qū)服務(wù)器集群對應(yīng)一個節(jié)點,所以選擇服務(wù)器可以根據(jù)該分區(qū)服務(wù)器集群包括的主服務(wù)器的IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點ID的對應(yīng)關(guān)系中獲取主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID,還可以根據(jù)該分區(qū)服務(wù)器集群包括的從服務(wù)器的IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點ID的對應(yīng)關(guān)系中獲取主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID。
[0082]其中,主服務(wù)器的IP地址和端口號是主服務(wù)器發(fā)送給選舉服務(wù)器的注冊請求消息中攜帶的IP地址和端口號,從服務(wù)器的IP地址和端口號是從服務(wù)器發(fā)送給選舉服務(wù)器的注冊請求消息中攜帶的IP地址和端口號,且IP地址、端口號和節(jié)點ID的對應(yīng)關(guān)系中的節(jié)點ID是選舉服務(wù)器事先為每個數(shù)據(jù)服務(wù)器配置的節(jié)點ID。
[0083]步驟204:選舉服務(wù)器向前端代理設(shè)備發(fā)送加入消息,該加入消息攜帶該節(jié)點ID、主服務(wù)器的角色信息、IP地址和端口號、以及從服務(wù)器的角色信息、IP地址和端口號;
[0084]其中,每個用戶對應(yīng)的終端都會接入一個前端代理設(shè)備,通過該前端代理設(shè)備將信息發(fā)送給頻道對應(yīng)的分區(qū)服務(wù)器集群,所以選舉服務(wù)器會將該分區(qū)服務(wù)器集群包括的主服務(wù)器的角色信息、IP地址和端口號、以及從服務(wù)器的角色信息、IP地址和端口號發(fā)送給前端代理設(shè)備。
[0085]步驟205:前端代理設(shè)備根據(jù)節(jié)點ID,將主服務(wù)器的角色信息、IP地址和端口號,以及從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點中,以通過主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù);
[0086]其中,在前端代理設(shè)備中存儲哈希環(huán),該哈希環(huán)中包括多個分區(qū)服務(wù)器集群對應(yīng)的節(jié)點,且每個節(jié)點均存在自身對應(yīng)的節(jié)點ID。
[0087]需要補充說明的是,為了便于對該哈希環(huán)包括的節(jié)點中的信息進行維護,可以在該哈希環(huán)包括的節(jié)點中設(shè)置角色信息、IP地址和端口號的對應(yīng)關(guān)系,當前端代理設(shè)備接收到選舉服務(wù)器發(fā)送的主服務(wù)器的角色信息、IP地址和端口號,以及從服務(wù)器的角色信息、IP地址和端口號時,該前端代理設(shè)備將主服務(wù)器的角色信息、IP地址和端口號存儲在角色信息、IP地址和端口號的對應(yīng)關(guān)系中,以及將從服務(wù)器的角色信息、IP地址和端口號存儲在角色信息、IP地址和端口號的對應(yīng)關(guān)系中。
[0088]進一步地,前端代理設(shè)備根據(jù)節(jié)點ID,將主服務(wù)器角色信息、IP地址和端口號,以及從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點之后,當前端代理設(shè)備接收到接入的終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,該前端代理設(shè)備可以將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給該主服務(wù)器,通過該主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。并且當主服務(wù)器中存儲對該即時通訊業(yè)務(wù)進行處理的結(jié)果時,該主服務(wù)器根據(jù)自身所在的分區(qū)服務(wù)器集群包括的從服務(wù)器的IP地址和端口號,將該處理結(jié)果發(fā)送給該分區(qū)服務(wù)器集群包括的從服務(wù)器,使該分區(qū)服務(wù)器集群中的從服務(wù)器和主服務(wù)器中存儲的數(shù)據(jù)相同。
[0089]步驟206:選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器;
[0090]具體地,選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當選舉服務(wù)器監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,如果該分區(qū)服務(wù)器集群包括多個從服務(wù)器,則該選舉服務(wù)器立即從該多個從服務(wù)器隨機選擇一個從服務(wù)器,將選擇的從服務(wù)器設(shè)置為新的主服務(wù)器;如果該分區(qū)服務(wù)器集群包括一個從服務(wù)器,則該選舉服務(wù)器立即將該從服務(wù)器設(shè)置為新的主服務(wù)器。
[0091]步驟207:選舉服務(wù)器向前端代理設(shè)備發(fā)送更新消息,該更新消息中攜帶節(jié)點ID、出現(xiàn)故障的主服務(wù)器的IP地址和端口號,以及新的主服務(wù)器的新角色信息、IP地址和端口號;
[0092]步驟208:前端代理設(shè)備根據(jù)節(jié)點ID、主服務(wù)器的IP地址和端口號,從哈希環(huán)中刪除主服務(wù)器的角色信息、IP地址和端口號;
[0093]具體地,前端代理設(shè)備根據(jù)節(jié)點ID,從哈希環(huán)中查找對應(yīng)的節(jié)點,并根據(jù)主服務(wù)器的IP地址和端口號,從查找的節(jié)點中刪除主服務(wù)器的角色信息、IP地址和端口號。
[0094]步驟209:前端代理設(shè)備根據(jù)節(jié)點ID、新的主服務(wù)器的IP地址和端口號,從哈希環(huán)中獲取新的主服務(wù)器的角色信息,將獲取的角色信息替換為接收的新角色信息,以通過新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù)。
[0095]具體地,前端代理設(shè)備根據(jù)節(jié)點ID,從哈希環(huán)中查找對應(yīng)的節(jié)點,根據(jù)新的主服務(wù)器的IP地址和端口號,從查找的節(jié)點中獲取新的主服務(wù)器的角色信息,將獲取的角色信息替換為接收的新的角色信息。當前端代理設(shè)備接收到接入的終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,該前端代理設(shè)備可以將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給該新的主服務(wù)器,通過該新的主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。
[0096]進一步地,當除上述至少兩個數(shù)據(jù)服務(wù)器之外的其他數(shù)據(jù)服務(wù)器啟動時,該新啟動的數(shù)據(jù)服務(wù)器向選舉服務(wù)器發(fā)送注冊請求消息,該注冊請求信息攜帶該新啟動的數(shù)據(jù)服務(wù)器的IP地址和端口號;選舉服務(wù)器接收該注冊請求信息,從分區(qū)服務(wù)器集群中檢測沒有從服務(wù)器的分區(qū)服務(wù)器集群,如果檢測到,則將該新啟動的數(shù)據(jù)服務(wù)器設(shè)置為檢測到的分區(qū)服務(wù)器集群的從服務(wù)器;選舉服務(wù)器向檢測到的分區(qū)服務(wù)器集群包括的主服務(wù)器發(fā)送第三回復(fù)消息,該第三回復(fù)消息攜帶該新啟動的數(shù)據(jù)服務(wù)器的角色信息、IP地址和端口號;以及向該新啟動的數(shù)據(jù)服務(wù)器發(fā)送第四回復(fù)消息,該第四回復(fù)消息攜帶該新啟動的數(shù)據(jù)服務(wù)器的角色信息、檢測到的分區(qū)服務(wù)器集群包括的主服務(wù)器的角色信息、IP地址和端口號。
[0097]其中,如果選舉服務(wù)器沒有檢測到不存在從服務(wù)器的分區(qū)服務(wù)器集群,則選舉服務(wù)器從每個分區(qū)服務(wù)器集群中獲取與該新啟動的數(shù)據(jù)服務(wù)器的IP地址位于同一個IP段的分區(qū)服務(wù)器集群,將該新啟動的數(shù)據(jù)服務(wù)器設(shè)置為獲取的分區(qū)服務(wù)器集群的從服務(wù)器。
[0098]其中,在本發(fā)明實施例中,選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,該選舉服務(wù)器立即將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,通過該新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并對該即時通訊業(yè)務(wù)進行處理,進而避免當主服務(wù)器出現(xiàn)故障時從服務(wù)器不能升級為主服務(wù)器,以及避免了主服務(wù)器出現(xiàn)故障時,終端無法向該分區(qū)服務(wù)器集群包括的從服務(wù)器中寫入該即時通訊業(yè)務(wù)的數(shù)據(jù),進而無法對該即時通訊業(yè)務(wù)進行處理。由于前端代理設(shè)備、主服務(wù)器和從服務(wù)器均位于不同的機房中,所以,當主服務(wù)器出現(xiàn)故障或者前端代理設(shè)備與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,前端代理設(shè)備不需要將即時通訊業(yè)務(wù)的數(shù)據(jù)先發(fā)送到主服務(wù)器所在的機房再發(fā)送到新的主服務(wù)器所在的機房,可以直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,不需要跨機房,進而提高了即時通訊業(yè)務(wù)的吞吐量。
[0099]其中,通過上述201-209的步驟對該分區(qū)服務(wù)器集群進行設(shè)置及維護后,可以根據(jù)如下的步驟通過上述的主服務(wù)器對即時通訊業(yè)務(wù)進行處理,參見圖4,具體對即時通訊業(yè)務(wù)進行處理的方法包括:
[0100]步驟301:第一終端向第一終端接入的第一前端代理設(shè)備發(fā)送入座請求消息,該入座請求消息攜帶第一用戶的ID和頻道的頻道ID ;
[0101]其中,第一終端向第一前端代理設(shè)備發(fā)送入座請求消息之前,第一終端需要進入該頻道。
[0102]第一終端進入該頻道的步驟具體可以為:第一終端向會話服務(wù)器發(fā)送進入請求消息,該進入請求消息攜帶第一用戶的ID和該頻道的頻道ID ;會話服務(wù)器接收該進入請求消息,根據(jù)該頻道ID,將該用戶的ID存儲在該頻道對應(yīng)的用戶列表中,以及根據(jù)該頻道ID,從已存儲的頻道ID與應(yīng)用標識的對應(yīng)關(guān)系中獲取對應(yīng)的應(yīng)用標識,并將該頻道對應(yīng)的用戶列表中的用戶標識和該頻道包括的應(yīng)用標識發(fā)送給前端代理設(shè)備,使前端代理設(shè)備將該頻道對應(yīng)的用戶列表中的用戶標識和該頻道包括的應(yīng)用標識轉(zhuǎn)發(fā)給第一終端。
[0103]第一終端接收該頻道對應(yīng)的用戶列表中的用戶標識和該頻道包括的應(yīng)用標識,力口載該用戶列表和該應(yīng)用標識對應(yīng)的應(yīng)用,以進入該頻道。
[0104]步驟302:第一前端代理設(shè)備根據(jù)該頻道ID,將入座請求消息發(fā)送給該頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器;
[0105]具體地,第一前端代理設(shè)備對該頻道ID進行一致性哈希運算,得到該頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;第一前端代理設(shè)備根據(jù)節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點;第一前端代理設(shè)備根據(jù)獲取的節(jié)點中的主服務(wù)器的角色信息從該節(jié)點中獲取主服務(wù)器的IP地址和端口號;第一前端代理設(shè)備根據(jù)主服務(wù)器的IP地址和端口號,將該入座請求消息發(fā)送給主服務(wù)器。
[0106]其中,第一前端代理設(shè)備可以根據(jù)獲取的節(jié)點中的主服務(wù)器的角色信息,從該節(jié)點的角色信息、IP地址和端口號的對應(yīng)關(guān)系中獲取該主服務(wù)器的IP地址和端口號。
[0107]步驟303:主服務(wù)器根據(jù)第一用戶的ID,獲取第一用戶的身份信息;
[0108]具體地,主服務(wù)器從已存儲的會員列表中查找第一用戶的ID,如果查找到,則確定第一用戶的身份信息為會員用戶,如果沒有查找到,則確定第一用戶的身份信息為普通用戶。
[0109]步驟304:如果第一用戶的身份信息為會員用戶,則主服務(wù)器根據(jù)第一用戶的ID和該頻道ID,在該頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為第一用戶分配座位;
[0110]具體地,本步驟可以通過如下(I)- (5)的步驟來實現(xiàn),包括:
[0111](I)、主服務(wù)器獲取該頻道的聊天分區(qū)中的每個分區(qū)組包括的特權(quán)區(qū)域中的用戶的第一個數(shù),以及獲取每個分區(qū)組包括的普通區(qū)域中的用戶的第二個數(shù);
[0112]其中,頻道的聊天分區(qū)中包括多個分區(qū)組,且每個分區(qū)組包括一個特權(quán)區(qū)域和多個普通區(qū)域,特權(quán)區(qū)域中包括多個座位,以及每個普通區(qū)域中包括多個座位。
[0113]可選地,分區(qū)組中也可以包括多個特權(quán)區(qū)域,且特權(quán)區(qū)域的個數(shù)小于普通區(qū)域的個數(shù)。
[0114](2)、主服務(wù)器將每個分區(qū)組對應(yīng)的第二個數(shù)分別除以每個分區(qū)組對應(yīng)的第一個數(shù),得到每個分區(qū)組對應(yīng)的第一數(shù)值;
[0115](3)、主服務(wù)器從該聊天分區(qū)包括的分區(qū)組中,選擇最大的第一數(shù)值對應(yīng)的分區(qū)組;
[0116]具體地,主服務(wù)器將該聊天分區(qū)包括的每個分區(qū)組對應(yīng)的第一數(shù)值進行比較,從每個分區(qū)組對應(yīng)的第一數(shù)值中選擇一個最大的第一數(shù)值,并選擇最大的第一數(shù)值對應(yīng)的分區(qū)組。
[0117](4)、如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則主服務(wù)器從選擇的分區(qū)組包括的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑座位分配給第一用戶;
[0118]具體地,主服務(wù)器判斷選擇的分區(qū)組包括的特權(quán)區(qū)域中是否存在空閑的座位,如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則主服務(wù)器從選擇的分區(qū)組包括的特權(quán)區(qū)域中隨機選擇一個空閑的座位,并將選擇的空閑座位分配給第一用戶。
[0119](5)、如果選擇的分區(qū)組包括的特權(quán)區(qū)域中不存在空閑的座位,則主服務(wù)器在該聊天分區(qū)中創(chuàng)建一個分區(qū)組,并在創(chuàng)建的分區(qū)組中創(chuàng)建一個特權(quán)區(qū)域,并從創(chuàng)建的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0120]進一步地,主服務(wù)器還可以在創(chuàng)建的分區(qū)組中創(chuàng)建多個普通區(qū)域。
[0121]進一步地,主服務(wù)器將選擇的空閑座位分配給第一用戶之后,主服務(wù)器根據(jù)第一用戶的ID,獲取第一用戶的用戶頭像,并將第一用戶的用戶頭像綁定在為第一用戶分配的座位上。
[0122]進一步地,如果第一用戶沒有設(shè)置自己的頭像,則主服務(wù)器可以獲取默認的用戶頭像,將默認的用戶頭像作為第一用戶的用戶頭像,并綁定在為第一用戶分配的座位上。
[0123]其中,該頻道的聊天分區(qū)中不僅包括第一用戶的用戶頭像,還包括其他用戶的用戶頭像,當主服務(wù)器將第一用戶的用戶頭像綁定在為第一用戶分配的座位上之后,主服務(wù)器將該頻道的聊天分區(qū)發(fā)送給第一前端代理設(shè)備,使第一前端代理設(shè)備將該聊天分區(qū)發(fā)送給第一終端。并且主服務(wù)器還根據(jù)第一用戶的ID,獲取第一用戶所在聊天分區(qū)的其他用戶的ID,將第一用戶的ID和第一用戶的用戶頭像發(fā)送給其他用戶對應(yīng)的終端,使其他用戶對應(yīng)的終端在第一用戶所在的座位上顯示第一用戶的用戶頭像。
[0124]由于頻道的聊天分區(qū)包括多個分區(qū)組,而每個用戶對應(yīng)的終端上只顯示該用戶所在分區(qū)組中的用戶頭像,其他分區(qū)組中的用戶頭像不顯示在該終端的屏幕上,當用戶查看其他分區(qū)組中的用戶時,該用戶可以向終端發(fā)送切換指令,使終端將屏幕上顯示的分區(qū)組的用戶頭像進行切換。
[0125]其中,該頻道中還包括直播視頻屏幕或者表演屏幕,以及聊天內(nèi)容顯示區(qū)域,用戶可以在直播視頻屏幕上觀看正在直播的視頻,還可以與該聊天分區(qū)中的其他用戶聊天,并將聊天內(nèi)容顯示在聊天內(nèi)容顯示區(qū)域中。
[0126]其中,位于不同區(qū)域的用戶,可能其對應(yīng)的終端上顯示的聊天內(nèi)容顯示區(qū)域中顯示的聊天內(nèi)容不同。
[0127]例如,第一終端接收第一前端代理設(shè)備發(fā)送的聊天分區(qū)后,第一終端可以顯示如圖5所示的聊天分區(qū)界面,該聊天分區(qū)界面中包括表演屏幕、特權(quán)區(qū)域、普通區(qū)域、用戶的頭像和聊天內(nèi)容顯示區(qū)域。
[0128]步驟305:如果第一用戶的身份信息為普通用戶,則主服務(wù)器根據(jù)第一用戶的ID和該頻道ID,在該頻道的聊天分區(qū)包括的普通區(qū)域中為第一用戶分配座位;
[0129]具體地,本步驟可以通過如下(a) - (C)的步驟來實現(xiàn),包括:
[0130](a)、主服務(wù)器獲取該頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),選擇用戶的個數(shù)最少的分區(qū)組;
[0131]具體地,主服務(wù)器獲取該頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),將每個分區(qū)組包括的用戶的個數(shù)進行比較,選擇用戶的個數(shù)最少的分區(qū)組。
[0132](b)、在選擇的分區(qū)組包括的普通區(qū)域中,判斷是否存在用戶數(shù)最多且存在空閑座位的普通區(qū)域,如果是,則從用戶數(shù)最多且存在空閑座位的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶;
[0133]具體地,在選擇的分區(qū)組包括的普通區(qū)域中,統(tǒng)計每個普通區(qū)域中的用戶的個數(shù),將統(tǒng)計的個數(shù)進行比較,選擇用戶的個數(shù)最大的普通區(qū)域,判斷選擇的普通區(qū)域中是否存在空閑的座位,如果存在,則從選擇的普通區(qū)域中隨機選擇一個空閑的座位,將選擇的空閑的座位分配給第一用戶。
[0134](C)、如果否,則在選擇的分區(qū)組中創(chuàng)建一個普通區(qū)域,并從創(chuàng)建的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0135]進一步地,主服務(wù)器還可以在創(chuàng)建的分區(qū)組中創(chuàng)建特權(quán)區(qū)域。
[0136]步驟306:第一前端代理設(shè)備接收第一終端發(fā)送的第一用戶的ID、頻道ID和聊天內(nèi)容,并根據(jù)該頻道ID將第一用戶的ID和聊天內(nèi)容發(fā)送給該分區(qū)服務(wù)器集群包括的聊天服務(wù)器;
[0137]具體地,第一前端代理設(shè)備接收第一終端發(fā)送的第一用戶的ID、頻道ID和聊天內(nèi)容,對該頻道ID進行一致性哈希運算,得到該頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID。第一前端代理設(shè)備根據(jù)該節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點,從該節(jié)點中獲取聊天服務(wù)器的IP地址和端口號;根據(jù)聊天服務(wù)器的IP地址和端口號,將第一用戶的ID和聊天內(nèi)容發(fā)送給該分區(qū)服務(wù)器集群包括的聊天服務(wù)器。
[0138]其中,當?shù)谝挥脩襞c與該聊天分區(qū)中的其他用戶聊天時,第一終端向第一前端代理設(shè)備發(fā)送第一用戶的ID、頻道ID和聊天內(nèi)容。
[0139]如圖6所示的系統(tǒng)架構(gòu)圖中,該系統(tǒng)包括第一終端、第一前端代理設(shè)備、選舉服務(wù)器和分區(qū)服務(wù)器集群,該分區(qū)服務(wù)器集群不僅包括主服務(wù)器、從服務(wù)器,還包括聊天服務(wù)器,當?shù)谝挥脩舭l(fā)送聊天內(nèi)容時,第一用戶對應(yīng)的第一終端向第一終端接入的第一前端代理設(shè)備發(fā)送聊天內(nèi)容,使第一前端代理設(shè)備將該聊天內(nèi)容發(fā)送給該聊天服務(wù)器。
[0140]步驟307:聊天服務(wù)器根據(jù)第一用戶的ID,將第一用戶的ID和聊天內(nèi)容發(fā)送給該聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,第二用戶為該聊天分區(qū)中除第一用戶之外的其他用戶。
[0141]具體地,本步驟可以通過如下(I)- (4)的步驟來實現(xiàn),包括:
[0142](I)、聊天服務(wù)器根據(jù)第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的分區(qū)組ID和區(qū)域ID ;
[0143](2)、聊天服務(wù)器根據(jù)該分區(qū)組ID和區(qū)域ID,從用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取第二用戶的ID ;
[0144]具體地,聊天服務(wù)器根據(jù)該分區(qū)組ID和區(qū)域ID,從用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的用戶ID,從獲取的用戶ID中刪除第一用戶的ID,得到第二用戶的ID0
[0145]其中,第二用戶為與第一用戶位于同一個區(qū)域中的其他用戶,將第一用戶的聊天內(nèi)容發(fā)送給該第二用戶,如此,同一個區(qū)域中的用戶只能看到自己所在區(qū)域中的用戶的聊天內(nèi)容,避免了當該頻道的聊天分區(qū)中的用戶較多時,該聊天分區(qū)中的所有用戶均能看到每個用戶的聊天內(nèi)容時出現(xiàn)聊天內(nèi)容雜亂的現(xiàn)象。
[0146](3)、聊天服務(wù)器根據(jù)第二用戶的ID,從已存儲的用戶ID與前端代理設(shè)備的標識的對應(yīng)關(guān)系中獲取第二用戶對應(yīng)的第二終端接入的第二前端代理設(shè)備的標識;
[0147](4)、聊天服務(wù)器根據(jù)第二前端代理設(shè)備的標識,將第一用戶的ID和聊天內(nèi)容發(fā)
送給第二終端。
[0148]其中,聊天服務(wù)器中存儲的數(shù)據(jù)與該分區(qū)服務(wù)器集群包括的主服務(wù)器中存儲的數(shù)據(jù)相同,所以通過聊天服務(wù)器將第一用戶的ID和聊天內(nèi)容發(fā)送給第二用戶對應(yīng)的第二終端,保證了聊天內(nèi)容能準確地發(fā)送到對應(yīng)的第二終端中。
[0149]進一步地,還可以將第一用戶的聊天內(nèi)容發(fā)送給該聊天分區(qū)內(nèi)所有的用戶,但是一般用戶對應(yīng)的終端上只顯示在用戶所在區(qū)域中的用戶的聊天內(nèi)容,當用戶想要查看該聊天分區(qū)內(nèi)所有用戶的聊天內(nèi)容時,該用戶可以向終端發(fā)送切換指令,該終端根據(jù)該切換指令向用戶顯示該聊天分區(qū)內(nèi)所有用戶的聊天內(nèi)容。
[0150]在本發(fā)明實施例中,選舉服務(wù)器監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,該選舉服務(wù)器立即將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,通過該新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并對該即時通訊業(yè)務(wù)進行處理,進而避免當主服務(wù)器出現(xiàn)故障時從服務(wù)器不能升級為主服務(wù)器,以及避免了主服務(wù)器出現(xiàn)故障時,終端無法向該分區(qū)服務(wù)器集群包括的從服務(wù)器中寫入該即時通訊業(yè)務(wù)的數(shù)據(jù),進而無法對該即時通訊業(yè)務(wù)進行處理。由于前端代理設(shè)備、主服務(wù)器和從服務(wù)器均位于不同的機房中,所以,當主服務(wù)器出現(xiàn)故障或者前端代理設(shè)備與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,前端代理設(shè)備不需要將即時通訊業(yè)務(wù)的數(shù)據(jù)先發(fā)送到主服務(wù)器所在的機房再發(fā)送到新的主服務(wù)器所在的機房,可以直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,不需要跨機房,進而提高了即時通訊業(yè)務(wù)的吞吐量。頻道的聊天分區(qū)中設(shè)置多個分區(qū)組,并在每個分區(qū)組中設(shè)置特權(quán)區(qū)域和普通區(qū)域,使更多的用戶可以進入該頻道,并且當?shù)谝挥脩襞c其他用戶進行聊天時,聊天服務(wù)器根據(jù)第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取到與第一用戶在同一個區(qū)域中的第二用戶,避免了該頻道的聊天分區(qū)中的用戶較多時,將聊天內(nèi)容發(fā)送給所有的用戶時出現(xiàn)聊天內(nèi)容雜亂的現(xiàn)象。
[0151]實施例三
[0152]參見圖7,本發(fā)明實施例提供了一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng),該系統(tǒng)包括:選舉服務(wù)器401和至少兩個數(shù)據(jù)服務(wù)器402 ;
[0153]選舉服務(wù)器401,用于接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息;
[0154]選舉服務(wù)器401,用于將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù);
[0155]選舉服務(wù)器401,用于監(jiān)聽主服務(wù)器和從服務(wù)器,當監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過新的主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理該即時通訊業(yè)務(wù)。
[0156]進一步地,該系統(tǒng)還包括:
[0157]選舉服務(wù)器401,用于根據(jù)主服務(wù)器的網(wǎng)絡(luò)之間互連的協(xié)議IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點身份標識ID的對應(yīng)關(guān)系中獲取主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;
[0158]選舉服務(wù)器401,用于向前端代理設(shè)備發(fā)送加入消息,該加入消息攜帶節(jié)點ID、主服務(wù)器的角色信息、IP地址和端口號、以及從服務(wù)器的角色信息、IP地址和端口號;
[0159]前端代理設(shè)備,用于根據(jù)節(jié)點ID,將主服務(wù)器的角色信息、IP地址和端口號,以及從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點中。
[0160]進一步地,該系統(tǒng)還包括:
[0161]選舉服務(wù)器401,用于向前端代理設(shè)備發(fā)送更新消息,更新消息中攜帶節(jié)點ID、主服務(wù)器的IP地址和端口號,以及新的主服務(wù)器的新角色信息、IP地址和端口號;
[0162]前端代理設(shè)備,用于根據(jù)節(jié)點ID、主服務(wù)器的IP地址和端口號,從哈希環(huán)中刪除主服務(wù)器的角色信息、IP地址和端口號;
[0163]前端代理設(shè)備,用于根據(jù)節(jié)點ID、新的主服務(wù)器的IP地址和端口號,從哈希環(huán)中獲取新的主服務(wù)器的角色信息,將獲取的角色信息替換為新角色信息。
[0164]進一步地,該系統(tǒng)還包括:
[0165]第一終端,用于向第一終端接入的第一前端代理設(shè)備發(fā)送入座請求消息,該入座請求消息攜帶第一用戶的ID和頻道的頻道ID ;
[0166]第一前端代理設(shè)備,用于根據(jù)頻道ID,將入座請求消息發(fā)送給頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器;
[0167]主服務(wù)器,用于根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)中為第一用戶分配座位;
[0168]第一前端代理設(shè)備,用于接收第一終端發(fā)送的第一用戶的ID、頻道ID和聊天內(nèi)容,并根據(jù)頻道ID將第一用戶的ID和聊天內(nèi)容發(fā)送給分區(qū)服務(wù)器集群包括的聊天服務(wù)器;
[0169]聊天服務(wù)器,用于根據(jù)第一用戶的ID,將第一用戶的ID和聊天內(nèi)容發(fā)送給聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,第二用戶為聊天分區(qū)中除第一用戶之外的其他用戶。
[0170]其中,第一前端代理設(shè)備,用于對頻道ID進行一致性哈希運算,得到頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ;
[0171]第一前端代理設(shè)備,用于根據(jù)節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點;
[0172]第一前端代理設(shè)備,用于根據(jù)節(jié)點中的主服務(wù)器的角色信息從節(jié)點中獲取主服務(wù)器的IP地址和端口號;
[0173]第一前端代理設(shè)備,用于根據(jù)主服務(wù)器的IP地址和端口號,將入座請求消息發(fā)送給主服務(wù)器。
[0174]其中,主服務(wù)器,用于根據(jù)第一用戶的ID,獲取第一用戶的身份信息;
[0175]主服務(wù)器,用于如果第一用戶的身份信息為會員用戶,則根據(jù)第一用戶的ID和頻道ID,在頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為第一用戶分配座位;
[0176]主服務(wù)器,用于如果第一用戶的身份信息為普通用戶,則根據(jù)第一用戶的ID和頻道ID,在聊天分區(qū)包括的普通區(qū)域中為第一用戶分配座位。
[0177]其中,主服務(wù)器,用于獲取頻道的聊天分區(qū)中的每個分區(qū)組包括的特權(quán)區(qū)域中的用戶的第一個數(shù),以及獲取每個分區(qū)組包括的普通區(qū)域中的用戶的第二個數(shù);
[0178]主服務(wù)器,用于將每個分區(qū)組對應(yīng)的第二個數(shù)分別除以每個分區(qū)組對應(yīng)的第一個數(shù),得到每個分區(qū)組對應(yīng)的第一數(shù)值;
[0179]主服務(wù)器,用于從聊天分區(qū)包括的分區(qū)組中,選擇最大的第一數(shù)值對應(yīng)的分區(qū)組,如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則從選擇的分區(qū)組包括的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑座位分配給第一用戶;
[0180]主服務(wù)器,用于如果選擇的分區(qū)組包括的特權(quán)區(qū)域中不存在空閑的座位,則在聊天分區(qū)中創(chuàng)建一個分區(qū)組,并在創(chuàng)建的分區(qū)組中創(chuàng)建一個特權(quán)區(qū)域,并從創(chuàng)建的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0181]其中,主服務(wù)器,用于獲取頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),選擇用戶的個數(shù)最少的分區(qū)組;
[0182]主服務(wù)器,用于在選擇的分區(qū)組包括的普通區(qū)域中,判斷是否存在用戶數(shù)最多且存在空閑座位的普通區(qū)域,如果是,則從用戶數(shù)最多且存在空閑座位的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶;
[0183]主服務(wù)器,用于如果否,則在選擇的分區(qū)組中創(chuàng)建一個普通區(qū)域,并從創(chuàng)建的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給第一用戶。
[0184]其中,聊天服務(wù)器,用于根據(jù)第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的分區(qū)組ID和區(qū)域ID ;
[0185]聊天服務(wù)器,用于根據(jù)分區(qū)組ID和區(qū)域ID,從用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取第二用戶的ID ;
[0186]聊天服務(wù)器,用于根據(jù)第二用戶的ID,從已存儲的用戶ID與前端代理設(shè)備的標識的對應(yīng)關(guān)系中獲取第二用戶對應(yīng)的第二終端接入的第二前端代理設(shè)備的標識;
[0187]聊天服務(wù)器,用于根據(jù)第二前端代理設(shè)備的標識,將第一用戶的ID和聊天內(nèi)容發(fā)送給第二終端。
[0188]在本發(fā)明實施例中,選舉服務(wù)器將第一次接收的注冊請求消息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器后,當前端代理設(shè)備接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給主服務(wù)器,通過主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。當選舉服務(wù)器監(jiān)聽到主服務(wù)器出現(xiàn)故障或者當主服務(wù)器與前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器后,當前端代理設(shè)備再次接收到終端發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)時,該選舉服務(wù)器直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,通過該新的主服務(wù)器對該即時通訊業(yè)務(wù)進行處理。由于前端代理設(shè)備、主服務(wù)器和從服務(wù)器均位于不同的機房中,所以,當主服務(wù)器出現(xiàn)故障或者前端代理設(shè)備與主服務(wù)器之間的網(wǎng)絡(luò)出現(xiàn)故障時,前端代理設(shè)備不需要將即時通訊業(yè)務(wù)的數(shù)據(jù)先發(fā)送到主服務(wù)器所在的機房再發(fā)送到新的主服務(wù)器所在的機房,可以直接將該即時通訊業(yè)務(wù)的數(shù)據(jù)發(fā)送給新的主服務(wù)器,不需要跨機房發(fā)送該即時通訊業(yè)務(wù)的數(shù)據(jù),進而提高了即時通訊業(yè)務(wù)的吞吐量。
[0189]需要說明的是:上述實施例提供的對即時通訊業(yè)務(wù)進行處理的系統(tǒng)在對即時通訊業(yè)務(wù)進行處理時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將系統(tǒng)的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的對即時通訊業(yè)務(wù)進行處理的系統(tǒng)與對即時通訊業(yè)務(wù)進行處理的方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0190]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0191]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0192]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種對即時通訊業(yè)務(wù)進行處理的方法,其特征在于,所述方法包括: 選舉服務(wù)器接收至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息; 所述選舉服務(wù)器將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過所述主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù); 所述選舉服務(wù)器監(jiān)聽所述主服務(wù)器和所述從服務(wù)器,當監(jiān)聽到所述主服務(wù)器出現(xiàn)故障或者當所述主服務(wù)器與所述前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過所述新的主服務(wù)器接收所述前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述選舉服務(wù)器將第一次接收的注冊請求消息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器之后,還包括: 所述選舉服務(wù)器根據(jù)所述主服務(wù)器的網(wǎng)絡(luò)之間互連的協(xié)議IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點身份標識ID的對應(yīng)關(guān)系中獲取所述主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ; 所述選舉服務(wù)器向前端代理設(shè)備發(fā)送加入消息,所述加入消息攜帶所述節(jié)點ID、所述主服務(wù)器的角色信息、IP地址和端口號、以及所述從服務(wù)器的角色信息、IP地址和端口號;所述前端代理設(shè)備根據(jù)所述節(jié)點ID,將所述主服務(wù)器的角色信息、IP地址和端口號,以及所述從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點中。
3.如權(quán)利要求2所述的方法,其特征在于,所述當監(jiān)聽到所述主服務(wù)器出現(xiàn)故障或者當所述主服務(wù)器與所述前端代`理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器之后,還包括: 所述選舉服務(wù)器向所述前端代理設(shè)備發(fā)送更新消息,所述更新消息中攜帶所述節(jié)點ID、所述主服務(wù)器的IP地址和端口號,以及所述新的主服務(wù)器的新角色信息、IP地址和端□號; 所述前端代理設(shè)備根據(jù)所述節(jié)點ID、所述主服務(wù)器的IP地址和端口號,從所述哈希環(huán)中刪除所述主服務(wù)器的角色信息、IP地址和端口號; 所述前端代理設(shè)備根據(jù)所述節(jié)點ID、所述新的主服務(wù)器的IP地址和端口號,從所述哈希環(huán)中獲取所述新的主服務(wù)器的角色信息,將所述獲取的角色信息替換為所述新角色信肩、O
4.如權(quán)利要求1-3任一權(quán)利要求所述的方法,其特征在于,所述方法還包括: 第一終端向所述第一終端接入的第一前端代理設(shè)備發(fā)送入座請求消息,所述入座請求消息攜帶第一用戶的ID和頻道的頻道ID ; 所述第一前端代理設(shè)備根據(jù)所述頻道ID,將所述入座請求消息發(fā)送給所述頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器; 所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)中為所述第一用戶分配座位; 所述第一前端代理設(shè)備接收所述第一終端發(fā)送的所述第一用戶的ID、所述頻道ID和聊天內(nèi)容,并根據(jù)所述頻道ID將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述分區(qū)服務(wù)器集群包括的聊天服務(wù)器; 所述聊天服務(wù)器根據(jù)所述第一用戶的ID,將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,所述第二用戶為所述聊天分區(qū)中除所述第一用戶之外的其他用戶。
5.如權(quán)利要求4所述的方法,其特征在于,所述第一前端代理設(shè)備根據(jù)所述頻道ID,將所述入座請求消息發(fā)送給所述頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器,包括: 所述第一前端代理設(shè)備對所述頻道ID進行一致性哈希運算,得到所述頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ; 所述第一前端代理設(shè)備根據(jù)所述節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點; 所述第一前端代理設(shè)備根據(jù)所述節(jié)點中的主服務(wù)器的角色信息從所述節(jié)點中獲取所述主服務(wù)器的IP地址和端口號; 所述第一前端代理設(shè)備根據(jù)所述主服務(wù)器的IP地址和端口號,將所述入座請求消息發(fā)送給所述主服務(wù)器。
6.如權(quán)利要求4所述的方法,其特征在于,所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)中為所述第一用戶分配座位,包括: 所述主服務(wù)器根據(jù)所述第一用戶的ID,獲取所述第一用戶的身份信息; 如果所述第一用戶的身份信息為會員用戶,則所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為所述第一用戶分配座位; 如果所述第一用戶的身份信息為普通用戶,則所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述聊天分區(qū)包括的普通區(qū)域中為所述第一用戶分配座位。
7.如權(quán)利要求6所述的方法,其特征在于,所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為所述第一用戶分配座位,包括: 所述主服務(wù)器獲取所述頻道的聊天分區(qū)中的每個分區(qū)組包括的特權(quán)區(qū)域中的用戶的第一個數(shù),以及獲取所述每個分區(qū)組包括的普通區(qū)域中的用戶的第二個數(shù); 所述主服務(wù)器將所述每個分區(qū)組對應(yīng)的所述第二個數(shù)分別除以所述每個分區(qū)組對應(yīng)的第一個數(shù),得到所述每個分區(qū)組對應(yīng)的第一數(shù)值; 所述主服務(wù)器從所述聊天分區(qū)包括的分區(qū)組中,選擇最大的第一數(shù)值對應(yīng)的分區(qū)組,如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則從選擇的分區(qū)組包括的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑座位分配給所述第一用戶; 如果選擇的分區(qū)組包括的特權(quán)區(qū)域中不存在空閑的座位,則所述主服務(wù)器在所述聊天分區(qū)中創(chuàng)建一個分區(qū)組,并在創(chuàng)建的分區(qū)組中創(chuàng)建一個特權(quán)區(qū)域,并從創(chuàng)建的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶。
8.如權(quán)利要求6所述的方法,其特征在于,所述主服務(wù)器根據(jù)所述第一用戶的ID和所述頻道ID,在所述聊天分區(qū)包括的普通區(qū)域中為所述第一用戶分配座位,包括: 所述主服務(wù)器獲取所述頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),選擇用戶的個數(shù)最少的分區(qū)組; 在選擇的分區(qū)組包括的普通區(qū)域中,判斷是否存在用戶數(shù)最多且存在空閑座位的普通區(qū)域,如果是,則所述主服務(wù)器從所述用戶數(shù)最多且存在空閑座位的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶;如果否,則所述主服務(wù)器在所述選擇的分區(qū)組中創(chuàng)建一個普通區(qū)域,并從創(chuàng)建的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶。
9.如權(quán)利要求4所述的方法,其特征在于,所述聊天服務(wù)器根據(jù)所述第一用戶的ID,將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,包括: 所述聊天服務(wù)器根據(jù)所述第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的分區(qū)組ID和區(qū)域ID ; 所述聊天服務(wù)器根據(jù)所述分區(qū)組ID和所述區(qū)域ID,從所述用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取第二用戶的ID ; 所述聊天服務(wù)器根據(jù)所述第二用戶的ID,從已存儲的用戶ID與前端代理設(shè)備的標識的對應(yīng)關(guān)系中獲取所述第二用戶對應(yīng)的第二終端接入的第二前端代理設(shè)備的標識; 所述聊天服務(wù)器根據(jù)所述第二前端代理設(shè)備的標識,將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給 所述第二終端。
10.一種對即時通訊業(yè)務(wù)進行處理的系統(tǒng),其特征在于,所述系統(tǒng)包括:選舉服務(wù)器和至少兩個數(shù)據(jù)服務(wù)器; 所述選舉服務(wù)器,用于接收所述至少兩個數(shù)據(jù)服務(wù)器發(fā)送的注冊請求消息; 所述選舉服務(wù)器,用于將第一次接收的注冊請求信息對應(yīng)的數(shù)據(jù)服務(wù)器設(shè)置為主服務(wù)器,將其他的數(shù)據(jù)服務(wù)器設(shè)置為從服務(wù)器,以通過所述主服務(wù)器接收前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù); 所述選舉服務(wù)器,用于監(jiān)聽所述主服務(wù)器和所述從服務(wù)器,當監(jiān)聽到所述主服務(wù)器出現(xiàn)故障或者當所述主服務(wù)器與所述前端代理設(shè)備之間的網(wǎng)絡(luò)出現(xiàn)故障時,將其中一個從服務(wù)器設(shè)置為新的主服務(wù)器,以通過所述新的主服務(wù)器接收所述前端代理設(shè)備發(fā)送的即時通訊業(yè)務(wù)的數(shù)據(jù)并處理所述即時通訊業(yè)務(wù)。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 所述選舉服務(wù)器,用于根據(jù)所述主服務(wù)器的網(wǎng)絡(luò)之間互連的協(xié)議IP地址和端口號,從已存儲的IP地址、端口號和節(jié)點身份標識ID的對應(yīng)關(guān)系中獲取所述主服務(wù)器所在的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ; 所述選舉服務(wù)器,用于向前端代理設(shè)備發(fā)送加入消息,所述加入消息攜帶所述節(jié)點ID、所述主服務(wù)器的角色信息、IP地址和端口號、以及所述從服務(wù)器的角色信息、IP地址和端□號; 所述前端代理設(shè)備,用于根據(jù)所述節(jié)點ID,將所述主服務(wù)器的角色信息、IP地址和端口號,以及所述從服務(wù)器的角色信息、IP地址和端口號加入哈希環(huán)中對應(yīng)的節(jié)點中。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 所述選舉服務(wù)器,用于向所述前端代理設(shè)備發(fā)送更新消息,所述更新消息中攜帶所述節(jié)點ID、所述主服務(wù)器的IP地址和端口號,以及所述新的主服務(wù)器的新角色信息、IP地址和端口號; 所述前端代理設(shè)備,用于根據(jù)所述節(jié)點ID、所述主服務(wù)器的IP地址和端口號,從所述哈希環(huán)中刪除所述主服務(wù)器的角色信息、IP地址和端口號; 所述前端代理設(shè)備,用于根據(jù)所述節(jié)點ID、所述新的主服務(wù)器的IP地址和端口號,從所述哈希環(huán)中獲取所述新的主服務(wù)器的角色信息,將所述獲取的角色信息替換為所述新角色信息。
13.如權(quán)利要求10-12任一權(quán)利要求所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第一終端,用于向所述第一終端接入的第一前端代理設(shè)備發(fā)送入座請求消息,所述入座請求消息攜帶第一用戶的ID和頻道的頻道ID ; 所述第一前端代理設(shè)備,用于根據(jù)所述頻道ID,將所述入座請求消息發(fā)送給所述頻道對應(yīng)的分區(qū)服務(wù)器集群包括的主服務(wù)器; 所述主服務(wù)器,用于根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)中為所述第一用戶分配座位; 所述第一前端代理設(shè)備,用于接收所述第一終端發(fā)送的所述第一用戶的ID、所述頻道ID和聊天內(nèi)容,并根據(jù)所述頻道ID將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述分區(qū)服務(wù)器集群包括的聊天服務(wù)器; 所述聊天服務(wù)器,用于根據(jù)所述第一用戶的ID,將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述聊天分區(qū)包括的第二用戶對應(yīng)的第二終端,所述第二用戶為所述聊天分區(qū)中除所述第一用戶之外的其他用戶。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于, 所述第一前端代理設(shè)備,用于對所述頻道ID進行一致性哈希運算,得到所述頻道接入的分區(qū)服務(wù)器集群對應(yīng)的節(jié)點ID ; 所述第一前端代理設(shè)備,用于根據(jù)所述節(jié)點ID,從哈希環(huán)中獲取對應(yīng)的節(jié)點; 所述第一前端代理設(shè)備,用于根據(jù)所述節(jié)點中的主服務(wù)器的角色信息從所述節(jié)點中獲取所述主服務(wù)器的IP地址和端口號; 所述第一前端代理設(shè)備,用于根據(jù)所述主服務(wù)器的IP地址和端口號,將所述入座請求消息發(fā)送給所述主服務(wù)器。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于, 所述主服務(wù)器,用于根據(jù)所述第一用戶的ID,獲取所述第一用戶的身份信息; 所述主服務(wù)器,用于如果所述第一用戶的身份信息為會員用戶,則根據(jù)所述第一用戶的ID和所述頻道ID,在所述頻道的聊天分區(qū)包括的特權(quán)區(qū)域中為所述第一用戶分配座位;所述主服務(wù)器,用于如果所述第一用戶的身份信息為普通用戶,則根據(jù)所述第一用戶的ID和所述頻道ID,在所述聊天分區(qū)包括的普通區(qū)域中為所述第一用戶分配座位。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于, 所述主服務(wù)器,用于獲取所述頻道的聊天分區(qū)中的每個分區(qū)組包括的特權(quán)區(qū)域中的用戶的第一個數(shù),以及獲取所述每個分區(qū)組包括的普通區(qū)域中的用戶的第二個數(shù); 所述主服務(wù)器,用于將所述每個分區(qū)組對應(yīng)的所述第二個數(shù)分別除以所述每個分區(qū)組對應(yīng)的第一個數(shù),得到所述每個分區(qū)組對應(yīng)的第一數(shù)值; 所述主服務(wù)器,用于從所述聊天分區(qū)包括的分區(qū)組中,選擇最大的第一數(shù)值對應(yīng)的分區(qū)組,如果選擇的分區(qū)組包括的特權(quán)區(qū)域中存在空閑的座位,則從選擇的分區(qū)組包括的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑座位分配給所述第一用戶; 所述主服務(wù)器,用于如果選擇的分區(qū)組包括的特權(quán)區(qū)域中不存在空閑的座位,則在所述聊天分區(qū)中創(chuàng)建一個分區(qū)組,并在創(chuàng)建的分區(qū)組中創(chuàng)建一個特權(quán)區(qū)域,并從創(chuàng)建的特權(quán)區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于, 所述主服務(wù)器,用于獲取所述頻道的聊天分區(qū)中的每個分區(qū)組包括的用戶的個數(shù),選擇用戶的個數(shù)最少的分區(qū)組; 所述主服務(wù)器,用于在選擇的分區(qū)組包括的普通區(qū)域中,判斷是否存在用戶數(shù)最多且存在空閑座位的普通區(qū)域,如果是,則從所述用戶數(shù)最多且存在空閑座位的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶; 所述主服務(wù)器,用于如果否,則在所述選擇的分區(qū)組中創(chuàng)建一個普通區(qū)域,并從創(chuàng)建的普通區(qū)域中選擇一個空閑的座位,并將選擇的空閑的座位分配給所述第一用戶。
18.如權(quán)利要求13所述的系統(tǒng),其特征在于, 所述聊天服務(wù)器,用于根據(jù)所述第一用戶的ID,從已存儲的用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取對應(yīng)的分區(qū)組ID和區(qū)域ID ; 所述聊天服務(wù)器,用于根據(jù)所述分區(qū)組ID和所述區(qū)域ID,從所述用戶ID、分區(qū)組ID和區(qū)域ID的對應(yīng)關(guān)系中獲取第二用戶的ID ; 所述聊天服務(wù)器,用于根據(jù)所述第二用戶的ID,從已存儲的用戶ID與前端代理設(shè)備的標識的對應(yīng)關(guān)系中獲取所述第二用戶對應(yīng)的第二終端接入的第二前端代理設(shè)備的標識; 所述聊天服務(wù)器,用于根據(jù)所述第二前端代理設(shè)備的標識,將所述第一用戶的ID和所述聊天內(nèi)容發(fā)送給所述第二終端。
【文檔編號】H04L12/58GK103731341SQ201310752590
【公開日】2014年4月16日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】古培昌, 李牧, 李佳林 申請人:廣州華多網(wǎng)絡(luò)科技有限公司