一种分布式高并发的实时消息推送方法及装置制造方法及图纸

技术编号:21006815 阅读:13 留言:0更新日期:2019-04-30 22:13
本发明专利技术公开一种分布式高并发的实时消息推送方法及装置,其中,所述方法包括:获取客户端发送的消息推送请求;向zookeeper注册一个节点,所述节点保留服务器ip地址与监听端口;根据所述消息推送请求的房间号,在redis中查询缓存;若redis中查询不到对应的缓存数据,则通过zookeeper分配一个节点;将所述节点信息缓存到redis,并返回所述节点的服务器ip地址到客户端;客户端根据服务器ip地址与服务端建立连接,推送消息内容。本发明专利技术的技术方案主要采用redis建立缓存,减少系统响应时间,使用zookeeper保存节点信息,提供高可用和能动态扩展的服务。

【技术实现步骤摘要】
一种分布式高并发的实时消息推送方法及装置
本专利技术涉及消息推送技术,尤其涉及一种分布式高并发的实时消息推送方法及装置。
技术介绍
随着Web应用的不断发展,人们生活、娱乐及交流等方式的改变,在互联网网页上发送实时消息的需求也越来越多,如:图文直播,网页实时聊天等。这些功能的实现都需要用到实时消息发送技术,但是随着用户量的不断增加,常见的开源聊天技术都是单机版无法提供集群服务,这种消息发送系统已经无法支持大规模的实时推送需求。现有的网页聊天技术采用基于netty-socketio的web推送消息技术、WebSocket技术等。WebSocket技术是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术,但是由于目前还未全面普及,浏览器兼容性不强。netty-socketio是一个开源的Socket.io服务器端的一个java的实现,它基于Netty框架。但是无论现在哪种开源的实时聊天技术都只能提供单机版服务,没有提供集群服务,无法满足高可用与高并发的情况。实时发送消息系统搭建的瓶颈在于,每台服务器能够建立的最大连接数有限,一旦达到了系统的最大层次就无法建立新的连接。有鉴于此,有必要提出对目前的消息推送技术进行进一步的改进。
技术实现思路
为了改进传统开源单机版本的网页实时消息推送技术,本专利技术的主要目的是提供一种分布式高并发的实时消息推送方法及装置。为实现上述目的,本专利技术采用的一个技术方案为:提供一种分布式高并发的实时消息推送方法,适于在计算设备中执行,所述分布式高并发的实时消息推送方法包括如下步骤:S10、获取客户端发送的消息推送请求;S20、向zookeeper注册一个节点,所述节点保留服务器ip地址与监听端口;S30、根据所述消息推送请求的房间号,在redis中查询缓存;S50、若redis中查询不到对应的缓存数据,则通过zookeeper分配一个节点;S60、将所述节点信息缓存到redis,并返回所述节点的服务器ip地址到客户端;S70、客户端根据服务器ip地址与服务端建立连接,推送消息内容。在一具体实施例中,所述步骤S30之后,还包括:S40、若redis中查询到对应的缓存数据,则将查询结果返回给客户端,客户端根据所述查询结果与服务器建立连接,推送消息内容。在一具体的实施例中,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,则使用随机函数随机生成一个数字,zookeeper根据生成的数字调用对应的服务器。在一具体的实施例中,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,zookeeper根据每个服务器的连接数,选择调用连接数低的服务器。在一具体的实施例中,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,zookeeper根据每台服务器的响应时间,选择调用响应时间短的服务器。为实现上述目的,本专利技术采用的另一个技术方案为:提供一种分布式高并发的实时消息推送装置,所述分布式高并发的实时消息推送装置包括:请求获取模块,用于获取客户端发送的消息推送请求;注册模块,用于向zookeeper注册一个节点,所述节点保留服务器ip地址与监听端口;查询模块,用于根据所述消息推送请求的房间号,在redis中查询缓存;分配节点模块,用于若redis中查询不到对应的缓存数据,则通过zookeeper分配一个节点;缓存模块,用于将所述节点信息缓存到redis,并返回所述节点的服务器ip地址到客户端;推送消息模块,用于客户端根据服务器ip地址与服务端建立连接,推送消息内容。在一具体实施例中,所述分布式高并发的实时消息推送装置还包括:查询返回模块,用于若redis中查询到对应的缓存数据,则将查询结果返回给客户端,客户端根据所述查询结果与服务器建立连接,推送消息内容。在一具体实施例中,所述的分配节点模块具体用于:若redis中查询不到对应的缓存数据,则使用随机函数随机生成一个数字,zookeeper根据生成的数字调用对应的服务器。在一具体实施例中,所述的分配节点模块具体用于:若redis中查询不到对应的缓存数据,zookeeper根据每个服务器的连接数,选择调用连接数低的服务器。在一具体实施例中,所述的分配节点模块具体用于:若redis中查询不到对应的缓存数据,zookeeper根据每台服务器的响应时间,选择调用响应时间短的服务器。本专利技术的技术方案主要采用redis建立缓存,减少系统响应时间;使用zookeeper保存节点信息,提供高可用和能动态扩展的服务。实现了高可用性,能支持更多的在线并发聊天人数,此外,还能够实现动态扩容,当现有服务器不能满足业务需求时,可以动态地添加服务器提升系统处理能力和性能,而不影响现有的业务运行。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。图1为本专利技术总体构思方框图;图2为本专利技术一实施例的一种分布式高并发的实时消息推送方法的方法流程图;图3为本专利技术另一实施例的一种分布式高并发的实时消息推送方法的方法流程图;图4为本专利技术一实施例的一种分布式高并发的实时消息推送方法模块方框图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。需要说明,本专利技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本专利技术要求的保护范围之内。为了说明清楚本专利技术的方案,首先简要说明本专利技术的思路。参考图1,netty-socketio是一个开源的Socket.io服务器端的一个java的实现,它基于Netty框架。目前,实时聊天技术都只能提供单机版服务,没有提供集群服务,无法满足高可用与高并发的情况。实时发送消息系统搭建的瓶颈在于,每台服务器能够建立的最大连接数有限,一旦达到了系统的最大层次就无法建立新的连接。本专利技术是在netty-socketio的基础上进行改进,zookeeper负载均衡、redis提供缓存,把netty-socketio打造成一个高可用、高并发的技术框架。使用多台服务器同时提供消息发送服务,这样解决了单台服务器连接数有限的情况下,无法建立更多的连接的系统瓶颈问题。具体的实施例描述如下。请参照图2,在本专利技术实施例中,该分布式高并发的实时消息推送方法,适于在计算设备中执行,所述分布式高并发的实时消息推送方法包括如下步骤:S10、获取客本文档来自技高网...

