基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法技术方案

技术编号:16132465 阅读:40 留言:0更新日期:2017-09-01 22:35
本发明专利技术涉及基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法,与现有技术相比解决了XMPP服务器之间通信在高吞吐量、高并发场景中出现消息堵塞的缺陷。本发明专利技术包括以下步骤:配置内存队列;注册服务器客户端;内存队列保存消息;消息分发。本发明专利技术通过灵活的配置内存队列和XMPP服务器自身内存的高效使用,可以满足系统业务发展需要,解决了XMPP服务器间高吞吐量、高并发的问题。

【技术实现步骤摘要】
基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法
本专利技术涉及XMPP服务器
,具体来说是基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法。
技术介绍
互联网工程工作小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。而XMPP的技术规格已被定义在RFC3920及RFC3921。任何IM供应商在遵循XMPP协议下,都可与GoogleTalk实现连接。第一个Jabber(现在XMPP)技术是JeremieMiller在1998年开发的,已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。XMPP网络的架构和电子邮件十分相像,XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TL等技术的可靠安全性,已内置于核心XMPP技术规格中。XML命名空间的威力可使任何人在核心协议的基础上建造定制化的功能,为了维持通透性,常见的扩展有XMPP标准基金会。XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。但是,随着通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,导致XMPP服务器数据负载太重,XMPP服务器之间通信就会出现延迟,甚至数据丢失现象。随着业务的增长,XMPP服务器的瞬时处理的数据会越来越多,假设某一时间的瞬时并发量为100W条通信数据,每条通信数据为16个字节计算,则需要消耗服务器16000000字节的处理能力,这对于无论服务器还是网络带宽来说都会带来极大的负载。现在已步入大数据的时代,随着Memcache、Redis等简单、快速、高效的分布式基于内存的缓存工具快速的发展和应用,使之能够极大的减少数据库访问次数,从而提高访问吞吐量和服务响应速度。Memcache是一套分布式的高速缓存系统,由LiveJournal的BradFitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。这是一套开放源代码软件,以BSDlicense授权发布。类似高速缓存工具他们最主要的特点就是:一是它是基于内存的高效Hash类缓存方式,二是使用了LRU算法来进行数据有效期控制,这两点就能够很好的满足我们对大数据交互的应用。能够有效的改善系统性能、减少服务器通讯时延,对于节约项目经济成本、和业务的发展等方面具有实际意义。服务器之间的通信通常会出现高吞吐量、高并发的问题。而传统的技术已不能有效的满足此方面的需求。因此,在云计算的业务形态下,如何将分布式基于内存的缓存工具与XMPP服务器进行有效技术结合,实现XMPP服务器的内存中转技术已经成为急需解决的技术问题。
技术实现思路
本专利技术的目的是为了解决现有技术中XMPP服务器之间通信在高吞吐量、高并发场景中出现消息堵塞的缺陷,提供一种基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法来解决上述问题。为了实现上述目的,本专利技术的技术方案如下:一种基于分布内存队列的XMPP服务器内存消息中转系统,包括注册管理模块、内存队列管理器、调度器和分发策略库,注册管理模块用于对XMPP服务器的内存进行配置和注册XMPP服务器客户端,并将注册的XMPP服务器客户端数据保存在数据总线中;内存队列管理器用于获取数据总线传输的数据并等待调度器的调用;分发策略库用于存储分发算法;调度器根据分发策略库中的分发算法从内存队列管理器调取数据,进行消息的分发中转。所述的内存队列管理器包括队列管理器和若干个内存队列,队列管理器的输出端与若干个内存队列的输入端相连。所述数据总线的输出端分别与注册管理模块的输入端和调度器的输入端相连,注册管理模块的输出端与内存队列管理器的输入端相连,内存队列管理器的输出端与调度器的输入端相连,分发策略库的输出端与调度器的输入端相连。所述的分发策略数据库包括轮转算法、加权轮转算法、最小连接数算法、加权最小连接数算法、目的地址哈希散列算法、源地址哈希散列算法和随机算法。基于分布内存队列的XMPP服务器内存消息中转系统的中转方法,包括以下步骤:配置内存队列,进入内存队列管理器管理配置接口,输入内存队列管理器所需相应的ID、IP、CPU、内存、优先级信息,注册后对内存队列进行健康体检,配置接口输出分布式内存列表;注册服务器客户端,客户端接入系统,采用发布/订阅模式注册订阅者到数据总线的系统中,数据总线记录客户端相应的信息,数据总线把接入的数据接口返回给客户端;内存队列保存消息,客户端根据数据总线返回的接口数据将信息传送给内存队列管理器,内存队列管理器将信息分发给内存队列;消息分发,调度器根据分发策略库中设定的分发策略将消息分发给数据总线保存的客户端,删除保存在内存队列中的数据,在内存队列管理器持久化消息。所述的配置内存队列包括以下步骤:进入内存队列管理器配置接口,在配置页面输入相应的信息:ID、IP、CPU、内存、优先级,保存信息到队列管理器的本地数据库中,形成若干个内存队列;内存队列的接入,内存队列管理器对接入的内存队列进行健康体检。所述的内存队列保存消息包括以下步骤:客户端根据数据总线返回的接口数据将信息传送给内存队列管理器,传输的数据包括数据信息、验证信息,其中数据传输使用XML格式;内存队列管理器接收信息后,通过队列管理器依次保存在内存队列中,内存队列采用三取二冗余结构保存信息,等待调度器的调用。所述的消息分发包括以下步骤:调度器建立分发工作的发起;调度器从数据总线处获取已经注册的客户端信息;调度器从分发策略库获取分发算法,从选中的内存队列中将信息分发出去;在本地持久化数据,备份数据到内存队列管理器的本地数据库;根据内存队列管理器中用户信息删除分布在内存队列中已经分发出去的消息。所述的内存队列管理器对接入的内存队列进行健康体检包括以下步骤:创建一个HTTP健康检查,间隔时间为5秒,尝试次数为3次;内存队列管理器从内存队列获取一个页面,检查页面内容是否包含指定的字符串;如果包含指定的字符串,则内存队列的通信服务是正常的,如果不包含或者获取不到页面,认为内存队列的通信服务是异常的;内存队列每隔5秒对异常的客户端进行检查,当发现该内存队列通信服务正常,则把该内存队列重新标记为正常。有益效果本专利技术的基于分布内存队列的XMPP服务器内存消本文档来自技高网
...
基于分布内存队列的XMPP服务器内存消息中转系统及其中转方法

