CN111031058A - 基于WebSocket的分布式服务器集群交互方法及装置 - Google Patents
基于WebSocket的分布式服务器集群交互方法及装置 Download PDFInfo
- Publication number
- CN111031058A CN111031058A CN201911333815.0A CN201911333815A CN111031058A CN 111031058 A CN111031058 A CN 111031058A CN 201911333815 A CN201911333815 A CN 201911333815A CN 111031058 A CN111031058 A CN 111031058A
- Authority
- CN
- China
- Prior art keywords
- session
- message
- user
- websocket
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Abstract
本申请实施例提供一种基于WebSocket的分布式服务器集群交互方法及装置,方法包括:与客户端建立WebSocket连接,并将对应的标识信息存储至Redis缓存;接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地,并根据判断结果执行对应消息推送操作;本申请能够有效确保每个用户实时、无误的收到服务器推送的消息。
Description
技术领域
本申请涉及数据处理领域,具体涉及一种基于WebSocket的分布式服务器集 群交互方法及装置。
背景技术
随着业务的发展,整个机器学习平台项目越来越复杂,业务量越来越大,单WebSocket服务器在面对并发量很大时压力会很大,而且Session储存在Map中, 内存压力也会很大,单机版已无法满足现有业务要求,而在分布式场景下使用 WebSocket存在单机性能瓶颈问题,单点故障问题,集群模式下分布式会话共享等 问题。
发明内容
针对现有技术中的问题,本申请提供一种基于WebSocket的分布式服务器集 群交互方法及装置,能够有效确保每个用户实时、无误的收到服务器推送的消息。
为了解决上述问题中的至少一个,本申请提供以下技术方案:
第一方面,本申请提供一种基于WebSocket的分布式服务器集群交互方法,包 括:
与客户端建立WebSocket连接,并将对应的标识信息存储至Redis缓存;
接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic消息, 以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根 据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地,并根 据判断结果执行对应消息推送操作。
进一步地,所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
进一步地,所述根据判断结果执行对应消息推送操作,包括:
若存在,则从本地内存中取出对应的session,并将消息发送至该session对应 的客户端;
若不存在,则从Redis缓存中,根据用户id查询该服务器ip及该用户对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服务器。
进一步地,还包括:
配置session调用方法,以接收服务器集群中的另一服务器发送的用户id和session id请求,得到该用户对应的session,并将接收到的Topic信息发送至该 session对应的客户端。
第二方面,本申请提供一种基于WebSocket的分布式服务器集群交互装置,包 括:
Redis存储模块,用于与客户端建立WebSocket连接,并将对应的标识信息存 储至Redis缓存;
消息推送模块,用于接收用户在所述客户端触发的工作指令,并向Redis消息 队列发布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic 消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是 否存在于本地,并根据判断结果执行对应消息推送操作。
进一步地,所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
进一步地,所述消息推送模块包括:
第一推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session存 在于本地,则从本地内存中取出对应的session,并将消息发送至该session对应的 客户端;
第二推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session不 存在于本地,则从Redis缓存中,根据用户id查询该服务器ip及该用户对应的 session id,用HTTP请求发送该用户id、session id和Topic消息至该服务器。
进一步地,还包括:
Session调用单元,用于配置session调用方法,以接收服务器集群中的另一服 务器发送的用户id和session id请求,得到该用户对应的session,并将接收到的Topic信息发送至该session对应的客户端。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上 并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于 WebSocket的分布式服务器集群交互方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该 计算机程序被处理器执行时实现所述的基于WebSocket的分布式服务器集群交互 方法的步骤。
由上述技术方案可知,本申请提供一种基于WebSocket的分布式服务器集群交 互方法及装置,通过与客户端建立WebSocket连接,并将对应的标识信息存储至 Redis缓存;接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic 消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器 能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地, 并根据判断结果执行对应消息推送操作,能够有效确保每个用户实时、无误的收 到服务器推送的消息。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例 或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳 动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中的基于WebSocket的分布式服务器集群交互方法的流 程示意图;
图2为本申请实施例中的基于WebSocket的分布式服务器集群交互装置的结 构图;
图3为本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施 例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描 述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施 例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例,都属于本申请保护的范围。
考虑到随着业务的发展,整个机器学习平台项目越来越复杂,业务量越来越 大,单WebSocket服务器在面对并发量很大时压力会很大,而且Session储存在 Map中,内存压力也会很大,单机版已无法满足现有业务要求,而在分布式场景 下使用WebSocket存在单机性能瓶颈问题,单点故障问题,集群模式下分布式会 话共享的问题,本申请提供一种基于WebSocket的分布式服务器集群交互方法及 装置,通过与客户端建立WebSocket连接,并将对应的标识信息存储至Redis缓存; 接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic消息,以 使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据 所述Topic消息中的标识信息判断该用户对应的session是否存在于本地,并根据 判断结果执行对应消息推送操作,能够有效确保每个用户实时、无误的收到服务 器推送的消息。
为了能够有效确保每个用户实时、无误的收到服务器推送的消息,本申请提 供一种基于WebSocket的分布式服务器集群交互方法的实施例,参见图1,所述基 于WebSocket的分布式服务器集群交互方法具体包含有如下内容:
步骤S101:与客户端建立WebSocket连接,并将对应的标识信息存储至Redis 缓存。
步骤S102:接收用户在所述客户端触发的工作指令,并向Redis消息队列发 布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息 的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存 在于本地,并根据判断结果执行对应消息推送操作。
从上述描述可知,本申请实施例提供的基于WebSocket的分布式服务器集群 交互方法,能够通过与客户端建立WebSocket连接,并将对应的标识信息存储至 Redis缓存;接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic 消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器 能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地, 并根据判断结果执行对应消息推送操作,能够有效确保每个用户实时、无误的收 到服务器推送的消息。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话 共享,在本申请的基于WebSocket的分布式服务器集群交互方法的一实施例中, 还可以具体包含如下内容:
所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话 共享,在本申请的基于WebSocket的分布式服务器集群交互方法的一实施例中, 所述步骤S102还可以具体包含如下内容:
若存在,则从本地内存中取出对应的session,并将消息发送至该session对应 的客户端。
若不存在,则从Redis缓存中,根据用户id查询该服务器ip及该用户对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服务器。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话共享,在本 申请的基于WebSocket的分布式服务器集群交互方法的一实施例中,还可以具体 包含如下内容:
配置session调用方法,以接收服务器集群中的另一服务器发送的用户id和session id请求,得到该用户对应的session,并将接收到的Topic信息发送至该 session对应的客户端。
为了能够有效确保每个用户实时、无误的收到服务器推送的消息,本申请提 供一种用于实现所述基于WebSocket的分布式服务器集群交互方法的全部或部分 内容的基于WebSocket的分布式服务器集群交互装置的实施例,参见图2,所述基 于WebSocket的分布式服务器集群交互装置具体包含有如下内容:
Redis存储模块10,用于与客户端建立WebSocket连接,并将对应的标识信息 存储至Redis缓存。
消息推送模块20,用于接收用户在所述客户端触发的工作指令,并向Redis 消息队列发布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的 Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的 session是否存在于本地,并根据判断结果执行对应消息推送操作。
从上述描述可知,本申请实施例提供的基于WebSocket的分布式服务器集群 交互装置,能够通过与客户端建立WebSocket连接,并将对应的标识信息存储至 Redis缓存;接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic 消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器 能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地, 并根据判断结果执行对应消息推送操作,能够有效确保每个用户实时、无误的收 到服务器推送的消息。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话 共享,在本申请的基于WebSocket的分布式服务器集群交互装置的一实施例中, 还具体包含有如下内容:
所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话 共享,在本申请的基于WebSocket的分布式服务器集群交互装置的一实施例中, 所述消息推送模块20包括:
第一推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的 Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的 session存在于本地,则从本地内存中取出对应的session,并将消息发送至该session 对应的客户端。
第二推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的 Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的 session不存在于本地,则从Redis缓存中,根据用户id查询该服务器ip及该用户 对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服务 器。
为了能够利用Redis的发布订阅机制以及存储功能,基于SpringBoot WebSocket的Session状态管理,以此来实现分布式集群模式下WebSocket的会话 共享,在本申请的基于WebSocket的分布式服务器集群交互装置的一实施例中, 还具体包含有如下内容:
Session调用单元,用于配置session调用方法,以接收服务器集群中的另一服 务器发送的用户id和session id请求,得到该用户对应的session,并将接收到的 Topic信息发送至该session对应的客户端。
为了更进一步说明本方案,本申请还提供一种应用上述基于WebSocket的分 布式服务器集群交互装置实现基于WebSocket的分布式服务器集群交互方法的具 体应用实例,具体包含有如下内容:
步骤1:用户登录系统,进入首页后,浏览器向服务器发起WebSocket连接;
步骤2:建立WebSocket连接时,服务器将用户对应的session存至内存,并 将其用户id、session id以及当前服务器ip进行绑定,放入Redis缓存;
步骤3:用户在浏览器触发运行按钮后,发送指令到Python后端服务,后端 服务计算运行完毕后,向Redis消息队列发布Topic消息;
步骤4:WS服务订阅Redis消息队列的Topic消息,根据消息中用户id判断 该用户对应的session是否存在该服务器;
步骤5:如果存在,直接从内存中取出对应的session,并将消息发送至该session对应的客户端;
步骤5:如果不存在,从Redis缓存中,根据用户id查询该服务器ip及该用 户对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服 务器;
步骤6:写一个调用session方法,接收别的服务器发送过来的用户id和sessionid请求,得到该用户对应的session,并将接收到的Topic信息发送至该session对 应的客户端。
由上述内容可知,本申请至少还可以实现如下技术效果:
1、利用Redis的消息发布订阅机制,降低了业务代码的耦合性;
2、利用Redis的发布订阅变相实现支持分布式WebSocket Session共享,解决 了集群环境下WebSocket的单点故障问题;
3、分布式集群的支持有效缓解了高业务量下的并发压力及单台服务器的内存 压力。
从硬件层面来说,为了能够有效确保每个用户实时、无误的收到服务器推送 的消息,本申请提供一种用于实现所述基于WebSocket的分布式服务器集群交互 方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内 容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信; 所述通信接口用于实现基于WebSocket的分布式服务器集群交互装置与核心业务 系统、用户终端以及相关数据库等相关设备之间的信息传输;该逻辑控制器可以 是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该 逻辑控制器可以参照实施例中的基于WebSocket的分布式服务器集群交互方法的 实施例,以及基于WebSocket的分布式服务器集群交互装置的实施例进行实施, 其内容被合并于此,重复之处不再赘述。
可以理解的是,所述用户终端可以包括智能手机、平板电子设备、网络机顶 盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。 其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,基于WebSocket的分布式服务器集群交互方法的部分可以在 如上述内容所述的电子设备侧执行,也可以所有的操作都在所述客户端设备中完 成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行 选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客 户端设备还可以包括处理器。
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进 行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心 一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调 度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括 单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的 服务器结构。
图3为本申请实施例的电子设备9600的系统构成的示意框图。如图3所示, 该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中 央处理器9100。值得注意的是,该图3是示例性的;还可以使用其他类型的结构, 来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,基于WebSocket的分布式服务器集群交互方法功能可以被集成 到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
步骤S101:与客户端建立WebSocket连接,并将对应的标识信息存储至Redis 缓存。
步骤S102:接收用户在所述客户端触发的工作指令,并向Redis消息队列发 布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息 的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存 在于本地,并根据判断结果执行对应消息推送操作。
从上述描述可知,本申请实施例提供的电子设备,通过与客户端建立 WebSocket连接,并将对应的标识信息存储至Redis缓存;接收用户在所述客户端 触发的工作指令,并向Redis消息队列发布Topic消息,以使服务器集群中的另一 订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标 识信息判断该用户对应的session是否存在于本地,并根据判断结果执行对应消息 推送操作,能够有效确保每个用户实时、无误的收到服务器推送的消息。
在另一个实施方式中,基于WebSocket的分布式服务器集群交互装置可以与 中央处理器9100分开配置,例如可以将基于WebSocket的分布式服务器集群交互 装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于 WebSocket的分布式服务器集群交互方法功能。
如图3所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、 音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并 不是必须要包括图3中所示的所有部件;此外,电子设备9600还可以包括图3中 没有示出的部件,可以参考现有技术。
如图3所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处 理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设 备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性 存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败 有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该 存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或 触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行 图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存 储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息, 可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存 储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有 时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储 部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备 9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据, 例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储 器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行 电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通 信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输 出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110, 如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机) 9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131 提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。 音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处 理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机 上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端 的基于WebSocket的分布式服务器集群交互方法中全部步骤的一种计算机可读存 储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器 执行时实现上述实施例中的执行主体为服务器或客户端的基于WebSocket的分布 式服务器集群交互方法的全部步骤,例如,所述处理器执行所述计算机程序时实 现下述步骤:
步骤S101:与客户端建立WebSocket连接,并将对应的标识信息存储至Redis 缓存。
步骤S102:接收用户在所述客户端触发的工作指令,并向Redis消息队列发 布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息 的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存 在于本地,并根据判断结果执行对应消息推送操作。
从上述描述可知,本申请实施例提供的计算机可读存储介质,通过与客户端 建立WebSocket连接,并将对应的标识信息存储至Redis缓存;接收用户在所述客 户端触发的工作指令,并向Redis消息队列发布Topic消息,以使服务器集群中的 另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中 的标识信息判断该用户对应的session是否存在于本地,并根据判断结果执行对应 消息推送操作,能够有效确保每个用户实时、无误的收到服务器推送的消息。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算 机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软 件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计 算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、 光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的 流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图 中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提 供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程 数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理 设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以 特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令 产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或 方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得 在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从 而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多 个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实 施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的 一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之 处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于WebSocket的分布式服务器集群交互方法,其特征在于,所述方法包括:
与客户端建立WebSocket连接,并将对应的标识信息存储至Redis缓存;
接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地,并根据判断结果执行对应消息推送操作。
2.根据权利要求1所述的基于WebSocket的分布式服务器集群交互方法,其特征在于,所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
3.根据权利要求2所述的基于WebSocket的分布式服务器集群交互方法,其特征在于,所述根据判断结果执行对应消息推送操作,包括:
若存在,则从本地内存中取出对应的session,并将消息发送至该session对应的客户端;
若不存在,则从Redis缓存中,根据用户id查询该服务器ip及该用户对应的sessionid,用HTTP请求发送该用户id、session id和Topic消息至该服务器。
4.根据权利要求2所述的基于WebSocket的分布式服务器集群交互方法,其特征在于,还包括:
配置session调用方法,以接收服务器集群中的另一服务器发送的用户id和sessionid请求,得到该用户对应的session,并将接收到的Topic信息发送至该session对应的客户端。
5.一种基于WebSocket的分布式服务器集群交互装置,其特征在于,包括:
Redis存储模块,用于与客户端建立WebSocket连接,并将对应的标识信息存储至Redis缓存;
消息推送模块,用于接收用户在所述客户端触发的工作指令,并向Redis消息队列发布Topic消息,以使服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session是否存在于本地,并根据判断结果执行对应消息推送操作。
6.根据权利要求5所述的基于WebSocket的分布式服务器集群交互装置,其特征在于,所述标识信息包括用户id、session id及当前服务器ip中的至少一种。
7.根据权利要求2所述的基于WebSocket的分布式服务器集群交互方法,其特征在于,所述消息推送模块包括:
第一推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session存在于本地,则从本地内存中取出对应的session,并将消息发送至该session对应的客户端;
第二推送单元,用于若服务器集群中的另一订阅了所述Redis消息队列的Topic消息的服务器能够根据所述Topic消息中的标识信息判断该用户对应的session不存在于本地,则从Redis缓存中,根据用户id查询该服务器ip及该用户对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服务器。
8.根据权利要求2所述的基于WebSocket的分布式服务器集群交互方法,其特征在于,还包括:
Session调用单元,用于配置session调用方法,以接收服务器集群中的另一服务器发送的用户id和session id请求,得到该用户对应的session,并将接收到的Topic信息发送至该session对应的客户端。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4任一项所述的基于WebSocket的分布式服务器集群交互方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至4任一项所述的基于WebSocket的分布式服务器集群交互方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911333815.0A CN111031058A (zh) | 2019-12-23 | 2019-12-23 | 基于WebSocket的分布式服务器集群交互方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911333815.0A CN111031058A (zh) | 2019-12-23 | 2019-12-23 | 基于WebSocket的分布式服务器集群交互方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111031058A true CN111031058A (zh) | 2020-04-17 |
Family
ID=70212528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911333815.0A Pending CN111031058A (zh) | 2019-12-23 | 2019-12-23 | 基于WebSocket的分布式服务器集群交互方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111031058A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111429699A (zh) * | 2020-04-23 | 2020-07-17 | 四川省有线广播电视网络股份有限公司 | 广电中间件机顶盒低延时地震预警系统及方法 |
CN111787079A (zh) * | 2020-06-19 | 2020-10-16 | 广州市百果园信息技术有限公司 | 基于通信群组的通信方法、装置、服务器、系统及介质 |
CN111953791A (zh) * | 2020-08-17 | 2020-11-17 | 浪潮云信息技术股份公司 | 一种基于webSocket高并发的消息动态同步处理方案 |
CN112291224A (zh) * | 2020-10-23 | 2021-01-29 | 上海淇玥信息技术有限公司 | 一种实时通信的交互方法、装置和电子设备 |
CN112632375A (zh) * | 2020-12-18 | 2021-04-09 | 深圳市和讯华谷信息技术有限公司 | 会话信息处理方法、服务器及存储介质 |
CN112769837A (zh) * | 2021-01-13 | 2021-05-07 | 北京洛塔信息技术有限公司 | 基于WebSocket的通信传输方法、装置、设备、系统及存储介质 |
CN113037834A (zh) * | 2021-03-05 | 2021-06-25 | 中国工商银行股份有限公司 | 基于分布式即时推送的Web页面状态更新方法及装置 |
CN113157466A (zh) * | 2021-04-27 | 2021-07-23 | 上海销氪信息科技有限公司 | 一种消息推送方法、装置、系统、电子设备和存储介质 |
CN113382048A (zh) * | 2021-05-28 | 2021-09-10 | 广东好太太智能家居有限公司 | 一种消息推送方法、系统、设备及存储介质 |
CN113765774A (zh) * | 2020-11-16 | 2021-12-07 | 西安京迅递供应链科技有限公司 | 消息实时同步方法、装置、电子设备及介质 |
CN114039961A (zh) * | 2021-10-08 | 2022-02-11 | 中移(杭州)信息技术有限公司 | 基于WebSocket的消息推送方法、设备、服务器及存储介质 |
CN114189489A (zh) * | 2021-11-11 | 2022-03-15 | 深圳市科脉技术股份有限公司 | 一种消息推送方法、装置、服务器和介质 |
CN115442220A (zh) * | 2022-08-24 | 2022-12-06 | 浪潮云信息技术股份公司 | 基于集群部署下WebSocket Session的共享方法及系统 |
CN115665173A (zh) * | 2022-12-05 | 2023-01-31 | 深圳市华曦达科技股份有限公司 | 一种基于MQ的WebSocket通信方法、系统和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107370663A (zh) * | 2017-07-03 | 2017-11-21 | 中国南方电网有限责任公司 | 一种浏览器即时通讯服务分布式部署方法 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
-
2019
- 2019-12-23 CN CN201911333815.0A patent/CN111031058A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107370663A (zh) * | 2017-07-03 | 2017-11-21 | 中国南方电网有限责任公司 | 一种浏览器即时通讯服务分布式部署方法 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111429699A (zh) * | 2020-04-23 | 2020-07-17 | 四川省有线广播电视网络股份有限公司 | 广电中间件机顶盒低延时地震预警系统及方法 |
CN111787079A (zh) * | 2020-06-19 | 2020-10-16 | 广州市百果园信息技术有限公司 | 基于通信群组的通信方法、装置、服务器、系统及介质 |
CN111787079B (zh) * | 2020-06-19 | 2023-04-07 | 广州市百果园信息技术有限公司 | 基于通信群组的通信方法、装置、服务器、系统及介质 |
CN111953791A (zh) * | 2020-08-17 | 2020-11-17 | 浪潮云信息技术股份公司 | 一种基于webSocket高并发的消息动态同步处理方案 |
CN112291224A (zh) * | 2020-10-23 | 2021-01-29 | 上海淇玥信息技术有限公司 | 一种实时通信的交互方法、装置和电子设备 |
CN112291224B (zh) * | 2020-10-23 | 2023-11-24 | 上海淇玥信息技术有限公司 | 一种实时通信的交互方法、装置和电子设备 |
CN113765774A (zh) * | 2020-11-16 | 2021-12-07 | 西安京迅递供应链科技有限公司 | 消息实时同步方法、装置、电子设备及介质 |
CN112632375A (zh) * | 2020-12-18 | 2021-04-09 | 深圳市和讯华谷信息技术有限公司 | 会话信息处理方法、服务器及存储介质 |
CN112632375B (zh) * | 2020-12-18 | 2023-07-25 | 深圳市和讯华谷信息技术有限公司 | 会话信息处理方法、服务器及存储介质 |
CN112769837A (zh) * | 2021-01-13 | 2021-05-07 | 北京洛塔信息技术有限公司 | 基于WebSocket的通信传输方法、装置、设备、系统及存储介质 |
CN112769837B (zh) * | 2021-01-13 | 2023-07-04 | 北京洛塔信息技术有限公司 | 基于WebSocket的通信传输方法、装置、设备、系统及存储介质 |
CN113037834A (zh) * | 2021-03-05 | 2021-06-25 | 中国工商银行股份有限公司 | 基于分布式即时推送的Web页面状态更新方法及装置 |
CN113157466A (zh) * | 2021-04-27 | 2021-07-23 | 上海销氪信息科技有限公司 | 一种消息推送方法、装置、系统、电子设备和存储介质 |
CN113382048A (zh) * | 2021-05-28 | 2021-09-10 | 广东好太太智能家居有限公司 | 一种消息推送方法、系统、设备及存储介质 |
CN114039961A (zh) * | 2021-10-08 | 2022-02-11 | 中移(杭州)信息技术有限公司 | 基于WebSocket的消息推送方法、设备、服务器及存储介质 |
CN114189489A (zh) * | 2021-11-11 | 2022-03-15 | 深圳市科脉技术股份有限公司 | 一种消息推送方法、装置、服务器和介质 |
CN115442220A (zh) * | 2022-08-24 | 2022-12-06 | 浪潮云信息技术股份公司 | 基于集群部署下WebSocket Session的共享方法及系统 |
CN115665173A (zh) * | 2022-12-05 | 2023-01-31 | 深圳市华曦达科技股份有限公司 | 一种基于MQ的WebSocket通信方法、系统和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111031058A (zh) | 基于WebSocket的分布式服务器集群交互方法及装置 | |
CN110990228A (zh) | 数据接口监控方法及装置 | |
CN110764881A (zh) | 分布式系统后台重试方法及装置 | |
CN113435989A (zh) | 金融数据处理方法及装置 | |
CN111445331A (zh) | 交易撮合方法及装置 | |
CN112689012A (zh) | 跨网络的代理通讯方法及装置 | |
CN111367561B (zh) | 软件程序远程开发方法及装置 | |
CN111338905A (zh) | 应用节点数据处理方法及装置 | |
CN115562898A (zh) | 分布式支付系统异常处理方法及装置 | |
CN115099930A (zh) | 金融业务数据处理方法及装置 | |
CN115914375A (zh) | 分布式消息平台容灾处理方法及装置 | |
CN113014544B (zh) | 基于webRtc无中心媒体链路建立方法及装置 | |
CN115205009A (zh) | 基于虚拟技术的开户业务处理方法及装置 | |
CN114257532A (zh) | 服务端状态探测方法及装置 | |
CN113434423A (zh) | 接口测试方法及装置 | |
CN111782366A (zh) | 一种分布式任务调度方法及装置 | |
CN112559158A (zh) | 微服务定时任务调度方法及装置 | |
CN111818144B (zh) | 远程服务调用框架下的报文传输方法、装置及系统 | |
CN111930624A (zh) | 测试链路报文数据处理方法及装置 | |
CN111510493A (zh) | 分布式数据传输方法及装置 | |
CN115278555A (zh) | 基于5g消息的在线交易方法及装置 | |
CN115208875B (zh) | 多传输中间件的信息集成系统 | |
CN113342501B (zh) | 系统故障处理方法及装置 | |
CN113760683B (zh) | 日志采集方法及装置 | |
CN112968954B (zh) | 一种服务迁移的流量控制方法、服务器及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200417 |