【技术保护点】
1.一种分布式高并发的实时消息推送方法,适于在计算设备中执行,其特征在于,所述分布式高并发的实时消息推送方法包括如下步骤:S10、获取客户端发送的消息推送请求;S20、向zookeeper注册一个节点,所述节点保留服务器ip地址与监听端口;S30、根据所述消息推送请求的房间号,在redis中查询缓存;S50、若redis中查询不到对应的缓存数据,则通过zookeeper分配一个节点;S60、将所述节点信息缓存到redis,并返回所述节点的服务器ip地址到客户端;S70、客户端根据服务器ip地址与服务端建立连接,推送消息内容。

【技术特征摘要】
1.一种分布式高并发的实时消息推送方法,适于在计算设备中执行,其特征在于,所述分布式高并发的实时消息推送方法包括如下步骤:S10、获取客户端发送的消息推送请求;S20、向zookeeper注册一个节点,所述节点保留服务器ip地址与监听端口;S30、根据所述消息推送请求的房间号,在redis中查询缓存;S50、若redis中查询不到对应的缓存数据,则通过zookeeper分配一个节点;S60、将所述节点信息缓存到redis,并返回所述节点的服务器ip地址到客户端;S70、客户端根据服务器ip地址与服务端建立连接,推送消息内容。2.如权利要求1所述的一种分布式高并发的实时消息推送方法,其特征在于,所述步骤S30之后,还包括:S40、若redis中查询到对应的缓存数据,则将查询结果返回给客户端,客户端根据所述查询结果与服务器建立连接,推送消息内容。3.如权利要求2所述的一种分布式高并发的实时消息推送方法,其特征在于,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,则使用随机函数随机生成一个数字,zookeeper根据生成的数字调用对应的服务器。4.如权利要求2所述的一种分布式高并发的实时消息推送方法,其特征在于,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,zookeeper根据每个服务器的连接数,选择调用连接数低的服务器。5.如权利要求2所述的一种分布式高并发的实时消息推送方法,其特征在于,所述步骤S50具体包括:若redis中查询不到对应的缓存数据,zookeeper根据每台服务器的响应时间,选择调用响应时间短的服务器。6.一种分布式高并发的实时消...

【专利技术属性】
技术研发人员:赵善浮项为平邱小宁彭优利俊杰陈育嘉赵雁峰刘福
申请(专利权)人:广东亿迅科技有限公司
类型:发明
国别省市:广东,44

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

1