亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于Dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法與流程

文檔序號(hào):11479543閱讀:484來源:國(guó)知局
一種基于Dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法與流程

本發(fā)明涉及分布式服務(wù)器與服務(wù)器集群,具體是一種基于dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法。



背景技術(shù):

隨著技術(shù)的快速發(fā)展,人們交換信息的途徑越來越多,其中即時(shí)通信技術(shù)成為人們必不可少的一種技術(shù)。但隨著用戶數(shù)量的日益增多,同一時(shí)刻通信人數(shù)的日趨增大,服務(wù)器如何依舊快速響應(yīng)客戶端發(fā)來請(qǐng)求成為一個(gè)難題。因此,需要一種快速、可靠、易于實(shí)現(xiàn)和維護(hù)且故障快速恢復(fù)的即時(shí)通信系統(tǒng)的綜合解決方案。



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

本發(fā)明提供一種基于dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法,實(shí)現(xiàn)了通信系統(tǒng)的大型化,提高數(shù)據(jù)傳輸?shù)乃俣扰c可靠性,滿足大量用戶的請(qǐng)求。

本發(fā)明是以如下技術(shù)方案實(shí)現(xiàn)的:一種基于dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法,用戶通過注冊(cè)服務(wù)器注冊(cè)賬號(hào)用戶注冊(cè)賬號(hào)完成,用戶則可以使用注冊(cè)賬號(hào)通過代理服務(wù)器進(jìn)行登錄與其他用戶通信,具體如下:

(1)用戶a向另一用戶b發(fā)送消息,代理服務(wù)器接到該消息;

(2)代理服務(wù)器將該消息發(fā)送給消息路由服務(wù)器;

(3)消息路由服務(wù)器收到該消息后,根據(jù)緩存的用戶b在線與連線狀態(tài),判斷用戶b是否在線;

若在線,則執(zhí)行操作(4),否則就將該消息轉(zhuǎn)發(fā)至離線消息服務(wù)器,用戶b上線后通過代理服務(wù)器獲取該離線消息;

(4)消息路由服務(wù)器采用dijkstra算法計(jì)算出到達(dá)與用戶b相連的代理服務(wù)器的最短路徑;

(5)消息路由服務(wù)器沿該路徑轉(zhuǎn)發(fā)消息;

(6)代理服務(wù)器收到消息后,將該消息發(fā)送給用戶b。

進(jìn)一步,用戶通過注冊(cè)服務(wù)器注冊(cè)賬號(hào),其過程分為寫號(hào)和放號(hào)兩個(gè)階段:

(1)當(dāng)處于寫號(hào)階段時(shí),注冊(cè)服務(wù)器將空的用戶賬號(hào)號(hào)碼寫入服務(wù)器數(shù)據(jù)庫(kù)中的nosql緩存數(shù)據(jù)庫(kù);

(2)當(dāng)處于放號(hào)階段時(shí)注冊(cè)服務(wù)器將賬號(hào)信息寫入數(shù)據(jù)庫(kù)服務(wù)器中的關(guān)系型數(shù)據(jù)庫(kù)mysql,此時(shí)用戶注冊(cè)賬號(hào)完成,用戶則可以使用注冊(cè)賬號(hào)通過代理服務(wù)器進(jìn)行登錄與其他用戶通信。

進(jìn)一步,用戶通過代理服務(wù)器登錄已注冊(cè)的賬號(hào),并輸入密碼,代理服務(wù)器通過與之相連的數(shù)據(jù)庫(kù)服務(wù)器返回該用戶的密碼信息核對(duì),進(jìn)行密碼認(rèn)證,確認(rèn)賬號(hào)密碼匹配后,完成登錄操作。

進(jìn)一步,消息路由服務(wù)器會(huì)緩存用戶在線與離線的狀態(tài),從而判斷是將從某一用戶發(fā)來的信息發(fā)往另一用戶所連的代理服務(wù)器還是發(fā)往離線消息服務(wù)器;消息路由服務(wù)器還處理用戶添加好友和群的請(qǐng)求與響應(yīng),其提供創(chuàng)建群與加入群的相關(guān)服務(wù),包括群的寫號(hào)與放號(hào),并將群的信息存入數(shù)據(jù)庫(kù)服務(wù)器中,分為寫號(hào)與放號(hào)兩個(gè)階段:

(1)當(dāng)處于寫號(hào)階段時(shí),消息路由服務(wù)器接收到用戶傳送來的創(chuàng)建群的消息時(shí),向數(shù)據(jù)庫(kù)服務(wù)器中的nosql數(shù)據(jù)庫(kù)寫入空的群號(hào)碼。

(2)當(dāng)處于放號(hào)階段時(shí),消息路由服務(wù)器將用戶傳送過來的群相關(guān)信息寫入對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器中的關(guān)系型數(shù)據(jù)庫(kù)mysql數(shù)據(jù)庫(kù)中,完成創(chuàng)建群的操作。

進(jìn)一步,消息路由服務(wù)器采用dijkstra算法,大量的消息路由服務(wù)器構(gòu)成了通信轉(zhuǎn)發(fā)區(qū)域;當(dāng)處于邊緣的消息路由服務(wù)器收到從某一用戶發(fā)來的信息時(shí),運(yùn)用dijkstra算法計(jì)算出到達(dá)另一用戶連接代理服務(wù)器所連接的處于邊緣的消息路由服務(wù)器的最短路徑,具體步驟如下:將消息路由服務(wù)器看為頂點(diǎn),將頂點(diǎn)構(gòu)成集合v,共分成兩組:s為已求出的頂點(diǎn)的集合,t=v-s為尚未確定的頂點(diǎn)的集合;

(1)初始時(shí)令s={v0},v0為第一個(gè)收到此消息的邊緣消息路由服務(wù)器,t=v-s={其他頂點(diǎn)},若存在(v0,vi),d(v0,vi)為(v0,vi)邊上的權(quán)值,若不存在,則d(v0,vi)為∞;

(2)從t中選取一個(gè)與s中頂點(diǎn)有關(guān)聯(lián)邊且權(quán)值最小的頂點(diǎn)w,加入到s中;

(3)對(duì)其余t中頂點(diǎn)的距離值進(jìn)行修改:若加進(jìn)w作中間頂點(diǎn),從v0到vi的距離值縮短,則修改此距離值

重復(fù)上述步驟(2)、(3),直到s中包含所有頂點(diǎn),即w=vi為止,

其中,找出v0到vi所連接的處于邊緣的消息路由服務(wù)器的最短路徑即可。

使用文件服務(wù)器和圖片服務(wù)器來供用戶上傳與下載文件和圖片,并采用集群的形式;同時(shí)使用p2p服務(wù)器來實(shí)現(xiàn)用戶間點(diǎn)對(duì)點(diǎn)傳輸文件,視頻、音頻的p2p服務(wù)。

本發(fā)明的有益效果是:

(1)在線消息和離線消息的是分離的,且兩者互不影響,提高了消息的準(zhǔn)確性與可達(dá)性。

(2)服務(wù)器采用集群的方式,即某一服務(wù)器宕機(jī)后會(huì)有另外的服務(wù)器取代他的位置,從而保證服務(wù)提的連續(xù)可用性。

(3)采用數(shù)據(jù)緩存服務(wù)器復(fù)用數(shù)據(jù),大幅度減少了數(shù)據(jù)庫(kù)服務(wù)器的壓力,也提高了用戶讀取自己信息的速度。

附圖說明

下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。

圖1為發(fā)明中的整體架構(gòu)示意圖;

圖2為本方法的注冊(cè)及登陸工作流程圖;

圖3為本方法的通信工作流程圖;

圖4為本方法的上傳與下載文件、圖片工作流程圖;

圖5為本方法的數(shù)據(jù)緩存服務(wù)器工作原理圖;

圖6為p2p服務(wù)器集群主從結(jié)構(gòu)示意圖。

具體實(shí)施方式

如圖1所示,一種基于dijkstra算法的大型即時(shí)通信系統(tǒng)的實(shí)現(xiàn)方法,它包括數(shù)據(jù)庫(kù)服務(wù)器集群,offlinemessageserver(離線消息服務(wù)器)集群,fileserver(文件服務(wù)器)集群,imageserver(圖片服務(wù)器)集群,數(shù)據(jù)緩存服務(wù)器集群,agentserver(代理服務(wù)器)集群,routerserver(消息路由服務(wù)器)集群,registerserver(注冊(cè)服務(wù)器)。數(shù)據(jù)庫(kù)服務(wù)器集群用于存取用戶的基本信息。如:注冊(cè)時(shí)所錄入用戶基本信息,用戶的好友以及與用戶所相關(guān)的群等基本信息,并采用服務(wù)器集群的形式實(shí)現(xiàn)其高可用性,該信息通過agentserver(代理服務(wù)器)拉取數(shù)據(jù)返還給用戶。

