一种基于redis发布订阅实现socket集群的方法技术

技术编号:38910191 阅读:12 留言:0更新日期:2023-09-25 09:27
本发明专利技术公开了一种基于redis发布订阅实现socket集群的方法,包括1.多节点socket server发送指令流程,包括如下步骤:每台云手机启动后与socket server节点保持长连接;每个socket server节点都订阅redis中间件的相同channel;web端发起http请求对云手机3进行应用安装;本发明专利技术提供的一种基于redis发布订阅实现socket集群的方法具有实现socket集群,且集群支持无限扩容的优点。且集群支持无限扩容的优点。且集群支持无限扩容的优点。

【技术实现步骤摘要】
一种基于redis发布订阅实现socket集群的方法


[0001]本专利技术涉及云服务器领域,尤其涉及一种基于redis发布订阅实现socket集群的方法。

技术介绍

[0002]云手机是依托云服务器在云端建立的安卓手机系统,具有高性能低功耗的特点,不占本地存储空间,无惧断网断电,24小时不间断运行,能够实现应用安装卸载、启动关闭等群控功能,还具有IP/GPS切换、深度改机、分组等功能,可以应用于零信任移动办公、移动游戏、网络舆情处理等多个领域。
[0003]每台云手机都由中心机房来统一管理,而管理使用到的技术手段为“socket长连接”。每台云手机都会与中心机房保持一个长连接,中心机房通过长连接下发指令给云手机,从而控制云手机的各种行为。随着云手机的数量越来越多,需要建立的长连接也越来越多,对于单节点的中心机房来说,碍于内存、cpu、文件句柄等因数,可建立的长连接是有限的,无法满足巨量的连接请求,Socket集群势在必行。http协议是无状态的,每次请求都可以负载均衡到不同的服务器节点,然而tcp协议是有状态的,一旦tcp客户端与tcp服务端建立socket连接后,该连接会一直维持在当前服务器节点,直到连接断开。通常在http接口调用时,所需要的长连接极有可能并不在当前节点上,所以难点就在于如何将消息转发到长连接所在的节点上。
[0004]单节点socket服务器,所有连接都在当前服务器,不存在消息发送跨服务器节点的问题。请参阅图1,单节点socket server建立连接流程如图1所示:云手机socket客户端发起建立长连接的请求,Gateway网关接受请求并转发到socket服务端,云手机socket客户端与socket服务端保持长连接。
[0005]单节点socket server发送指令流程如图2所示:web端发送安装应用请求,Gateway网关接受请求并转发到中心机房的socket server,socket sever直接从本地连接池查找连接,通过长连接给云手机发送指令。
[0006]单节点socket server尝试多节点部署发送指令流程如图3所示:每台云手机启动后与socket server节点保持长连接,web端发起http请求对云手机3进行应用安装,gateway将请求路由到任意一个socket server节点,假定路由到socket server1节点,当前节点没有保持云手机3的长连接,所以无法直接发送消息,该多节点模式只能给与当前socket server1节点保持长连接的手机发送消息,也就是说只能给云手机1发送消息,所以此模式无法实现socket集群,不支持多节点部署。
[0007]因此,单节点socket服务器的缺点:单节点的中心机房可接受的连接数有上限,无法进行扩展,无法满足海量云手机的连接需求。

技术实现思路

[0008]本专利技术提供了一种基于redis发布订阅实现socket集群的方法,具备实现socket
集群,且集群支持无限扩容的优点,解决了现有技术中存在的单节点socket server连接数有限的问题。
[0009]根据本申请实施例提供的一种基于redis发布订阅实现socket集群的方法,包括多节点socket server发送指令流程,包括如下步骤:
[0010]每台云手机启动后与socket server节点保持长连接;
[0011]每个socket server节点都订阅redis中间件的相同channel;
[0012]web端发起http请求对云手机3进行应用安装;
[0013]gateway将请求路由到任意一个socket server节点,假定路由到socket server1节点,当前节点没有保持云手机3的长连接,所以无法直接发送消息;
[0014]socket server1节点往订阅的channel发布消息;
[0015]所有订阅channel的socket server节点会收到所述消息,socket server3节点自然也收到所述消息;
[0016]socket erver3节点给云手机3发送消息。
[0017]优选地,多个云手机的socket客户端经过gateway路由后,会与socket server集群中的任意一个节点保持长连接,客户端的长连接被平均分配到服务端的每个节点。
[0018]优选地,多节点socket集群服务器,接受http请求的服务器节点和需要查找的socket连接所在的服务器节点并不是同一个,需要通过将请求转发到socket连接所在的服务器节点。
[0019]本申请实施例提供的技术方案可以包括以下有益效果:
[0020]本专利技术提供一种基于redis发布订阅实现socket集群的方法,通过简单的引入redis发布订阅模式,实现了socket连接即使不在当前节点也能实现消息发送,解决了单节点socket server连接数有限的问题,可以实现socket集群,且集群支持无限扩容。
附图说明
[0021]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1为本专利技术现有技术中单节点socket server建立连接流程示意图;
[0023]图2为本专利技术现有技术中单节点socket server发送指令流程示意图;
[0024]图3为本专利技术现有技术中单节点socket server尝试多节点部署发送指令流程示意图;
[0025]图4为本专利技术多节点socket server建立连接流程示意图;
[0026]图5为本专利技术多节点socket server发送指令流程示意图。
具体实施方式
[0027]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0028]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0029]还应当进一步理解,在本专利技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0030]缩略语和关键术语定义
[0031]Client:Socket客户端
[0032]Server:Socket服务端
[0033]Redis中间件:发布订本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于redis发布订阅实现socket集群的方法,其特征在于,包括多节点socket server发送指令流程,包括如下步骤:每台云手机启动后与socket server节点保持长连接;每个socket server节点都订阅redis中间件的相同channel;web端发起http请求对云手机3进行应用安装;gateway将请求路由到任意一个socket server节点,假定路由到socket server1节点,当前节点没有保持云手机3的长连接,所以无法直接发送消息;socket server1节点往订阅的channel发布消息;所有订阅channel的socket server节点会收到所述消息,so...

【专利技术属性】
技术研发人员:陈安兵林涛睿邹想中王优
申请(专利权)人:深圳市瑞驰信息技术有限公司
类型:发明
国别省市:

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

1