一种基于Dijkstra算法的大型即时通信系统的实现方法与流程

文档序号:11479543阅读:435来源:国知局
一种基于Dijkstra算法的大型即时通信系统的实现方法与流程

本发明涉及分布式服务器与服务器集群,具体是一种基于dijkstra算法的大型即时通信系统的实现方法。



背景技术:

随着技术的快速发展,人们交换信息的途径越来越多,其中即时通信技术成为人们必不可少的一种技术。但随着用户数量的日益增多,同一时刻通信人数的日趋增大,服务器如何依旧快速响应客户端发来请求成为一个难题。因此,需要一种快速、可靠、易于实现和维护且故障快速恢复的即时通信系统的综合解决方案。



技术实现要素:

本发明提供一种基于dijkstra算法的大型即时通信系统的实现方法,实现了通信系统的大型化,提高数据传输的速度与可靠性,满足大量用户的请求。

本发明是以如下技术方案实现的:一种基于dijkstra算法的大型即时通信系统的实现方法,用户通过注册服务器注册账号用户注册账号完成,用户则可以使用注册账号通过代理服务器进行登录与其他用户通信,具体如下:

(1)用户a向另一用户b发送消息,代理服务器接到该消息;

(2)代理服务器将该消息发送给消息路由服务器;

(3)消息路由服务器收到该消息后,根据缓存的用户b在线与连线状态,判断用户b是否在线;

若在线,则执行操作(4),否则就将该消息转发至离线消息服务器,用户b上线后通过代理服务器获取该离线消息;

(4)消息路由服务器采用dijkstra算法计算出到达与用户b相连的代理服务器的最短路径;

(5)消息路由服务器沿该路径转发消息;

(6)代理服务器收到消息后,将该消息发送给用户b。

进一步,用户通过注册服务器注册账号,其过程分为写号和放号两个阶段:

(1)当处于写号阶段时,注册服务器将空的用户账号号码写入服务器数据库中的nosql缓存数据库;

(2)当处于放号阶段时注册服务器将账号信息写入数据库服务器中的关系型数据库mysql,此时用户注册账号完成,用户则可以使用注册账号通过代理服务器进行登录与其他用户通信。

进一步,用户通过代理服务器登录已注册的账号,并输入密码,代理服务器通过与之相连的数据库服务器返回该用户的密码信息核对,进行密码认证,确认账号密码匹配后,完成登录操作。

进一步,消息路由服务器会缓存用户在线与离线的状态,从而判断是将从某一用户发来的信息发往另一用户所连的代理服务器还是发往离线消息服务器;消息路由服务器还处理用户添加好友和群的请求与响应,其提供创建群与加入群的相关服务,包括群的写号与放号,并将群的信息存入数据库服务器中,分为写号与放号两个阶段:

(1)当处于写号阶段时,消息路由服务器接收到用户传送来的创建群的消息时,向数据库服务器中的nosql数据库写入空的群号码。

(2)当处于放号阶段时,消息路由服务器将用户传送过来的群相关信息写入对应的数据库服务器中的关系型数据库mysql数据库中,完成创建群的操作。

进一步,消息路由服务器采用dijkstra算法,大量的消息路由服务器构成了通信转发区域;当处于边缘的消息路由服务器收到从某一用户发来的信息时,运用dijkstra算法计算出到达另一用户连接代理服务器所连接的处于边缘的消息路由服务器的最短路径,具体步骤如下:将消息路由服务器看为顶点,将顶点构成集合v,共分成两组:s为已求出的顶点的集合,t=v-s为尚未确定的顶点的集合;

(1)初始时令s={v0},v0为第一个收到此消息的边缘消息路由服务器,t=v-s={其他顶点},若存在(v0,vi),d(v0,vi)为(v0,vi)边上的权值,若不存在,则d(v0,vi)为∞;

(2)从t中选取一个与s中顶点有关联边且权值最小的顶点w,加入到s中;

(3)对其余t中顶点的距离值进行修改:若加进w作中间顶点,从v0到vi的距离值缩短,则修改此距离值

重复上述步骤(2)、(3),直到s中包含所有顶点,即w=vi为止,

其中,找出v0到vi所连接的处于边缘的消息路由服务器的最短路径即可。

使用文件服务器和图片服务器来供用户上传与下载文件和图片,并采用集群的形式;同时使用p2p服务器来实现用户间点对点传输文件,视频、音频的p2p服务。

本发明的有益效果是:

(1)在线消息和离线消息的是分离的,且两者互不影响,提高了消息的准确性与可达性。

(2)服务器采用集群的方式,即某一服务器宕机后会有另外的服务器取代他的位置,从而保证服务提的连续可用性。

(3)采用数据缓存服务器复用数据,大幅度减少了数据库服务器的压力,也提高了用户读取自己信息的速度。

附图说明

下面结合附图对本发明作进一步说明。

图1为发明中的整体架构示意图;

图2为本方法的注册及登陆工作流程图;

图3为本方法的通信工作流程图;

图4为本方法的上传与下载文件、图片工作流程图;

图5为本方法的数据缓存服务器工作原理图;

图6为p2p服务器集群主从结构示意图。

具体实施方式

如图1所示,一种基于dijkstra算法的大型即时通信系统的实现方法,它包括数据库服务器集群,offlinemessageserver(离线消息服务器)集群,fileserver(文件服务器)集群,imageserver(图片服务器)集群,数据缓存服务器集群,agentserver(代理服务器)集群,routerserver(消息路由服务器)集群,registerserver(注册服务器)。数据库服务器集群用于存取用户的基本信息。如:注册时所录入用户基本信息,用户的好友以及与用户所相关的群等基本信息,并采用服务器集群的形式实现其高可用性,该信息通过agentserver(代理服务器)拉取数据返还给用户。