如圖2所示,注冊(cè)及登錄工作流程如下:

(1)用戶通過registerserver(注冊(cè)服務(wù)器)向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送注冊(cè)用戶的請(qǐng)求;

(2)registerserver(注冊(cè)服務(wù)器)將空用戶賬號(hào)號(hào)碼寫入服務(wù)器數(shù)據(jù)庫(kù);

(3)registerserver(注冊(cè)服務(wù)器)將用戶輸入的賬號(hào)信息寫入數(shù)據(jù)庫(kù)服務(wù)器;

(4)完成注冊(cè),registerserver(注冊(cè)服務(wù)器)向用戶返回注冊(cè)成功的響應(yīng);

(5)用戶向agentserver(代理服務(wù)器)發(fā)送登陸請(qǐng)求;

(6)agentserver(代理服務(wù)器)通過數(shù)據(jù)緩存服務(wù)器進(jìn)行密碼認(rèn)證,并拉取該用戶的相關(guān)信息發(fā)送給該用戶。

如圖3所示,通信工作流程如下:

(1)用戶a向另一用戶b發(fā)送消息,agentserver(代理服務(wù)器)接到該消息;

(2)agentserver(代理服務(wù)器)將該消息發(fā)送給routerserver(消息路由服務(wù)器);

(3)routerserver(消息路由服務(wù)器)收到該消息后,根據(jù)緩存的用戶在線與連線狀態(tài),判斷用戶b是否在線;若在線,則執(zhí)行操作(4),否則就將該消息轉(zhuǎn)發(fā)至offlinemessageserver(離線消息服務(wù)器)(用戶b上線后通過agentserver(代理服務(wù)器)獲取該離線消息);

(4)routerserver(消息路由服務(wù)器)采用dijkstra算法計(jì)算出到達(dá)與用戶b相連的agentserver(代理服務(wù)器)的最短路徑;

(5)routerserver(消息路由服務(wù)器)沿該路徑轉(zhuǎn)發(fā)消息;

(6)agentserver(代理服務(wù)器)收到消息后,將該消息發(fā)送給用戶b。

dijkstra算法是routerserver(消息路由服務(wù)器)集群所組成的通信轉(zhuǎn)發(fā)區(qū)域中采用的,其作用是提高消息轉(zhuǎn)發(fā)的速度,從而達(dá)到通信的即時(shí)性。數(shù)據(jù)緩存服務(wù)器是將用戶的好友,群等個(gè)人信息存在在其中,當(dāng)用戶上線時(shí),無需在訪問數(shù)據(jù)庫(kù)服務(wù)器,以提高內(nèi)容訪問速度。運(yùn)用dijkstra算法計(jì)算出到達(dá)另一用戶連接的agentserver(代理服務(wù)器)所連接的處于邊緣的routerserver(消息路由服務(wù)器)的最短路徑,從而提高了信息傳遞的速度,其算法思想如下:

將routerserver(消息路由服務(wù)器)看為頂點(diǎn),將頂點(diǎn)構(gòu)成集合v,共分成兩組:s(已求出的頂點(diǎn)的集合)與t=v-s(尚未確定的頂點(diǎn)的集合)。

(1)初始時(shí)令s={v0}(v0為第一個(gè)收到此消息的邊緣routerserver(消息路由服務(wù)器)),t=v-s={其他頂點(diǎn)}。若存在(v0,vi),d(v0,vi)為(v0,vi)邊上的權(quán)值,若不存在,則d(v0,vi)為∞;

(2)從t中選取一個(gè)與s中頂點(diǎn)有關(guān)聯(lián)邊且權(quán)值最小的頂點(diǎn)w,加入到s中;

(3)對(duì)其余t中頂點(diǎn)的距離值進(jìn)行修改:若加進(jìn)w作中間頂點(diǎn),從v0到vi的距離值縮短,則修改此距離值

重復(fù)上述步驟(2)、(3),直到s中包含所有頂點(diǎn),即w=vi為止

其中,找出v0到vn(另一用戶連接的agentserver(代理服務(wù)器)所連接的處于邊緣的routerserver(消息路由服務(wù)器))的最短路徑即可。

如圖4所示,上傳與下載文件,圖片工作流程如下:

(1)用戶a向用戶b發(fā)送文件或者圖片時(shí),將該文件或者圖片發(fā)送給對(duì)應(yīng)fileserver(文件服務(wù)器)或者imageserver(圖片服務(wù)器);

(2)agentserver(代理服務(wù)器)通過routerserver(消息路由服務(wù)器)的轉(zhuǎn)發(fā)攻能,告知用戶b所連接的agentserver(代理服務(wù)器);

(3)該agentserver(代理服務(wù)器)告知用戶b用戶a發(fā)送了文件或者圖片;

(4)用戶b直接從對(duì)應(yīng)的fileserver(文件服務(wù)器)或者imageserver(圖片服務(wù)器)上下載對(duì)應(yīng)的文件或者圖片。

如圖5所示,當(dāng)用戶上線時(shí),其所連接的agentserver(代理服務(wù)器)只需要訪問數(shù)據(jù)緩存服務(wù)器來獲取該用戶的相關(guān)信息,并不需要訪問數(shù)據(jù)庫(kù)服務(wù)器,從而大幅減少了加載用戶信息所需要的時(shí)間,提高了通信效率。此外,數(shù)據(jù)緩存服務(wù)器必須要和數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行周期性的同步,以保障數(shù)據(jù)的一致性。

如圖6所示,p2p服務(wù)器是向用戶直接提供點(diǎn)對(duì)點(diǎn)傳輸?shù)姆?wù),其中的服務(wù)包括文件傳輸,圖片傳輸,音頻傳輸,視頻傳輸以及視頻通信等服務(wù),其使用的是udp與tcp相結(jié)合的方式,既保證了通信的速度,又保證了通信的安全。如果p2p連接未建立,那么則使用備份的p2p服務(wù)器,在多次連接失敗后,將為用戶提供數(shù)據(jù)中轉(zhuǎn)的服務(wù)。

本方法的實(shí)現(xiàn)過程:用戶先通過registerserver(注冊(cè)服務(wù)器)向數(shù)據(jù)庫(kù)服務(wù)器中添加用戶信息以注冊(cè)用戶,之后通過agentserver(代理服務(wù)器)登陸已注冊(cè)的用戶進(jìn)行與其他用戶即時(shí)通信。根據(jù)用戶發(fā)送的信息,可以分為文本消息與文件,圖片消息兩種情況:

(1)當(dāng)發(fā)送的消息是文本消息時(shí),agentserver(代理服務(wù)器)將該文本消息發(fā)送至routerserver(消息路由服務(wù)器),routerserver(消息路由服務(wù)器)判斷目的用戶是否在線,此時(shí),又分為目的用戶在線與離線兩種情況:

(a)當(dāng)目的用戶在線時(shí),routerserver(消息路由服務(wù)器)采用dijkstra算法判斷出與目的用戶相連的agentserver(代理服務(wù)器)的最短路徑并轉(zhuǎn)發(fā)該文本消息,當(dāng)該agentserver(代理服務(wù)器)收到該消息時(shí)轉(zhuǎn)發(fā)該消息至對(duì)應(yīng)的用戶。

(b)當(dāng)目的用戶離線時(shí),routerserver(消息路由服務(wù)器)會(huì)將該文本消息轉(zhuǎn)發(fā)至offlinemessageserver(離線消息服務(wù)器)中,當(dāng)目的用戶登錄上線時(shí),其所連接的agentserver(代理服務(wù)器)會(huì)從offlinemessageserver(離線消息服務(wù)器)中拉取出發(fā)送給該用戶的離線消息,并將該離線消息轉(zhuǎn)發(fā)給該用戶。

(2)當(dāng)發(fā)送的消息是文件或者圖片消息時(shí),agentserver(代理服務(wù)器)會(huì)將該消息發(fā)送至對(duì)應(yīng)的fileserver(文件服務(wù)器)和圖片服服務(wù)器,目的用戶只需要從對(duì)應(yīng)的fileserver(文件服務(wù)器)和imageserver(圖片服務(wù)器)上下載對(duì)應(yīng)的文件和圖片即可。

本發(fā)明主要解決了大型即時(shí)通信軟件平臺(tái),當(dāng)服務(wù)器的承載能力達(dá)到上限時(shí)做到快速擴(kuò)展新的服務(wù)器滿足需求的問題,即使當(dāng)有海量的用戶進(jìn)行通信時(shí),服務(wù)器也能提供服務(wù)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1