專利名稱:一種即時通訊系統(tǒng)中用戶信息管理的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信及計算機技術(shù)領(lǐng)域中的即時通訊技術(shù),尤其涉及一種即時通訊系統(tǒng)中用戶信息管理的方法以及相應(yīng)的系統(tǒng)。
背景技術(shù):
在即時通訊系統(tǒng)中,當(dāng)用戶登錄即時通訊系統(tǒng)時,需要獲得好友的在線信息;同時需要將該用戶的登錄信息發(fā)送給添加該用戶為好友的用戶。如果用戶的在線狀態(tài)發(fā)生改變,也需要將用戶的在線狀態(tài)改變信息發(fā)送給添加該用戶為好友的用戶。
采用現(xiàn)有技術(shù)的方法,對于用戶在線信息的管理,一般采用集中式管理方式,由專屬的用戶信息管理服務(wù)器管理用戶的在線信息。當(dāng)用戶登錄系統(tǒng)時,將用戶的登錄信息發(fā)送給用戶信息管理服務(wù)器,由用戶信息管理服務(wù)器進行管理。用戶登錄,用戶登錄后的在線狀態(tài)改變,或是用戶與用戶間發(fā)送即時消息時,用戶查找聯(lián)系人的在線信息都需要通過用戶信息管理服務(wù)器進行查找。這樣,不僅增加了用戶信息管理服務(wù)器的負(fù)載,同時也增大了網(wǎng)絡(luò)開銷。
隨著大型即時通訊系統(tǒng)中在線用戶數(shù)量的不斷增加,一臺用戶信息管理服務(wù)器不能實現(xiàn)集中管理所有的用戶在線信息,用戶在線信息被分散到多臺用戶信息管理服務(wù)器上。查找用戶的在線信息時,需要在多臺用戶信息管理服務(wù)器上查找,降低了查找效率。隨著用戶數(shù)量的進一步增加,用戶信息管理服務(wù)器的查找效率急劇下降,導(dǎo)致用戶在線信息管理性能惡化,成為整個即時通訊系統(tǒng)的運行瓶頸。
發(fā)明內(nèi)容
本發(fā)明提供一種即時通訊中用戶信息管理的方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中因查詢用戶信息時需要頻繁訪問用戶信息管理服務(wù)器,存在增加系統(tǒng)負(fù)載和增加網(wǎng)絡(luò)開銷,影響系統(tǒng)性能的問題。
本發(fā)明提供以下技術(shù)方案一種即時通訊系統(tǒng)中用戶信息管理的方法,包括如下步驟接入服務(wù)器獲取登錄用戶的聯(lián)系人信息并保存;所述接入服務(wù)器將所述登錄用戶的用戶信息通知其他接入服務(wù)器;接收到通知消息的接入服務(wù)器確定本地有所述登錄用戶的聯(lián)系人時,保存所述用戶信息;以及接入服務(wù)器需要獲取用戶的聯(lián)系人信息時在本地或/和其他接入服務(wù)器上進行查詢。
其中所述接入服務(wù)器進一步將登錄用戶的聯(lián)系人的狀態(tài)信息發(fā)送給登錄用戶所在客戶端;保存所述用戶信息的其他接入服務(wù)器進一步將登錄用戶的狀態(tài)信息發(fā)送給相關(guān)的聯(lián)系人。
所述用戶的聯(lián)系人信息包含用戶的好友信息和反向好友信息。
較佳的,在所述接入服務(wù)器上建立用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,在所述好友表中通過用戶標(biāo)識與該用戶在本地的好友信息關(guān)聯(lián),在所述反向好友表中通過用戶標(biāo)識與該用戶的反向好友信息關(guān)聯(lián)并記錄該用戶的位置信息。
其中獲取并保存登錄用戶的聯(lián)系人信息包括如下步驟用戶所登錄的接入服務(wù)器從數(shù)據(jù)庫中查找到該登錄用戶的好友標(biāo)識和反向好友標(biāo)識;所述接入服務(wù)器在反向好友表中查找所述好友標(biāo)識,并在查找到標(biāo)識后將所述登錄用戶的用戶標(biāo)識記錄到關(guān)聯(lián)的反向好友信息中;以及在所述接入服務(wù)器的好友表中查找所述反向好友標(biāo)識,并在查找到標(biāo)識后將所述登錄用戶的用戶標(biāo)識記錄到關(guān)聯(lián)的好友信息中。
較佳的,在用戶登錄后進一步包括步驟所述接入服務(wù)器在本地的好友表中查找登錄用戶的標(biāo)識,并在查找到該標(biāo)識后從對應(yīng)的好友信息中獲取所有本地好友標(biāo)識;在所述反向好友表中與各所述本地好友標(biāo)識相關(guān)聯(lián)的位置信息中記錄所述接入服務(wù)器的位置信息。
較佳的,所述登錄用戶的狀態(tài)改變時,所述接入服務(wù)器將用戶狀態(tài)改變的信息通知其他接入服務(wù)器后,接收到通知消息的接入服務(wù)器在反向好友表中查找到所述登錄用戶標(biāo)識時,根據(jù)與該標(biāo)識關(guān)聯(lián)的反向好友信息中的用戶標(biāo)識,向?qū)?yīng)的用戶發(fā)送登錄用戶的狀態(tài)改變信息。
其中,登錄用戶的用戶狀態(tài)改為退出登錄時,所述接入服務(wù)器進一步將與本機的好友表和反向好友表中用戶標(biāo)識關(guān)聯(lián)的所述登錄用戶的信息刪除;接收到所述通知消息的接入服務(wù)器在反向好友表中查找到所述登錄用戶標(biāo)識時,將與其關(guān)聯(lián)的位置信息清空。
當(dāng)所述登錄用戶給聯(lián)系人發(fā)送即時消息時,接入服務(wù)器在本地的反向好友表中查詢到所述聯(lián)系人標(biāo)識后,根據(jù)與其關(guān)聯(lián)的位置信息轉(zhuǎn)發(fā)所述即時消息。
若所述接入服務(wù)器在本地的反向好友表中查詢不到所述聯(lián)系人標(biāo)識,則從其他接入服務(wù)器請求用戶的聯(lián)系人信息,根據(jù)該聯(lián)系人信息轉(zhuǎn)發(fā)所述即時消息。
其中所述接入服務(wù)器以組播方式向其他接入服務(wù)器發(fā)送通知消息和請求消息。
一種通信系統(tǒng),包括多個接入服務(wù)器,各接入服務(wù)器用于獲取登錄用戶的聯(lián)系人信息并保存,并將所述登錄用戶的用戶信息通知其他接入服務(wù)器,以及從本地和/或其他接入服務(wù)器查詢用戶的聯(lián)系人信息和轉(zhuǎn)發(fā)即時消息;
用戶客戶端,通過接入服務(wù)器接入即時通訊系統(tǒng),從接入服務(wù)器查找到聯(lián)系人信息,并通過接入服務(wù)器發(fā)送和接收即時消息。
所述接入服務(wù)器具有用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,所述好友表包含用戶標(biāo)識與該用戶在本地的好友信息,所述反向好友表包含用戶標(biāo)識與該用戶的反向好友信息及該用戶的位置信息。
本發(fā)明通過在接入服務(wù)器上建立用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,對用戶的信息進行管理,大大降低了在用戶信息管理服務(wù)器上查找用戶信息的頻度,不僅降低了用戶信息管理服務(wù)器的負(fù)載,而且提高了用戶信息的查找性能,提高了用戶在線信息管理性能;同時降低了系統(tǒng)的網(wǎng)絡(luò)開銷。
圖1A為本發(fā)明實施例的系統(tǒng)結(jié)構(gòu)示意圖;圖1B為本發(fā)明實施例中好友表結(jié)構(gòu)示意圖;圖1C為本發(fā)明實施例中反向好友表結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例中用戶登錄過程的處理時序圖;圖3為本發(fā)明實施例中用戶查找好友在線信息的處理時序圖;圖4為本發(fā)明實施例中用戶在線狀態(tài)改變信息通知的處理時序圖;圖5為本發(fā)明實施例中用戶發(fā)送消息的處理流程圖;圖6為本發(fā)明實施例中用戶發(fā)送消息的另一處理流程圖;圖7為本發(fā)明實施例中用戶退出登錄的處理時序圖。
具體實施例方式
為了解決目前即時通訊系統(tǒng)中,查找用戶信息效率降低,用戶信息管理服務(wù)器負(fù)載大,用戶在線信息管理性能惡化等問題,在接入服務(wù)器上建立用戶的好友表和反向好友表,對接入本機的用戶及其聯(lián)系人信息進行管理,查詢用戶信息時,直接在接入服務(wù)器上進行查找。
以下結(jié)合附圖對本發(fā)明進行詳細(xì)說明。
參閱圖1A所示,本實施例中的通信系統(tǒng)包括多個接入服務(wù)器,以及通過網(wǎng)絡(luò)與接入服務(wù)器連接的多個登錄用戶客戶端。
各接入服務(wù)器用于獲取登錄用戶的聯(lián)系人信息并保存,并將所述登錄用戶的用戶信息通知其他接入服務(wù)器;以及在本地查詢用戶的聯(lián)系人信息和轉(zhuǎn)發(fā)即時消息。
所述的登錄用戶客戶端通過接入服務(wù)器接入即時通訊系統(tǒng),從接入服務(wù)器查找到聯(lián)系人信息,并通過接入服務(wù)器給聯(lián)系人發(fā)送即時消息。
當(dāng)用戶登錄時,連接到系統(tǒng)中的一臺接入服務(wù)器上,多臺接入服務(wù)器組成一個UDP(User datagramprotocol,用戶數(shù)據(jù)報協(xié)議)組播組,組中的每一臺服務(wù)器能夠收到組內(nèi)接入的其他服務(wù)器發(fā)送的組播UDP信息。
在接入服務(wù)器上建立用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,在所述好友表中通過用戶標(biāo)識與該用戶在本地的好友信息關(guān)聯(lián),在所述反向好友表中通過用戶標(biāo)識與該用戶的反向好友信息關(guān)聯(lián)并記錄該用戶的位置信息。
好友表和反向好友表都采用用戶的ID作索引。反向好友是指添加用戶為好友的用戶,如A將B添加為好友,則B是A的好友,A是B的反向好友。好友表用來查找某個用戶在該服務(wù)器上的好友信息。好友表結(jié)構(gòu)如圖1B所示,在好友表中包含用戶標(biāo)識ID的節(jié)點,各節(jié)點對應(yīng)的好友列表記錄用戶在本地的好友信息。
查詢用戶在服務(wù)器上的好友時,在該服務(wù)器的好友表中查詢該用戶的節(jié)點,即可找到對應(yīng)于該節(jié)點記錄的用戶在本機上的好友信息。
每一個用戶登錄服務(wù)器時,獲取該用戶的反向好友信息,在用戶接入的服務(wù)器的好友表中,將該用戶信息記錄到其反向好友節(jié)點的好友列表中。例如用戶A是用戶B和用戶C的好友,當(dāng)用戶A通過服務(wù)器A接入即時通訊系統(tǒng)時,從數(shù)據(jù)庫中查找到用戶A的反向好友用戶B和用戶C的ID,將用戶A的信息記錄到服務(wù)器A好友表中用戶B節(jié)點和用戶C節(jié)點的好友列表中,記錄過程為在服務(wù)器A的好友表中查找用戶B節(jié)點,如果用戶B節(jié)點不存在,在好友表中建立用戶B節(jié)點,并在用戶B節(jié)點的好友列表中記錄用戶A的信息;在好友表中查找用戶C節(jié)點,如果用戶C節(jié)點已經(jīng)存在,直接在用戶C節(jié)點的好友列表中記錄用戶A的信息。這樣,當(dāng)用戶A登錄即時通訊系統(tǒng)時,用戶A的信息,被記錄到了服務(wù)器A上好友表中用戶B節(jié)點和用戶C節(jié)點的好友列表中。
反向好友表是用來查找某個用戶被本服務(wù)器哪些用戶加為好友,反向好友表結(jié)構(gòu)如圖1C所示,在反向好友表中包含用戶標(biāo)識ID的節(jié)點以及用戶所處的POS(Position of Server,服務(wù)器位置信息),各節(jié)點對應(yīng)的列表記錄用戶在本地的反向好友信息。
在該服務(wù)器的反向好友表中查詢用戶的節(jié)點,即可查找到對應(yīng)于該節(jié)點記錄的用戶在本機上的反向好友信息以及該用戶所處的服務(wù)器位置信息。
每一個用戶登錄服務(wù)器時,獲取該用戶的好友信息,在用戶接入的服務(wù)器的反向好友表中,將該用戶信息記錄到其好友節(jié)點的反向好友列表中。例如用戶A是用戶B和用戶C的反向好友,用戶A通過服務(wù)器A、用戶B通過服務(wù)器B接入即時通訊系統(tǒng)中,用戶C不在線。當(dāng)用戶A通過服務(wù)器A接入即時通訊系統(tǒng)時,從數(shù)據(jù)庫中查找到用戶A的好友用戶B和用戶C的ID,將用戶A的信息記錄到服務(wù)器A反向好友表中用戶B節(jié)點和用戶C節(jié)點的反向好友列表中,記錄過程為在服務(wù)器A的反向好友表中查找用戶B節(jié)點,如果用戶B節(jié)點不存在,在反向好友表中建立用戶B節(jié)點,并記錄用戶B所處的POS為服務(wù)器B,在用戶B節(jié)點的反向好友列表中記錄用戶A的信息;在反向好友表中查找用戶C節(jié)點,如果存在用戶C節(jié)點,將用戶C所處的POS記錄為空,并在用戶C節(jié)點的反向好友列表中記錄用戶A的信息。這樣,當(dāng)用戶A登錄即時通訊系統(tǒng)時,用戶A作為用戶B和用戶C在服務(wù)器A上的反向好友,被記錄到了服務(wù)器A上反向好友表中用戶B節(jié)點和用戶C節(jié)點的好友列表中,同時,用戶B和用戶C所處的服務(wù)器位置信息也記錄到了反向好友表中。
參閱圖2所示,用戶接入服務(wù)器時的處理過程如下步驟201、接入服務(wù)器A的用戶A給服務(wù)器A發(fā)送登錄消息。
步驟202、服務(wù)器A從數(shù)據(jù)庫獲取用戶A的好友ID和反向好友ID。
步驟203、服務(wù)器A將數(shù)據(jù)庫中取到的用戶A的好友ID和反向好友ID返回本機。
步驟204、根據(jù)好友的ID,在服務(wù)器A的反向好友表中查找到好友的節(jié)點,將用戶A的信息記錄到好友節(jié)點的反向好友列表中;根據(jù)反向好友的ID,在服務(wù)器A的好友表中查找到反向好友的節(jié)點,將用戶A的信息記錄到反向好友節(jié)點的好友列表中。
步驟205、服務(wù)器A給用戶A在本機中的反向好友發(fā)送用戶A的上線通知時,在本機的反向好友表中查詢用戶A,如果不存在用戶A節(jié)點,表明本機中不存在用戶A的反向好友,不作處理;如果存在用戶A節(jié)點,在用戶A節(jié)點的反向好友列表中將用戶A所處服務(wù)器信息修改為服務(wù)器A,并在用戶A節(jié)點的反向好友列表中查到反向好友ID。
步驟206、服務(wù)器A根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A上線通知。
步驟207、服務(wù)器A給其他接入服務(wù)器發(fā)送用戶A的上線通知時,服務(wù)器A在即時通訊系統(tǒng)中UDP組播用戶A上線消息。
步驟208、即時通訊系統(tǒng)中的接入服務(wù)器B收到組播消息后,在本機的反向好友表中查詢用戶A,如果不存在用戶A,表明本機中不存在用戶A的反向好友,不作處理;如果存在用戶A,執(zhí)行步驟209。
步驟209、將服務(wù)器B的反向好友表中用戶A所處的服務(wù)器位置信息修改為服務(wù)器A,在用戶A節(jié)點的反向好友列表中查到反向好友ID。
步驟210、服務(wù)器B根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A上線通知。
采用以上所述處理,即時通訊系統(tǒng)中用戶A登錄系統(tǒng)后,在用戶A接入的服務(wù)器中保存了用戶A的信息以及用戶A的聯(lián)系人信息;同時用戶A的反向好友都獲得了用戶A的信息。
參閱圖3所示,用戶A登錄通訊系統(tǒng)后,查找好友在線信息的處理過程如下步驟301、用戶A登錄服務(wù)器A。
步驟302、服務(wù)器A在本機的好友表中查詢用戶A的節(jié)點,查找到該節(jié)點的好友列表中記錄的好友ID,根據(jù)好友ID,在反向好友表查找到好友的節(jié)點,將對應(yīng)于該節(jié)點記錄的服務(wù)器信息修改為服務(wù)器A,并查看好友的在線信息。
步驟303、服務(wù)器A將查找到的用戶A在本機中的好友在線信息返回給用戶A。
步驟304、服務(wù)器A在即時通訊系統(tǒng)中組播請求用戶A的好友在線信息。
步驟305、即時通訊系統(tǒng)中的服務(wù)器B收到組播請求后,在本機的好友表中查詢用戶A的節(jié)點,查看本機是否存在用戶A的好友,如果存在,執(zhí)行步驟306;否則,不作處理。
步驟306、服務(wù)器B將本機中用戶A的好友的在線信息發(fā)送給服務(wù)器A。
步驟307、服務(wù)器A根據(jù)服務(wù)器B返回的用戶A的好友信息,將本機反向好友表中用戶A在服務(wù)器B上的好友所處的服務(wù)器位置信息記錄為服務(wù)器B。
步驟308、服務(wù)器A將從服務(wù)器B接收到的用戶A的好友在線信息返回給用戶A。
參閱圖4所示,用戶在線狀態(tài)改變?yōu)殡[身登錄的處理過程如下步驟401、接入服務(wù)器A的用戶A將上線狀態(tài)變?yōu)殡[身的消息發(fā)送給服務(wù)器A。
步驟402、服務(wù)器A將本地的好友表和反向好友表中用戶A的狀態(tài)記錄為隱身登錄。
步驟403、服務(wù)器A在本機的反向好友表中查詢是否存在用戶A的節(jié)點,如果存在該節(jié)點,在該節(jié)點的反向好友列表中查到反向好友ID,然后執(zhí)行步驟404;否則,不作處理。
步驟404、服務(wù)器A根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A狀態(tài)改變信息。
步驟405、服務(wù)器A在即時通訊系統(tǒng)中組播用戶A上線狀態(tài)改變消息。
步驟406、即時通訊系統(tǒng)中的服務(wù)器B收到組播消息后,在本機的反向好友表中查詢是否存在用戶A的節(jié)點,如果存在,在用戶A節(jié)點的反向好友列表中查找到反向好友ID,然后執(zhí)行步驟407;否則,不作處理。
步驟407、服務(wù)器B將本機的反向好友表中用戶A所處的服務(wù)器位置信息記錄為服務(wù)器A。
步驟408、服務(wù)器B根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A狀態(tài)改變信息。
參閱圖5所示,接入服務(wù)器A的用戶A給好友用戶B發(fā)送消息的處理過程如下步驟501、與服務(wù)器A連接的用戶A請求服務(wù)器A給好友用戶B發(fā)送消息。
步驟502、在服務(wù)器A的反向好友表中查詢用戶B的節(jié)點,查看對應(yīng)于該節(jié)點記錄的用戶B所處的服務(wù)器位置信息。
步驟503、判斷用戶B所處的服務(wù)器位置信息是否為空,如果為空,表明用戶B沒有登錄即時通訊系統(tǒng),執(zhí)行步驟504;如果不為空,執(zhí)行步驟505。
步驟504、服務(wù)器A將用戶A發(fā)送給用戶B的信息保存到數(shù)據(jù)庫。
步驟505、查看用戶B所處的服務(wù)器是否為本機,如果為本機,執(zhí)行步驟506;否則,執(zhí)行步驟507。
步驟506、服務(wù)器A將用戶A發(fā)送給本機用戶B的消息直接轉(zhuǎn)發(fā)給用戶B。
步驟507、當(dāng)用戶B所處的服務(wù)器為服務(wù)器B時,服務(wù)器A將用戶A發(fā)送給用戶B的信息轉(zhuǎn)發(fā)到服務(wù)器B。
步驟508、服務(wù)器B接收到服務(wù)器A轉(zhuǎn)發(fā)的消息時,查找是否存在用戶B的連接,如果存在,執(zhí)行步驟509;否則,執(zhí)行步驟511。
執(zhí)行該步驟,避免了當(dāng)用戶B正好離線,服務(wù)器B中保存的用戶B信息還沒更新時,服務(wù)器B給用戶B發(fā)送消息造成消息丟失。
步驟509、服務(wù)器B將服務(wù)器A轉(zhuǎn)發(fā)的消息發(fā)送給用戶B。
步驟510、服務(wù)器B給服務(wù)器A發(fā)送消息發(fā)送成功通知。
步驟511、服務(wù)器B給服務(wù)器A發(fā)送消息發(fā)送失敗通知。
步驟512、服務(wù)器B將消息存到數(shù)據(jù)庫。
如果用戶B不是用戶A的好友,但與服務(wù)器A連接的用戶中有用戶添加了用戶B為好友,在服務(wù)器A的反向好友表中存在用戶B信息時,用戶A給用戶B發(fā)送消息的處理與以上所述處理過程相同。
參閱圖6所示,當(dāng)用戶B不是用戶A的好友,服務(wù)器A的反向好友表中不存在用戶B信息,用戶A給用戶B發(fā)送消息的處理過程如下步驟601、與服務(wù)器A連接的用戶A請求服務(wù)器A給用戶B發(fā)送消息。
步驟602、在服務(wù)器A的反向好友表中查詢用戶B的節(jié)點,反向好友表中查找不到該節(jié)點。
步驟603、服務(wù)器A在本地查找用戶B的連接。
步驟604、判斷本地是否存在用戶B的連接信息,如果有連接,執(zhí)行步驟605;否則,執(zhí)行步驟606。
步驟605、服務(wù)器A將消息直接轉(zhuǎn)發(fā)給用戶B。
步驟606、服務(wù)器A組播請求用戶B在線信息。
步驟607、服務(wù)器A判斷是否接收到用戶B的在線信息,如果沒有接收到,執(zhí)行步驟608;否則,執(zhí)行步驟609。
步驟608、服務(wù)器A將消息存到數(shù)據(jù)庫。
步驟609、當(dāng)服務(wù)器A接收到服務(wù)器B發(fā)送的用戶B的在線信息時,在本機的反向好友表中,建立用戶B的節(jié)點,對應(yīng)于該節(jié)點記錄用戶B所處的服務(wù)器位置信息為服務(wù)器B,反向好友列表為空。
步驟610、服務(wù)器A給服務(wù)器B轉(zhuǎn)發(fā)用戶A發(fā)送給用戶B的消息。
步驟611、服務(wù)器B將消息發(fā)送給用戶B。
步驟612、服務(wù)器B給服務(wù)器A發(fā)送消息發(fā)送成功通知。
參閱圖7所示,用戶退出登錄的處理過程如下步驟701、接入服務(wù)器A的用戶A將退出登錄的消息發(fā)送給服務(wù)器A。
步驟702、服務(wù)器A在本機的反向好友表中查詢是否存在用戶A的節(jié)點,如果存在該節(jié)點,在該節(jié)點的反向好友列表中查到反向好友ID,然后執(zhí)行步驟703;否則,不作處理。
步驟703、服務(wù)器A根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A退出登錄信息。
步驟704、服務(wù)器A根據(jù)查找到的反向好友的ID在本機的好友表和反向好友表中查詢對應(yīng)的節(jié)點,查詢到對應(yīng)的節(jié)點后,將對應(yīng)于節(jié)點記錄的用戶A的信息刪除;同時將反向好友表中用戶A節(jié)點中用戶A所處服務(wù)器信息清空。
步驟705、服務(wù)器A在即時通訊系統(tǒng)中組播用戶A退出登錄消息。
步驟706、即時通訊系統(tǒng)中的服務(wù)器B收到組播消息后,在本機的反向好友表中查詢是否存在用戶A的節(jié)點,如果存在,在用戶A節(jié)點的反向好友列表中查找到反向好友ID,然后執(zhí)行步驟707;否則,不作處理。
步驟707、服務(wù)器B將本機的反向好友表中用戶A節(jié)點所處的服務(wù)器位置信息清空。
步驟708、服務(wù)器B根據(jù)查找到的反向好友的ID給相應(yīng)的用戶發(fā)送用戶A退出登錄信息。
采用本發(fā)明的方法,在服務(wù)器上建立用戶的好友表和反向好友表,對接入本機的用戶及其聯(lián)系人信息進行管理,把原本需要通過頻繁訪問用戶信息管理服務(wù)器獲得的用戶信息保存在了本地服務(wù)器中,既降低了網(wǎng)絡(luò)開銷,又提高了查找效率和用戶信息管理性能。
在具體實施過程中,可在接入服務(wù)器上建立兩個內(nèi)存數(shù)據(jù)結(jié)構(gòu),分別用于記錄好友表和反向好友表數(shù)據(jù)。通過實際操作并進行統(tǒng)計分析證實采用本發(fā)明的方法切實可行。
在即時通訊系統(tǒng)中,假設(shè)每一臺接入服務(wù)器上接入了50000個用戶,每個用戶平均有100個好友,100個反向好友,那么將會有50000*(100+100)=10M個好友的信息被保存下來,如果給每個好友保留32字節(jié)信息,一共占用320M的內(nèi)存。在目前,主流服務(wù)器一般2G-4G內(nèi)存,內(nèi)存開銷上是可行的。而且好友表和反向好友表中采用ID作索引,很多相同的ID重復(fù)出現(xiàn)在同一個接入服務(wù)器上,可以將ID放到一個內(nèi)存池里,然后直接用指針表示,進一步降低了實際占用的內(nèi)存。
其次,采用本發(fā)明降低了網(wǎng)絡(luò)開銷。采用現(xiàn)有技術(shù),當(dāng)一個用戶在線信息變化,需要把用戶信息發(fā)送給一臺用戶信息管理服務(wù)器,占用一個網(wǎng)絡(luò)傳輸時間單位;采用本發(fā)明的方法,用戶在線信息變化,通過UDP組播發(fā)送給各個等價的接入服務(wù)器,也占用一個網(wǎng)絡(luò)傳輸時間單位。查找用戶信息時,采用現(xiàn)有技術(shù)查找用戶所處接入服務(wù)器,需要訪問用戶信息管理服務(wù)器,存在多個用戶信息管理服務(wù)器時,需要跨機器查找,不僅增加了網(wǎng)絡(luò)開銷也降低了查找效率。
本發(fā)明具體實施時可在接入服務(wù)器內(nèi)存中保留用戶信息,節(jié)省了查找時間,降低了網(wǎng)絡(luò)開銷,提高了查找效率。
本發(fā)明的方法也適用于客戶端P2P發(fā)送信息的大型即時通訊系統(tǒng),其方法同理,不再贅述。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種即時通訊系統(tǒng)中用戶信息管理的方法,其特征在于,包括如下步驟接入服務(wù)器獲取登錄用戶的聯(lián)系人信息并保存;所述接入服務(wù)器將所述登錄用戶的用戶信息通知其他接入服務(wù)器;接收到通知消息的接入服務(wù)器確定本地有所述登錄用戶的聯(lián)系人時,保存所述用戶信息;以及接入服務(wù)器需要獲取用戶的聯(lián)系人信息時在本地或/和其他接入服務(wù)器上進行查詢。
2.如權(quán)利要求1所述的方法,其特征在于,所述接入服務(wù)器進一步將登錄用戶的聯(lián)系人的狀態(tài)信息發(fā)送給登錄用戶所在客戶端;保存所述用戶信息的其他接入服務(wù)器進一步將登錄用戶的狀態(tài)信息發(fā)送給相關(guān)的聯(lián)系人。
3.如權(quán)利要求2所述的方法,其特征在于,所述用戶的聯(lián)系人信息包含用戶的好友信息和反向好友信息。
4.如權(quán)利要求3所述的方法,其特征在于,在所述接入服務(wù)器上建立用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,在所述好友表中通過用戶標(biāo)識與該用戶在本地的好友信息關(guān)聯(lián),在所述反向好友表中通過用戶標(biāo)識與該用戶的反向好友信息關(guān)聯(lián)并記錄該用戶的位置信息。
5.如權(quán)利要求4所述的方法,其特征在于,獲取并保存登錄用戶的聯(lián)系人信息包括如下步驟用戶所登錄的接入服務(wù)器從數(shù)據(jù)庫中查找到該登錄用戶的好友標(biāo)識和反向好友標(biāo)識;所述接入服務(wù)器在反向好友表中查找所述好友標(biāo)識,并在查找到標(biāo)識后將所述登錄用戶的用戶標(biāo)識記錄到關(guān)聯(lián)的反向好友信息中;以及在所述接入服務(wù)器的好友表中查找所述反向好友標(biāo)識,并在查找到標(biāo)識后將所述登錄用戶的用戶標(biāo)識記錄到關(guān)聯(lián)的好友信息中。
6.如權(quán)利要求5所述的方法,其特征在于,在所述反向好友表中未查找到好友標(biāo)識時,在該表中記錄好友標(biāo)識,將所述登錄用戶的用戶標(biāo)識作為反向好友信息并與好友標(biāo)識關(guān)聯(lián)。
7.如權(quán)利要求5所述的方法,其特征在于,在所述好友表中未查找到反向好友標(biāo)識時,在該表中記錄反向好友標(biāo)識,將所述登錄用戶的用戶標(biāo)識作為好友信息并與該反向好友標(biāo)識關(guān)聯(lián)。
8.如權(quán)利要求5所述的方法,其特征在于,在用戶登錄后進一步包括步驟所述接入服務(wù)器在本地的好友表中查找登錄用戶的標(biāo)識,并在查找到該標(biāo)識后從對應(yīng)的好友信息中獲取所有本地好友標(biāo)識;在所述反向好友表中與各所述本地好友標(biāo)識相關(guān)聯(lián)的位置信息中記錄所述接入服務(wù)器的位置信息。
9.如權(quán)利要求8所述的方法,其特征在于,所述接入服務(wù)器將登錄用戶的相關(guān)信息通知其他服務(wù)器后,接收到通知消息的接入服務(wù)器在反向好友表中查找到所述登錄用戶標(biāo)識時,在與該標(biāo)識關(guān)聯(lián)的位置信息中記錄所述登錄用戶的位置信息,并根據(jù)與該標(biāo)識關(guān)聯(lián)的反向好友信息中的用戶標(biāo)識,向?qū)?yīng)的用戶發(fā)送登錄用戶的狀態(tài)信息。
10.如權(quán)利要求8所述的方法,其特征在于,所述接入服務(wù)器從其他接入服務(wù)器請求所述登錄用戶的狀態(tài)信息時,所述其他接入服務(wù)器在本地好友表中查找到所述登錄用戶的標(biāo)識時,將與其關(guān)聯(lián)的好友信息中的用戶標(biāo)識返回給所述接入服務(wù)器。
11.如權(quán)利要求10所述的方法,其特征在于,所述接入服務(wù)器進一步在本地反向好友表中查找所述其他接入服務(wù)器返回的用戶標(biāo)識,并在查找到用戶標(biāo)識后,在與其關(guān)聯(lián)的位置信息中記錄用戶的位置信息。
12.如權(quán)利要求5至11任一項所述的方法,其特征在于,所述登錄用戶的狀態(tài)改變時,所述接入服務(wù)器將用戶狀態(tài)改變的信息通知其他接入服務(wù)器后,接收到通知消息的接入服務(wù)器在反向好友表中查找到所述登錄用戶標(biāo)識時,根據(jù)與該標(biāo)識關(guān)聯(lián)的反向好友信息中的用戶標(biāo)識,向?qū)?yīng)的用戶發(fā)送登錄用戶的狀態(tài)改變信息。
13.如權(quán)利要求12所述的方法,其特征在于,登錄用戶的用戶狀態(tài)改變?yōu)橥顺龅卿洉r,所述接入服務(wù)器進一步將與本機的好友表和反向好友表中用戶標(biāo)識關(guān)聯(lián)的所述登錄用戶的信息刪除;接收到所述通知消息的接入服務(wù)器在反向好友表中查找到所述登錄用戶標(biāo)識時,進一步將與其關(guān)聯(lián)的位置信息清空。
14.如權(quán)利要求12所述的方法,其特征在于,當(dāng)所述登錄用戶給聯(lián)系人發(fā)送即時消息時,接入服務(wù)器在本地的反向好友表中查詢到所述聯(lián)系人標(biāo)識后,根據(jù)與其關(guān)聯(lián)的位置信息轉(zhuǎn)發(fā)所述即時消息。
15.如權(quán)利要求14所述的方法,其特征在于,若所述接入服務(wù)器在本地的反向好友表中查詢不到所述聯(lián)系人標(biāo)識,則從其他接入服務(wù)器請求用戶的聯(lián)系人信息,根據(jù)該聯(lián)系人信息轉(zhuǎn)發(fā)所述即時消息。
16.如權(quán)利要求12所述的方法,其特征在于,所述接入服務(wù)器以組播方式向其他接入服務(wù)器發(fā)送通知消息和請求消息。
17.一種通信系統(tǒng),其特征在于,包括多個接入服務(wù)器,各接入服務(wù)器用于獲取登錄用戶的聯(lián)系人信息并保存,并將所述登錄用戶的用戶信息通知其他接入服務(wù)器,以及從本地和/或其他接入服務(wù)器查詢用戶的聯(lián)系人信息和轉(zhuǎn)發(fā)即時消息;用戶客戶端,通過接入服務(wù)器接入即時通訊系統(tǒng),從接入服務(wù)器查找到聯(lián)系人信息,并通過接入服務(wù)器發(fā)送和接收即時消息。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述接入服務(wù)器具有用于存儲用戶好友信息的好友表和用于存儲用戶反向好友信息的反向好友表,所述好友表包含用戶標(biāo)識與該用戶在本地的好友信息,所述反向好友表包含用戶標(biāo)識與該用戶的反向好友信息及該用戶的位置信息。
全文摘要
本發(fā)明公開了一種即時通訊中用戶信息管理的方法,用于解決大型即時通訊系統(tǒng)中因查詢用戶信息時需要頻繁訪問用戶信息管理服務(wù)器,增加系統(tǒng)負(fù)載和增加網(wǎng)絡(luò)開銷,影響系統(tǒng)性能的問題。本發(fā)明方法包括接入服務(wù)器獲取登錄用戶的聯(lián)系人信息并保存,同時將所述登錄用戶的用戶信息通知其他接入服務(wù)器;接收到通知消息的接入服務(wù)器確定本地有所述登錄用戶的聯(lián)系人時,保存所述用戶信息;以及接入服務(wù)器需要獲取用戶的聯(lián)系人信息時在本地或/和其他接入服務(wù)器上進行查詢。本發(fā)明同時公開了一種通信系統(tǒng)。
文檔編號H04L12/28GK101090371SQ200610087059
公開日2007年12月19日 申請日期2006年6月14日 優(yōu)先權(quán)日2006年6月14日
發(fā)明者孔勇偉, 莫建祥, 徐志光, 許吉 申請人:阿里巴巴公司