如图2所示,注册及登录工作流程如下:

(1)用户通过registerserver(注册服务器)向数据库服务器发送注册用户的请求;

(2)registerserver(注册服务器)将空用户账号号码写入服务器数据库;

(3)registerserver(注册服务器)将用户输入的账号信息写入数据库服务器;

(4)完成注册,registerserver(注册服务器)向用户返回注册成功的响应;

(5)用户向agentserver(代理服务器)发送登陆请求;

(6)agentserver(代理服务器)通过数据缓存服务器进行密码认证,并拉取该用户的相关信息发送给该用户。

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

(1)用户a向另一用户b发送消息,agentserver(代理服务器)接到该消息;

(2)agentserver(代理服务器)将该消息发送给routerserver(消息路由服务器);

(3)routerserver(消息路由服务器)收到该消息后,根据缓存的用户在线与连线状态,判断用户b是否在线;若在线,则执行操作(4),否则就将该消息转发至offlinemessageserver(离线消息服务器)(用户b上线后通过agentserver(代理服务器)获取该离线消息);

(4)routerserver(消息路由服务器)采用dijkstra算法计算出到达与用户b相连的agentserver(代理服务器)的最短路径;

(5)routerserver(消息路由服务器)沿该路径转发消息;

(6)agentserver(代理服务器)收到消息后,将该消息发送给用户b。

dijkstra算法是routerserver(消息路由服务器)集群所组成的通信转发区域中采用的,其作用是提高消息转发的速度,从而达到通信的即时性。数据缓存服务器是将用户的好友,群等个人信息存在在其中,当用户上线时,无需在访问数据库服务器,以提高内容访问速度。运用dijkstra算法计算出到达另一用户连接的agentserver(代理服务器)所连接的处于边缘的routerserver(消息路由服务器)的最短路径,从而提高了信息传递的速度,其算法思想如下:

将routerserver(消息路由服务器)看为顶点,将顶点构成集合v,共分成两组:s(已求出的顶点的集合)与t=v-s(尚未确定的顶点的集合)。

(1)初始时令s={v0}(v0为第一个收到此消息的边缘routerserver(消息路由服务器)),t=v-s={其他顶点}。若存在(v0,vi),d(v0,vi)为(v0,vi)边上的权值,若不存在,则d(v0,vi)为∞;

(2)从t中选取一个与s中顶点有关联边且权值最小的顶点w,加入到s中;

(3)对其余t中顶点的距离值进行修改:若加进w作中间顶点,从v0到vi的距离值缩短,则修改此距离值

重复上述步骤(2)、(3),直到s中包含所有顶点,即w=vi为止

其中,找出v0到vn(另一用户连接的agentserver(代理服务器)所连接的处于边缘的routerserver(消息路由服务器))的最短路径即可。

如图4所示,上传与下载文件,图片工作流程如下:

(1)用户a向用户b发送文件或者图片时,将该文件或者图片发送给对应fileserver(文件服务器)或者imageserver(图片服务器);

(2)agentserver(代理服务器)通过routerserver(消息路由服务器)的转发攻能,告知用户b所连接的agentserver(代理服务器);

(3)该agentserver(代理服务器)告知用户b用户a发送了文件或者图片;

(4)用户b直接从对应的fileserver(文件服务器)或者imageserver(图片服务器)上下载对应的文件或者图片。

如图5所示,当用户上线时,其所连接的agentserver(代理服务器)只需要访问数据缓存服务器来获取该用户的相关信息,并不需要访问数据库服务器,从而大幅减少了加载用户信息所需要的时间,提高了通信效率。此外,数据缓存服务器必须要和数据库服务器进行周期性的同步,以保障数据的一致性。

如图6所示,p2p服务器是向用户直接提供点对点传输的服务,其中的服务包括文件传输,图片传输,音频传输,视频传输以及视频通信等服务,其使用的是udp与tcp相结合的方式,既保证了通信的速度,又保证了通信的安全。如果p2p连接未建立,那么则使用备份的p2p服务器,在多次连接失败后,将为用户提供数据中转的服务。

本方法的实现过程:用户先通过registerserver(注册服务器)向数据库服务器中添加用户信息以注册用户,之后通过agentserver(代理服务器)登陆已注册的用户进行与其他用户即时通信。根据用户发送的信息,可以分为文本消息与文件,图片消息两种情况:

(1)当发送的消息是文本消息时,agentserver(代理服务器)将该文本消息发送至routerserver(消息路由服务器),routerserver(消息路由服务器)判断目的用户是否在线,此时,又分为目的用户在线与离线两种情况:

(a)当目的用户在线时,routerserver(消息路由服务器)采用dijkstra算法判断出与目的用户相连的agentserver(代理服务器)的最短路径并转发该文本消息,当该agentserver(代理服务器)收到该消息时转发该消息至对应的用户。

(b)当目的用户离线时,routerserver(消息路由服务器)会将该文本消息转发至offlinemessageserver(离线消息服务器)中,当目的用户登录上线时,其所连接的agentserver(代理服务器)会从offlinemessageserver(离线消息服务器)中拉取出发送给该用户的离线消息,并将该离线消息转发给该用户。

(2)当发送的消息是文件或者图片消息时,agentserver(代理服务器)会将该消息发送至对应的fileserver(文件服务器)和图片服服务器,目的用户只需要从对应的fileserver(文件服务器)和imageserver(图片服务器)上下载对应的文件和图片即可。

本发明主要解决了大型即时通信软件平台,当服务器的承载能力达到上限时做到快速扩展新的服务器满足需求的问题,即使当有海量的用户进行通信时,服务器也能提供服务。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1