【技术保护点】
一种基于分布内存队列的XMPP服务器内存消息中转系统,其特征在于:包括注册管理模块(1)、内存队列管理器(2)、调度器(3)和分发策略库(4),注册管理模块(1)用于对XMPP服务器的内存进行配置和注册XMPP服务器客户端,并将注册的XMPP服务器客户端数据保存在数据总线(5)中;内存队列管理器(2)用于获取数据总线(5)传输的数据并等待调度器(3)的调用;分发策略库(4)用于存储分发算法;调度器(3)根据分发策略库(4)中的分发算法从内存队列管理器(2)调取数据,进行消息的分发中转。

【技术特征摘要】
1.一种基于分布内存队列的XMPP服务器内存消息中转系统,其特征在于:包括注册管理模块(1)、内存队列管理器(2)、调度器(3)和分发策略库(4),注册管理模块(1)用于对XMPP服务器的内存进行配置和注册XMPP服务器客户端,并将注册的XMPP服务器客户端数据保存在数据总线(5)中;内存队列管理器(2)用于获取数据总线(5)传输的数据并等待调度器(3)的调用;分发策略库(4)用于存储分发算法;调度器(3)根据分发策略库(4)中的分发算法从内存队列管理器(2)调取数据,进行消息的分发中转。2.根据权利要求1所述的基于分布内存队列的XMPP服务器内存消息中转系统,其特征在于:所述的内存队列管理器(2)包括队列管理器(21)和若干个内存队列(22),队列管理器(21)的输出端与若干个内存队列(22)的输入端相连。3.根据权利要求1所述的基于分布内存队列的XMPP服务器内存消息中转系统,其特征在于:所述数据总线(5)的输出端分别与注册管理模块(1)的输入端和调度器(3)的输入端相连,注册管理模块(1)的输出端与内存队列管理器(2)的输入端相连,内存队列管理器(2)的输出端与调度器(3)的输入端相连,分发策略库(4)的输出端与调度器(3)的输入端相连。4.根据权利要求1所述的基于分布内存队列的XMPP服务器内存消息中转系统,其特征在于:所述的分发策略数据库包括轮转算法、加权轮转算法、最小连接数算法、加权最小连接数算法、目的地址哈希散列算法、源地址哈希散列算法和随机算法。5.根据权利要求2所述的基于分布内存队列的XMPP服务器内存消息中转系统的中转方法,其特征在于,包括以下步骤:51)配置内存队列,进入内存队列管理器(2)管理配置接口,输入内存队列管理器(2)所需相应的ID、IP、CPU、内存、优先级信息,注册后对内存队列(22)进行健康体检,配置接口输出分布式内存列表;52)注册服务器客户端,客户端接入系统,采用发布/订阅模式注册订阅者到数据总线(5)的系统中,数据总线(5)记录客户端相应的信息,数据总线(5)把接入的数据接口返回给客户端;53)内存队列(22)保存消息,客户端根据数据总线(5)返回的接口数据将信息传送给内存队列管理器(2),内存队列管理器(2)将信息分发给内存队列(22);54)消息分发,调度器(3)根据分发策略库(4)中设定的分发策...

【专利技术属性】
技术研发人员:罗贤东刘胜军李晓洁范寅程俊孟虎
申请(专利权)人:合肥城市云数据中心股份有限公司
类型:发明
国别省市:安徽,34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1