CN118101756A - 分布式服务器的消息推送方法、系统、设备及存储介质 - Google Patents
分布式服务器的消息推送方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN118101756A CN118101756A CN202410342147.2A CN202410342147A CN118101756A CN 118101756 A CN118101756 A CN 118101756A CN 202410342147 A CN202410342147 A CN 202410342147A CN 118101756 A CN118101756 A CN 118101756A
- Authority
- CN
- China
- Prior art keywords
- data
- update
- sse
- distributed server
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 7
- 230000008859 change Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种分布式服务器的消息推送方法、系统、设备及存储介质,该方法包括:客户端获取用户信息,根据用户信息与分布式服务器建立SSE连接;客户端向分布式服务器发送业务请求,分布式服务器进行数据更新,获得更新数据;分布式服务器将更新数据封装成更新信息对象,并发送数据更新消息进行广播;分布式服务器接收数据更新消息,并将数据更新消息进行解析获得SSE更新信息,并发送SSE更新信息;客户端接收SSE更新信息,并根据SSE更新消息更新相应的事件数据。本发明有效解决了分布式服务中负载均衡后的SSE连接全量推送问题,避免在请求路由中添加无效信息,实现了数据变更的实时推送,简化了客户端和服务端的开发工作。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种分布式服务器的消息推送方法、系统、设备及存储介质。
背景技术
随着互联网的发展,人们从互联网络上获取信息已经成为日常生活中不可或缺的一部分,而为了更好的为用户提供消息,向用户推送消息逐渐成为越来越重要的方式。服务器消息推送网络软件技术中的一个重要环节,这种技术要求客户端和服务器端的信息能够实时同步,使得客户端能够以最小的延迟获取到服务器的最新变化,同时也要尽量减轻服务器的负载。
现有的消息推送方式主要包括短连接轮询、WebSocket和SSE。其中短连接轮询通过递归的方法,不断地向服务器发送请求,获取最新的消息。WebSocket是一种全新的协议,通过在Web页面上建立一个持久的双向通信通道,可以实现复杂的数据交互。SSE(Server-Sent Event)是一种轻量级的技术,它可以让服务端主动向客户端推送消息,对服务器端的改动较小,内置了断线重连和消息追踪的功能,适用于服务端数据更新频繁、低延迟的场景。但是SSE服务端推送的缺点是路由无状态会导致负载均衡问题,SSE连接分布在多个服务端中,数据更新后无法获取所有SSE连接并通知,因此分布式服务在触发服务端推送事件时需要将消息在集群中广播进而通知到所有客户端。
为了解决SSE服务端推送导致的负载均衡问题,相关技术人员采用基于SSE结合路由状态信息实现服务端推送,但是该方式在路由信息中添加无效信息,与此同时为避免状态信息丢失需要通过数据库记录SSE的状态信息,引入数据库和状态信息的维护方案较为复杂,开发实现工作量大,并且复用能力较差。
发明内容
鉴于现有技术的上述不足,本发明提供一种分布式服务器的消息推送方法、系统、设备及存储介质,有效解决采用基于SSE结合路由状态信息实现服务端推送的方法需要在路由信息中添加无效信息,开发实现工作量大,并且复用能力较差的问题。
第一方面,本发明提供一种分布式服务器的消息推送方法,所述方法包括:
客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
所述客户端向所述分布式服务器发送业务请求,所述分布式服务器接收所述业务请求进行数据更新,获得更新数据;
所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播;
所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息;
所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据。
进一步的,所述客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接,包括:
所述客户端获取用户ID和用户权限列表;
所述客户端根据所述用户ID和服务器ID组成SSE连接标识,并发送SSE连接请求;
所述分布式服务器接收所述SSE连接请求,根据所述SSE连接标识与所述客户端建立SSE连接,并创建SSE连接对象进行存储。
进一步的,所述客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接,还包括:
所述分布式服务器记录所述SSE连接对象的创建时间,并设定超时时间;
当所述SSE连接的持续时间达到所述超时时间,所述分布式服务器关闭所述SSE连接并发送关闭连接通知;
所述客户端接收所述关闭连接通知,根据当前的状态信息重新向所述分布式服务器发送SSE连接请求。
进一步的,所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播,包括:
所述分布式服务器获取所述更新数据对应的事件类型和当前时间戳,分别建立更新事件类型字段和更新时间字段;
将所述更新数据序列化获得更新数据json字符串,根据所述更新数据json字符串建立数据负载字段;
根据所述更新事件类型字段、所述更新时间字段和所述数据负载字段组成更新信息对象,并将所述更新信息对象序列化获得更新信息json字符串;
调用Kafka客户端将所述更新信息json字符串发送至Kafka服务端,所述Kafka服务端发送所述数据更新消息在分布式服务器进行广播。
进一步的,所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息,包括:
所述分布式服务器的所有服务器通过服务器ID作为唯一标识监听所述Kafka服务端,接收所述数据更新消息;
将所述更新信息json字符串反序列化获得所述更新信息对象;
将所述更新信息对象的所述更新事件类型字段和所述数据负载字段组成SSE更新信息;
将所述SSE更新信息通过所述SSE连接发送至所述客户端。
进一步的,所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息,还包括:
将接收所述数据更新消息的第一时间和建立SSE连接的第二时间进行对比,若所述第一时间早于所述第二时间,则不向所述客户端发送所述SSE更新信息。
进一步的,所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据,包括:
所述客户端根据所述更新事件类型字段注册监听器,所述监听器接收所述SSE更新信息;
将所述更新数据json字符串反序列化获得所述更新数据,根据所述更新数据进行数据内容更新。
第二方面,本发明提供一种分布式服务器的消息推送系统,所述系统包括:
连接建立模块,用于客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
数据获取模块,用于所述客户端向所述分布式服务器发送业务请求,所述分布式服务器接收所述业务请求进行数据更新,获得更新数据;
数据处理模块,用于所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播;
数据推送模块,用于所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息;
数据更新模块,用于所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序实现如本发明第一方面所述分布式服务器的消息推送方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述分布式服务器的消息推送方法的步骤。
本发明提供的分布式服务器的消息推送方法,通过支持分布式监听的消息队列进行分布式监听,有效解决了分布式服务中负载均衡后的SSE连接全量推送问题,避免在请求路由中添加无效信息;同时每次请求SSE连接的维持时间可以自行调整,避免了客户端频繁轮询,并且实现了数据变更的实时推送;采用通用的消息推送机制,简化了客户端和服务端的开发工作。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的分布式服务器的消息推送方法流程第一示意图;
图2是本发明实施例提供的分布式服务器的消息推送方法流程第二示意图;
图3是本发明实施例提供的分布式服务器的消息推送方法流程第三示意图;
图4是本发明实施例提供的分布式服务器的消息推送方法流程第四示意图;
图5是本发明实施例提供的分布式服务器的消息推送系统结构示意图;
图6是本发明实施例提供的一种电子设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案作进一步清楚、完整地描述。需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本发明说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
SSE(Server-Sent Event)是一种轻量级的技术,它可以让服务端主动向客户端推送消息,对服务器端的改动较小,内置了断线重连和消息追踪的功能,适用于服务端数据更新频繁、低延迟的场景。为了解决SSE服务端推送导致的负载均衡问题,相关技术人员采用基于SSE结合路由状态信息实现服务端推送,但是该方式在路由信息中添加无效信息,与此同时为避免状态信息丢失需要通过数据库记录SSE的状态信息,引入数据库和状态信息的维护方案较为复杂,开发实现工作量大,并且复用能力较差。
本发明实施例提供一种分布式服务器的消息推送方法,有效解决上述采用基于SSE结合路由状态信息实现服务端推送方法导致的问题。图1是本发明实施例提供的分布式服务器的消息推送方法流程第一示意图,如图1所示,该方法包括以下步骤:
S100、客户端获取用户信息,根据用户信息与分布式服务器建立SSE连接。
在本发明实施例中,客户端可以是智能手机(如Android手机、iOS手机、WindowsPhone手机等)、平板电脑、移动互联网设备(Mobile Internet Devices,MID)、计算机等终端。图2是本发明实施例提供的分布式服务器的消息推送方法流程第二示意图,如图2所示,步骤S100具体包括如下步骤:
S110、客户端获取用户ID和用户权限列表;
首先客户端获取用户信息,该用户信息至少包括用户ID和用户权限列表,其中用户ID是用户登录时返回客户端的唯一标识。
S120、客户端根据用户ID和服务器ID组成SSE连接标识,并发送SSE连接请求;
服务器ID是服务发布时随机生成的字符串,分布式服务器中各个服务器的服务器ID是不同的。客户端根据用户ID和服务器ID组成SSE连接标识,同时发送SSE连接请求信号。
S130、分布式服务器接收SSE连接请求,根据SSE连接标识与客户端建立SSE连接,并创建SSE连接对象进行存储;
分布式服务器接收到SSE连接请求信号后,根据SSE连接标识经过负载均衡连接到分布式服务器,客户端等待接收分布式服务器推送的消息。
S140、分布式服务器记录SSE连接对象的创建时间,并设定超时时间;
分布式服务器在创建SSE连接对象时,同时记录其创建时间,并设定一个超时时间,在本发明实施例中超时时间设置为1小时,该超时时间可根据实际情况进行调整。
S150、当SSE连接的持续时间达到超时时间,分布式服务器关闭SSE连接并发送关闭连接通知;
当SSE连接的持续时间达到超时时间时,分布式服务器主动关闭该连接,并等待客户端发起新的SSE连接请求。
S160、客户端接收关闭连接通知,根据当前的状态信息重新向分布式服务器发送SSE连接请求;
当客户端收到分布式服务器的关闭连接的通知后,根据当前的最新状态信息,重新向分布式服务器发送SSE连接请求,分布式服务器在接收到SSE连接请求后重新建立SSE连接,并重复上述步骤。
S200、客户端向分布式服务器发送业务请求,分布式服务器接收业务请求进行数据更新,获得更新数据。
S300、分布式服务器将更新数据封装成更新信息对象,并发送数据更新消息进行广播。
分布式服务器进行数据更新后,将更新数据封装成统一结构后发送Kafka消息在分布式服务器进行广播,图3是本发明实施例提供的分布式服务器的消息推送方法流程第三示意图,如图3所示,步骤S300具体包括如下步骤:
S310、分布式服务器获取更新数据对应的事件类型和当前时间戳,分别建立更新事件类型字段和更新时间字段。
封装更新数据时,将更新数据对应的事件类型填充到更新事件类型字段,将当前时间戳填充更新时间字段。
S320、将更新数据序列化获得更新数据json字符串,根据更新数据json字符串建立数据负载字段。
S330、根据更新事件类型字段、更新时间字段和数据负载字段组成更新信息对象,并将更新信息对象序列化获得更新信息json字符串。
S340、调用Kafka客户端将更新信息json字符串发送至Kafka服务端,Kafka服务端发送数据更新消息在分布式服务器进行广播。
调用Kafka生产者客户端的sendMessage发送方法将更新信息json字符串发送到Kafka服务端的Kafka Server。
S400、分布式服务器接收数据更新消息,并对数据更新消息进行解析获得SSE更新信息,并发送SSE更新信息。
图4是本发明实施例提供的分布式服务器的消息推送方法流程第四示意图,如图4所示,步骤S400具体包括如下步骤:
S410、分布式服务器的所有服务器通过服务器ID作为唯一标识监听Kafka服务端,接收数据更新消息。
在本发明实施例中,分布式服务器的所有服务器将服务端ID作为唯一标识监听Kafka服务端的数据更新消息。
S420、将更新信息json字符串反序列化获得更新信息对象。
S430、将更新信息对象的所述更新事件类型字段和所述数据负载字段组成SSE更新信息。
S440、将SSE更新信息通过SSE连接发送至客户端。
作为本发明实施例一种优选的实施方式,将接收数据更新消息的第一时间和建立SSE连接的第二时间进行对比,若第一时间早于第二时间,则不向客户端发送所述SSE更新信息。具体的,分布式服务器将更新信息对象中的更新时间字段与SSE连接的创建时间比较,找出所有创建时间早于消息更新时间的连接,调用SSE的send方法,将更新事件类型字段和数据负载字段通过每个服务器内存中的SSE连接发送到客户端。
S500、客户端接收SSE更新信息,并根据SSE更新消息更新相应的事件数据。
客户端针对每个更新事件类型字段都注册了对应的监听器,监听器通过onmessage方法接收SSE更新信息。同时将接受到的数据负载字段,即更新数据json字符串反序列化为更新数据,最后将当前页面展示数据替换为更新数据,根据更新数据进行客户端的内容数据更新。
在本发明实施例的另一方面,基于相同的技术构思,还提供一种分布式服务器的消息推送系统,图5是本发明实施例提供的分布式服务器的消息推送系统结构示意图,如图5所示,该分布式服务器的消息推送系统500包括:
连接建立模块510,用于客户端获取用户信息,根据用户信息与分布式服务器建立SSE连接;
数据获取模块520,用于客户端向分布式服务器发送业务请求,分布式服务器接收所述业务请求进行数据更新,获得更新数据;
数据处理模块530,用于分布式服务器将更新数据封装成更新信息对象,并发送数据更新消息进行广播;
数据推送模块540,用于分布式服务器接收数据更新消息,并对数据更新消息进行解析获得SSE更新信息,并发送SSE更新信息;
数据更新模块550,用于客户端接收SSE更新信息,并根据SSE更新消息更新相应的事件数据。
基于相同的构思,本发明实施例还提供一种电子设备,图6是本发明实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如上述各实施例所述分布式服务器的消息推送方法的步骤。例如包括:
S100、客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
S200、客户端向分布式服务器发送业务请求,分布式服务器接收业务请求进行数据更新,获得更新数据;
S300、分布式服务器将更新数据封装成更新信息对象,并发送数据更新消息进行广播;
S400、分布式服务器接收数据更新消息,并对数据更新消息进行解析获得SSE更新信息,并发送SSE更新信息;
S500、客户端接收SSE更新信息,并根据SSE更新消息更新相应的事件数据。
其中,处理器610可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
存储器630可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
基于相同的构思,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由主控设备执行,以控制主控设备用以实现如上述各实施例所述分布式服务器的消息推送方法的步骤。例如包括:
S100、客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
S200、客户端向分布式服务器发送业务请求,分布式服务器接收业务请求进行数据更新,获得更新数据;
S300、分布式服务器将更新数据封装成更新信息对象,并发送数据更新消息进行广播;
S400、分布式服务器接收数据更新消息,并对数据更新消息进行解析获得SSE更新信息,并发送SSE更新信息;
S500、客户端接收SSE更新信息,并根据SSE更新消息更新相应的事件数据。
基于相同的技术构思,本发明实施例还提供一种计算机程序,当该计算机程序被主控设备执行时,用以实现上述方法实施例。
所述计算机程序可以全部或者部分存储在与处理器封装在一起的计算机可读存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
基于相同的技术构思,本发明实施例还提供一种处理器,该处理器用以实现上述方法实施例。上述处理器可以为芯片。
综上所述,本发明提供的分布式服务器的消息推送方法、系统、设备及存储介质,通过支持分布式监听的消息队列的能力进行分布式监听,有效解决了分布式服务中负载均衡后的SSE连接全量推送问题,避免在请求路由中添加无效信息;同时每次请求SSE连接的维持时间可以自行调整,避免了客户端频繁轮询,并且实现了数据变更的实时推送;采用通用的消息推送机制,简化了客户端和服务端的开发工作。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种分布式服务器的消息推送方法,其特征在于,所述方法包括:
客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
所述客户端向所述分布式服务器发送业务请求,所述分布式服务器接收所述业务请求进行数据更新,获得更新数据;
所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播;
所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息;
所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据。
2.根据权利要求1所述的分布式服务器的消息推送方法,其特征在于,所述客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接,包括:
所述客户端获取用户ID和用户权限列表;
所述客户端根据所述用户ID和服务器ID组成SSE连接标识,并发送SSE连接请求;
所述分布式服务器接收所述SSE连接请求,根据所述SSE连接标识与所述客户端建立SSE连接,并创建SSE连接对象进行存储。
3.根据权利要求2所述的分布式服务器的消息推送方法,其特征在于,所述客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接,还包括:
所述分布式服务器记录所述SSE连接对象的创建时间,并设定超时时间;
当所述SSE连接的持续时间达到所述超时时间,所述分布式服务器关闭所述SSE连接并发送关闭连接通知;
所述客户端接收所述关闭连接通知,根据当前的状态信息重新向所述分布式服务器发送SSE连接请求。
4.根据权利要求1所述的分布式服务器的消息推送方法,其特征在于,所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播,包括:
所述分布式服务器获取所述更新数据对应的事件类型和当前时间戳,分别建立更新事件类型字段和更新时间字段;
将所述更新数据序列化获得更新数据json字符串,根据所述更新数据json字符串建立数据负载字段;
根据所述更新事件类型字段、所述更新时间字段和所述数据负载字段组成更新信息对象,并将所述更新信息对象序列化获得更新信息json字符串;
调用Kafka客户端将所述更新信息json字符串发送至Kafka服务端,所述Kafka服务端发送所述数据更新消息在分布式服务器进行广播。
5.根据权利要求4所述的分布式服务器的消息推送方法,其特征在于,所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息,包括:
所述分布式服务器的所有服务器通过服务器ID作为唯一标识监听所述Kafka服务端,接收所述数据更新消息;
将所述更新信息json字符串反序列化获得所述更新信息对象;
将所述更新信息对象的所述更新事件类型字段和所述数据负载字段组成SSE更新信息;
将所述SSE更新信息通过所述SSE连接发送至所述客户端。
6.根据权利要求5所述的分布式服务器的消息推送方法,其特征在于,所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息,还包括:
将接收所述数据更新消息的第一时间和建立SSE连接的第二时间进行对比,若所述第一时间早于所述第二时间,则不向所述客户端发送所述SSE更新信息。
7.根据权利要求5所述的分布式服务器的消息推送方法,其特征在于,所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据,包括:
所述客户端根据所述更新事件类型字段注册监听器,所述监听器接收所述SSE更新信息;
将所述更新数据json字符串反序列化获得所述更新数据,根据所述更新数据进行数据内容更新。
8.一种分布式服务器的消息推送系统,其特征在于,所述系统包括:
连接建立模块,用于客户端获取用户信息,根据所述用户信息与分布式服务器建立SSE连接;
数据获取模块,用于所述客户端向所述分布式服务器发送业务请求,所述分布式服务器接收所述业务请求进行数据更新,获得更新数据;
数据处理模块,用于所述分布式服务器将所述更新数据封装成更新信息对象,并发送数据更新消息进行广播;
数据推送模块,用于所述分布式服务器接收所述数据更新消息,并对所述数据更新消息进行解析获得SSE更新信息,并发送所述SSE更新信息;
数据更新模块,用于所述客户端接收所述SSE更新信息,并根据所述SSE更新消息更新相应的事件数据。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序实现如权利要求1至7任一项所述分布式服务器的消息推送方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述分布式服务器的消息推送方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410342147.2A CN118101756A (zh) | 2024-03-25 | 2024-03-25 | 分布式服务器的消息推送方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410342147.2A CN118101756A (zh) | 2024-03-25 | 2024-03-25 | 分布式服务器的消息推送方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118101756A true CN118101756A (zh) | 2024-05-28 |
Family
ID=91164840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410342147.2A Pending CN118101756A (zh) | 2024-03-25 | 2024-03-25 | 分布式服务器的消息推送方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118101756A (zh) |
-
2024
- 2024-03-25 CN CN202410342147.2A patent/CN118101756A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9578081B2 (en) | System and method for providing an actively invalidated client-side network resource cache | |
CN110417915B (zh) | 一种推送消息传输方法、装置、存储介质及电子设备 | |
US8799400B2 (en) | System and method for managing multiple queues of non-persistent messages in a networked environment | |
WO2004095806A3 (en) | A data access, replication or communication system comprising a distributed software application | |
CN109391661B (zh) | 物联网终端的区块链组网方法和系统 | |
CN112738548B (zh) | 一种流媒体调度方法、装置、设备及存储介质 | |
CN111541555A (zh) | 群聊优化方法及相关产品 | |
WO2017004990A1 (zh) | 消息推送方法及装置 | |
CN111953785A (zh) | 数据传输方法、系统及服务器 | |
CA2536607A1 (en) | Implementing a web server on a mobile station | |
CN109474471B (zh) | 一种dds网络的rtps协议加速方法及其节点和系统 | |
US10958712B2 (en) | Enhanced reliability for information services | |
CN103516766A (zh) | 一种客户端与应用服务器间进行通信的方法和系统 | |
CN112311899A (zh) | 一种会话处理方法、装置及系统 | |
CN118101756A (zh) | 分布式服务器的消息推送方法、系统、设备及存储介质 | |
CN114422591B (zh) | 点对点通信方法、数据通信系统、计算机设备、存储介质 | |
CN116261065A (zh) | 基于消息队列遥测传输协议的通信方法、设备及存储介质 | |
CN111885601A (zh) | 一种Mesh设备保活处理方法及装置 | |
EP3697070B1 (en) | Apparatus, method and program for transmitting and receiving data to and from iot device | |
CN114760348B (zh) | 一种业务处理方法、装置、存储介质及电子装置 | |
CN117560415B (zh) | 智慧社区微服务架构mqtt异步和同步通信方法和系统 | |
CN116939028A (zh) | 消息推送方法、系统、设备及存储介质 | |
CA2502368C (en) | Data acquisition source management method and system | |
AU2003267929B2 (en) | Data acquisition source management method and system | |
CN116346899A (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 |