CN111083193A - 长连接消息发送方法、服务器及存储介质 - Google Patents
长连接消息发送方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN111083193A CN111083193A CN201911093023.0A CN201911093023A CN111083193A CN 111083193 A CN111083193 A CN 111083193A CN 201911093023 A CN201911093023 A CN 201911093023A CN 111083193 A CN111083193 A CN 111083193A
- Authority
- CN
- China
- Prior art keywords
- target
- target terminal
- message
- server
- long connection
- 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 47
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 239000002699 waste material Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
-
- 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/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- 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/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例涉及通信技术领域,特别涉及一种长连接消息发送方法、服务器及存储介质。长连接消息发送方法,应用于分布式集群中的服务器,包括:接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;根据所述身份信息确定是否与所述目标终端建立了长连接;若是,向所述目标终端发送所述目标消息;若否,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。采用本发明实施例,能够解决分布式集群中的服务器下发消息时可能造成消息丢失的问题。
Description
技术领域
本发明实施例涉及通信技术领域,特别涉及一种长连接消息发送方法、服务器及存储介质。
背景技术
分布式集群中存在多个均衡负载的服务器以保持系统的稳定性,客户侧的终端可以与其中的任一个服务器建立长连接,通过长连接来进行通信与交互;用户可以向与分布式集群中的服务器建立了长连接的终端发送消息,来实现对终端的控制和编排等操作。然而发明人发现相关技术中存在如下问题:当一服务器接收到指向某个终端的消息,但该服务器未与被指向的终端建立长连接时,服务器随机下发消息会造成消息的丢失,导致无法正常实现对终端的操作。
发明内容
本发明实施例的目的在于提供一种长连接消息发送方法、服务器及存储介质,能够解决分布式集群中的服务器下发消息时可能造成消息丢失的问题。
为解决上述问题,本发明的实施例提供了一种长连接消息发送方法,应用于分布式集群中的服务器,包括:接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;根据所述身份信息确定是否与所述目标终端建立了长连接;若是,向所述目标终端发送所述目标消息;若否,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。
本发明的实施例还提供了一种分布式集群中的服务器,包括:接收模块,用于接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;确定模块,用于根据所述身份信息确定是否与所述目标终端建立了长连接;发送模块,用于在判定与所述目标终端建立了长连接时,向所述目标终端发送所述目标消息;还用于在判定未与所述目标终端建立了长连接时,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。
本发明的实施例还提供了一种分布式集群中的服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的长连接消息发送方法。
本发明的实施例还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的长连接消息发送方法。
本发明实施例相对于现有技术而言,接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;根据所述身份信息确定是否与所述目标终端建立了长连接;若是,向所述目标终端发送所述目标消息;若否,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息;也就是说,分布式集群中的服务器对于指向并未与自身建立长连接的终端的目标消息,采取的是将目标消息广播出去的方式,从而分布式集群中与目标终端建立了长连接的另一服务器能够及时接收到广播的目标消息,并将目标消息发送至目标终端,这样即使服务器无法获知与目标终端建立长连接的另一服务器,目标消息也能主动被另一服务器接收到并发送出去,也就无需服务器随机下发目标消息,避免了服务器随机下发目标消息可能导致消息丢失的问题,保障了目标消息能够准确被发送到目标终端。
另外,在所述根据所述身份信息确定是否与所述目标终端建立了长连接前,还包括:判断所述目标终端是否在线;若是,则根据所述身份信息确定是否与所述目标终端建立了长连接;可以理解的是,若目标终端不在线,则服务器后续也不能向目标终端发送消息,可以结束对目标消息的发送;因此先判断目标终端是否在线有助于控制服务器的工作量,避免服务器执行无用操作造成的服务器资源浪费。
另外,若所述目标消息的来源是所述分布式集群中的任一服务器,则在判定未与所述目标终端建立了长连接后,结束对所述目标消息的发送;也就是说,当目标消息是由分布式集群中的其他服务器广播的时候,且当前服务器也没有连接目标终端,说明目标终端是与另一台服务器建立的长连接,则不再重复广播目标消息,以避免相同数据的重复传输所造成的服务器资源浪费。
另外,所述判断所述目标终端是否在线,包括:判断是否从预设的所述分布式集群的状态信息数据库中获取到所述目标终端的在线信息;若是,则判定所述目标终端在线;其中,所述目标终端的在线信息由与所述目标终端连接的服务器在建立长连接时在所述状态信息数据库中进行创建,并根据定时接收所述目标终端的心跳信息的情况对所述在线信息进行更新。上述提供了一种判断终端是否在线的方式,由于心跳信息是用于维持长连接的,当服务器每次接收到了与自身建立长连接的终端的心跳信息后,都在状态信息数据库中更新终端的在线信息,从而有助于服务器直接从数据库中获取到终端的最新的在线信息。
另外,所述服务器的缓存中存储有与所述服务器建立了长连接的终端的身份信息;所述根据所述身份信息确定是否与所述目标终端建立了长连接,包括:查询所述服务器的缓存中是否存储有所述目标终端的身份信息;若所述服务器的缓存中存储有所述目标终端的身份信息,则判定与所述目标终端建立了长连接。上述提供了一种对服务器和终端间建立的长连接的识别方式,由于服务器在与终端建立了长连接后,服务器的缓存中会存储终端的身份信息,以供服务器获知与自身建立了长连接的终端,因此可通过查找服务器缓存中存储的身份信息,方便快捷地对终端是否与服务器建立了长连接进行判定。
另外,所述将所述目标消息广播至所述分布式集群中,包括:将所述目标消息写入所述分布式集群中的服务器预先订阅的消息队列中,以供所述消息队列将所述目标消息广播至所述分布式集群中;由于消息队列本身可以存储一定数量的消息,并以专门的处理逻辑进行消息的广播,能够避免服务器处理的数据量的激增而可能导致的服务器崩溃,实现对数据的消峰。
另外,所述消息队列为ActiveMQ消息队列。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是根据本发明第一实施例中的长连接消息发送方法的流程图;
图2是根据本发明第二实施例中的长连接消息发送方法的流程图;
图3是根据本发明第三实施例中的长连接消息发送方法的流程图;
图4是根据本发明第四实施例中的分布式集群中的服务器的结构方框图;
图5是根据本发明第五实施例中的分布式集群中的服务器的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施例涉及一种长连接消息发送方法,具体流程如图1所示,包括:
步骤101,接收指向目标终端的目标消息,目标消息中包括目标终端的身份信息;
步骤102,根据身份信息确定是否与目标终端建立了长连接;若是,执行步骤103;若否,执行步骤104;
步骤103,向目标终端发送目标消息;
步骤104,将目标消息广播至分布式集群中,以供分布式集群中与目标终端建立了长连接的另一服务器接收并向目标终端发送目标消息。
下面对本实施例的长连接消息发送方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
在步骤101中,用户可以向与分布式集群中的服务器建立了长连接的终端发送目标消息,包含可用于控制和编排目标终端的消息等,分布式集群中的服务器接收指向目标终端的目标消息。例如,终端可以是交换机、路由器、计算机、智能终端等硬件设备,存在一个用于管理终端的应用系统,其交互界面可基于web页面、HTML5实现,用户可通过操作交互界面发送指向目标终端的目标消息,以实现对目标终端的远程控制等;在实例中,用户通过操作交互界面而生成的目标消息可以通过Nginx服务器转发到分布式集群,并由集群中的一服务器接收,其中Nginx服务器在接收到目标消息时,可基于负载均衡策略确定用于接收该目标消息的服务器。可以理解的是,由于目标消息是需要发送至目标终端的,因此目标消息中包括有目标终端的身份信息,目标终端的身份信息可以理解为目标终端的唯一ID。
在步骤102中,服务器根据目标消息中包括的身份信息确定是否与指向的目标终端建立了长连接;如果是,则服务器具备向目标终端发送目标消息的能力,服务器直接将接收到的目标消息发送至目标终端;如果不是,则服务器将目标消息广播出去。
本实施例中提供了一种确定是否与目标终端建立了长连接的方式,具体为:
查询服务器的缓存中是否存储有目标终端的身份信息;若服务器的缓存中存储有目标终端的身份信息,则判定与目标终端建立了长连接。
具体地说,服务器在与终端建立了长连接后,会在缓存中存储终端的身份信息,以供服务器获知与自身建立了长连接的终端信息,进一步的,服务器与终端在建立了长连接之后可基于心跳机制保持长连接的有效性,当服务器接收到来自终端的心跳消息时,可在缓存中记录该终端的身份信息,从而避免长连接建立时写入缓存的记录被清空后,无法正确获知连接状态的问题;因此,如果查询到服务器的缓存中存储有目标终端的身份信息,说明目标终端是与服务器建立的长连接。
在步骤103中,如果服务器是与目标终端建立了长连接,则服务器直接向目标终端发送目标消息,此处不再赘述。
在步骤104中,如果服务器不是与目标终端建立了长连接,则服务器将目标消息广播至分布式集群中;分布式集群中的其他服务器接收到广播的目标消息后,都根据目标消息中包括的身份信息判断目标终端是否与自身建立了长连接;由于目标终端是与分布式集群中的一台服务器建立的长连接,因此接收到广播的其他服务器中存在该与目标终端建立了长连接的一台服务器,该台服务器在判定目标终端与自身建立了长连接后,将目标消息发送至目标终端。
本实施例中还提供了一种广播目标消息的方式,具体为:
将目标消息写入分布式集群中的服务器预先订阅的消息队列中,以供消息队列将目标消息广播至分布式集群中。
具体地说,分布式集群中的服务器预先订阅有消息队列,当消息队列将目标消息进行广播时,订阅了消息队列的服务器可以接收到广播的目标消息;由于消息队列本身可以存储一定数量的消息,并以专门的处理逻辑进行消息的广播,能够避免服务器需要处理的数据量的激增而可能导致的服务器崩溃,实现对数据的消峰。在实例中,消息队列可以是ActiveMQ消息队列,ActiveMQ消息队列是一种安全的、高性能的、可用性高的分布式消息队列,其作为消息队列的功能十分完备,能够良好应用在消息广播的领域。
本实施例相对于现有技术而言,服务器接收指向目标终端的目标消息,目标消息中包括目标终端的身份信息;根据身份信息确定是否与目标终端建立了长连接;若是,服务器向目标终端发送目标消息;若否,服务器将目标消息广播至分布式集群中,从而分布式集群中与目标终端建立了长连接的另一服务器能够及时接收到广播的目标消息,并将目标消息发送至目标终端,这样即使服务器无法获知与目标终端建立长连接的另一服务器,目标消息也能主动被另一服务器接收到并发送出去,也就无需服务器随机下发目标消息,避免了服务器随机下发目标消息可能导致消息丢失的问题,保障了目标消息能够准确被发送到目标终端。
本发明的第二实施例涉及一种长连接消息发送方法,本实施例与第一实施例大致相同,本发明第二实施例中,在目标终端在线的情况下,再对长连接是否建立进行确定。本实施例中长连接消息发送方法的流程如图2所示,下面对图2的流程做具体说明。
步骤201,接收指向目标终端的目标消息,目标消息中包括目标终端的身份信息;此步骤与步骤101大致相同,此处不再赘述。
步骤202,判断目标终端是否在线;若是,执行步骤203,若否,结束。
具体地说,当目标终端在线时,目标终端与其建立了长连接的服务器可基于心跳机制,保持长连接的有效性,从而避免服务器在长连接未使用时,主动断开,导致目标终端与服务器的连接被断开,而无法接收到服务器发送的目标消息;但当目标终端不在线时,服务器无法向目标终端发送目标消息,可以结束对目标消息的发送;因此,先判断目标终端是否在线,有助于控制服务器的工作量,避免服务器执行无用操作造成的服务器资源浪费。
本实施例中提供了一种判断目标终端是否在线的方式,具体包含:
基于目标终端的身份信息,检索预设的分布式集群的状态信息数据库,例如,PostgreSQL数据库,其中,状态信息库可用于保存分布式集群中个服务器其与终端的连接信息,具体可包含服务器ID、终端ID,以及两者建立长连接的时间及状态信息,其中状态信息可包含最近更新的心跳接收时间,或可用于表征长连接当前是否有效的其他内容。
判断是否可从状态信息数据库中获取到目标终端的在线信息;若是,则判定目标终端在线;当服务器与终端成功建立长连接后,服务会在状态信息数据库中创建该终端的在线信息;由于终端和服务器间需要保持长连接,终端在与服务器建立长连接后,需要周期性的向服务器发送心跳信息,以保持长连接的有效性;服务器在接收到终端发送的心跳信息后,确定与该终端的长连接当前可用,故可在预设的状态信息数据库中将该终端的在线信息进行更新,也就是状态信息数据库中存储的是终端最新的在线信息;若在一超出心跳周期的时长内未接收到终端发送的心跳信息,则可在状态信息数据库中将该终端的在线信息更新为离线信息,并主动断开与该客户端之间的长连接。
其中,目标服务器与目标终端的连接信息可由目标服务器在与目标终端建立长连接时进行创建,并根据定时接收目标终端的心跳信息的情况对状态信息进行更新。服务器在判断是否能获取目标终端的在线信息时,具体可包含基于目标终端的身份信息检索状态数据库,并读取对应的状态信息,并基于状态信息获取目标终端的在线信息。
在一实施中,状态信息中的内容可为最近更新的心跳接收时间时,服务器可先获取系统当前时间与该接收时间的差值,并将该差值与心跳接收周期时长进行比较,当差值大于周期时长,则表明目标服务器与目标终端的长连接已失效,目标终端已离线,或目标服务器已离线,在这两种情况下,都可判定该目标终端已离线,服务器则无法获取到目标终端的在线信息;若差值不大于周期时长,则表明目标服务器与集群正常通信,且与目标终端的长连接有效,服务器可获取到目标终端的在线信息。
在另一实施中,状态信息的内容可为直接表征长连接当前是否有效的内容,例如在线、离线。如此一来,服务器可通过直接读取状态信息的内容来确定是否获取到目标终端的在线信息。而在该实施中,状态信息的更新将由当前与集群正常通信的一服务器来更新,该服务器可对状态信息数据库中的各条记录进行更新。具体而言,各服务器与终端建立长连接时,将在状态信息数据库中创建对应的数据记录,数据记录中包含时间记录,用于记录长连接的创建时间以及心跳接收时间,如此一来,该负责更新状态信息字段的服务器可计算各条记录中时间值与当前系统时间的差值,并基于差值与心跳接收周期时长的关系来确定状态信息,并更新在数据库中。值得注意的是,分布式集群可周期性的对状态信息数据库进行更新,而在指定执行该更新任务的服务器时,可基于当前的各服务器通信状态来确定,以保证更新任务的正常进行,通过该方式,可及时获取各长连接的状态,以及各服务器的状态。
步骤203,根据身份信息确定是否与目标终端建立了长连接;若是,执行步骤204;若否,执行步骤205;此步骤与步骤102大致相同,此处不再赘述。
步骤204,向目标终端发送目标消息;此步骤与步骤103大致相同,此处不再赘述。
步骤205,将目标消息广播至分布式集群中,以供分布式集群中与目标终端建立了长连接的另一服务器接收并向目标终端发送目标消息。此步骤与步骤104大致相同,此处不再赘述。
本实施例相对于现有技术而言,在根据身份信息确定是否与目标终端建立了长连接前,还判断是否从用于更新目标终端的在线信息的状态信息数据库中获取到目标终端的在线信息,若获取到了目标终端的在线信息,则继续根据身份信息确定是否与目标终端建立了长连接;若没有获取到目标终端的在线信息,说明目标终端处于离线状态,则服务器后续也不能向目标终端发送消息,可以结束对目标消息的发送;因此先判断目标终端是否在线有助于控制服务器的工作量,避免服务器执行无用操作造成的服务器资源浪费。
本发明的第三实施例涉及一种长连接消息发送方法,本实施例中,服务器接收到的目标消息是由分布式集群中的其他服务器广播发送的。本实施例中长连接消息发送方法的流程如图3所示,下面对图3的流程做具体说明。
步骤301,接收指向目标终端的目标消息,目标消息中包括目标终端的身份信息。
具体地说,当前的服务器接收到的指向目标终端的目标消息,是分布式集群中的其他服务器所发送的,也就是说预先有一个服务器从用户侧接收到了目标消息,但该服务器并未与目标终端建立长连接,因此该服务器将目标消息广播至了分布式集群中。关于本步骤中的其余内容与步骤101中所说明的大致相同,此处不再赘述。
步骤302,根据身份信息确定是否与目标终端建立了长连接;若是,执行步骤303;若否,结束。此步骤与步骤102大致相同,此处不再赘述,区别在于:当当前的服务器判定自身未与目标终端建立长连接时,说明分布式集群中存在另一台服务器与目标终端建立了长连接,而另一台服务器也能接收到广播的目标消息,并对目标消息进行处理,因此当前的服务器不再重复广播目标消息,以避免相同数据的重复传输所造成的服务器资源浪费。
步骤303,向目标终端发送目标消息。此步骤与步骤103大致相同,此处不再赘述。
本实施例相对于现有技术而言,当服务器接收到的目标消息是由分布式集群中的其他服务器广播的时候,且当前服务器也没有连接目标终端,说明目标终端是与另一台服务器建立的长连接,则不再重复广播目标消息,以避免相同数据的重复传输所造成的服务器资源浪费。
需要说明的是,本实施例中的上述各示例均为方便理解进行的举例说明,并不对本发明的技术方案构成限定。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第四实施例涉及一种分布式集群中的服务器,如图4所示,包括:接收模块401,确定模块402和发送模块403。
接收模块401,用于接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;
确定模块402,用于根据所述身份信息确定是否与所述目标终端建立了长连接;
发送模块403,用于在判定与所述目标终端建立了长连接时,向所述目标终端发送所述目标消息;还用于在判定未与所述目标终端建立了长连接时,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。
在一个实例中,在所述确定模块402根据所述身份信息确定是否与所述目标终端建立了长连接前,还用于:判断所述目标终端是否在线;若是,则根据所述身份信息确定是否与所述目标终端建立了长连接。
在一个实例中,若所述接收模块401接收到的目标消息的来源是所述分布式集群中的任一服务器,则在所述确定模块402判定未与所述目标终端建立了长连接后,所述发送模块403结束对所述目标消息的发送。
在一个实例中,所述确定模块402判断所述目标终端是否在线,包括:判断是否从预设的所述分布式集群的状态信息数据库中获取到所述目标终端的在线信息;若是,则判定所述目标终端在线;其中,所述目标终端的在线信息由与所述目标终端连接的服务器在建立长连接时在所述状态信息数据库中进行创建,并根据定时接收所述目标终端的心跳信息的情况对所述在线信息进行更新。
在一个实例中,所述服务器的缓存中存储有与所述服务器建立了长连接的终端的身份信息;所述确定模块402根据所述身份信息确定是否与所述目标终端建立了长连接,包括:查询所述服务器的缓存中是否存储有所述目标终端的身份信息;若所述服务器的缓存中存储有所述目标终端的身份信息,则判定与所述目标终端建立了长连接。
在一个实例中,所述发送模块403将所述目标消息广播至所述分布式集群中,包括:将所述目标消息写入所述分布式集群中的服务器预先订阅的消息队列中,以供所述消息队列将所述目标消息广播至所述分布式集群中。
在一个实例中,所述消息队列为ActiveMQ消息队列。
不难发现,本实施例为与第一实施例、第二实施例或第三实施例的相对应装置的实施例,本实施例可与第一实施例、第二实施例或第三实施例互相配合实施,第一实施例、第二实施例或第三实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,此处不再赘述。相应的,本实施例中提到的相关技术细节也可应用在第一实施例、第二实施例或第三实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本发明第五实施例涉及一种分布式集群中的服务器,如图5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述长连接消息发送方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
本发明第六实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述长连接消息发送方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种长连接消息发送方法,其特征在于,应用于分布式集群中的服务器;所述方法包括:
接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;
根据所述身份信息确定是否与所述目标终端建立了长连接;
若是,向所述目标终端发送所述目标消息;
若否,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。
2.根据权利要求1所述的长连接消息发送方法,其特征在于,在所述根据所述身份信息确定是否与所述目标终端建立了长连接前,还包括:
判断所述目标终端是否在线;
若是,则根据所述身份信息确定是否与所述目标终端建立了长连接。
3.根据权利要求1所述的长连接消息发送方法,其特征在于,若所述目标消息的来源是所述分布式集群中的任一服务器,则在判定未与所述目标终端建立了长连接后,结束对所述目标消息的发送。
4.根据权利要求2所述的长连接消息发送方法,其特征在于,所述判断所述目标终端是否在线,包括:
判断是否从预设的所述分布式集群的状态信息数据库中获取到所述目标终端的在线信息;若是,则判定所述目标终端在线;
其中,所述目标终端的在线信息由与所述目标终端连接的服务器在建立长连接时在所述状态信息数据库中进行创建,并根据定时接收所述目标终端的心跳信息的情况对所述在线信息进行更新。
5.根据权利要求1所述的长连接消息发送方法,其特征在于,所述服务器的缓存中存储有与所述服务器建立了长连接的终端的身份信息;
所述根据所述身份信息确定是否与所述目标终端建立了长连接,包括:
查询所述服务器的缓存中是否存储有所述目标终端的身份信息;
若所述服务器的缓存中存储有所述目标终端的身份信息,则判定与所述目标终端建立了长连接。
6.根据权利要求1所述的长连接消息发送方法,其特征在于,所述将所述目标消息广播至所述分布式集群中,包括:
将所述目标消息写入所述分布式集群中的服务器预先订阅的消息队列中,以供所述消息队列将所述目标消息广播至所述分布式集群中。
7.根据权利要求6所述的长连接消息发送方法,其特征在于,所述消息队列为ActiveMQ消息队列。
8.一种分布式集群中的服务器,其特征在于,包括:
接收模块,用于接收指向目标终端的目标消息,所述目标消息中包括所述目标终端的身份信息;
确定模块,用于根据所述身份信息确定是否与所述目标终端建立了长连接;
发送模块,用于在判定与所述目标终端建立了长连接时,向所述目标终端发送所述目标消息;还用于在判定未与所述目标终端建立了长连接时,将所述目标消息广播至所述分布式集群中,以供所述分布式集群中与所述目标终端建立了长连接的另一服务器接收并向所述目标终端发送所述目标消息。
9.一种分布式集群中的服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的长连接消息发送方法。
10.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的长连接消息发送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911093023.0A CN111083193A (zh) | 2019-11-11 | 2019-11-11 | 长连接消息发送方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911093023.0A CN111083193A (zh) | 2019-11-11 | 2019-11-11 | 长连接消息发送方法、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111083193A true CN111083193A (zh) | 2020-04-28 |
Family
ID=70310803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911093023.0A Pending CN111083193A (zh) | 2019-11-11 | 2019-11-11 | 长连接消息发送方法、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111083193A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111629059A (zh) * | 2020-05-27 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种集群通信方法、系统、设备及计算机可读存储介质 |
CN111737029A (zh) * | 2020-06-23 | 2020-10-02 | 中国建设银行股份有限公司 | 一种服务端、数据推送方法、数据推送系统 |
CN113220515A (zh) * | 2021-05-12 | 2021-08-06 | 武汉中仪物联技术股份有限公司 | 移动设备连接状态检测方法、装置、电子设备及存储介质 |
CN113452765A (zh) * | 2021-06-21 | 2021-09-28 | 北京达佳互联信息技术有限公司 | 一种长连接通信方法、系统、设备、存储介质及程序产品 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113810264A (zh) * | 2021-01-15 | 2021-12-17 | 北京京东拓先科技有限公司 | 信息传输方法、装置、电子设备和存储介质 |
CN114006938A (zh) * | 2021-09-24 | 2022-02-01 | 深圳市佳创视讯技术股份有限公司 | 分布式集群的消息路由下发方法、装置、设备及存储介质 |
CN114143334A (zh) * | 2021-12-03 | 2022-03-04 | 爱信诺征信有限公司 | 一种终端控制方法及装置 |
CN114374705A (zh) * | 2022-01-06 | 2022-04-19 | 青岛海信智慧生活科技股份有限公司 | 服务集群和消息推送方法 |
CN114760296A (zh) * | 2022-03-07 | 2022-07-15 | 中银金融科技有限公司 | 信息发送方法及装置 |
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103457841A (zh) * | 2013-09-17 | 2013-12-18 | 北京京东尚科信息技术有限公司 | 一种基于长连接的消息处理方法和消息处理装置 |
CN106899605A (zh) * | 2017-03-15 | 2017-06-27 | 东软集团股份有限公司 | 基于stomp协议的通信方法和装置 |
CN107395686A (zh) * | 2017-06-28 | 2017-11-24 | 甘棠软件系统(上海)有限公司 | 切换长连接的方法、设备和系统 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN108696588A (zh) * | 2018-05-14 | 2018-10-23 | 平安科技(深圳)有限公司 | 一种信息的发送方法及设备 |
CN108833950A (zh) * | 2018-06-29 | 2018-11-16 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息下发方法、服务器、系统和存储介质 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
-
2019
- 2019-11-11 CN CN201911093023.0A patent/CN111083193A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103457841A (zh) * | 2013-09-17 | 2013-12-18 | 北京京东尚科信息技术有限公司 | 一种基于长连接的消息处理方法和消息处理装置 |
CN106899605A (zh) * | 2017-03-15 | 2017-06-27 | 东软集团股份有限公司 | 基于stomp协议的通信方法和装置 |
CN107395686A (zh) * | 2017-06-28 | 2017-11-24 | 甘棠软件系统(上海)有限公司 | 切换长连接的方法、设备和系统 |
CN108377247A (zh) * | 2018-03-08 | 2018-08-07 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN108696588A (zh) * | 2018-05-14 | 2018-10-23 | 平安科技(深圳)有限公司 | 一种信息的发送方法及设备 |
CN108833950A (zh) * | 2018-06-29 | 2018-11-16 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息下发方法、服务器、系统和存储介质 |
CN110300050A (zh) * | 2019-05-23 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111629059B (zh) * | 2020-05-27 | 2022-12-16 | 浪潮电子信息产业股份有限公司 | 一种集群通信方法、系统、设备及计算机可读存储介质 |
CN111629059A (zh) * | 2020-05-27 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种集群通信方法、系统、设备及计算机可读存储介质 |
CN111737029A (zh) * | 2020-06-23 | 2020-10-02 | 中国建设银行股份有限公司 | 一种服务端、数据推送方法、数据推送系统 |
CN113810264A (zh) * | 2021-01-15 | 2021-12-17 | 北京京东拓先科技有限公司 | 信息传输方法、装置、电子设备和存储介质 |
CN113810264B (zh) * | 2021-01-15 | 2023-09-05 | 北京京东拓先科技有限公司 | 信息传输方法、装置、电子设备和存储介质 |
CN113220515A (zh) * | 2021-05-12 | 2021-08-06 | 武汉中仪物联技术股份有限公司 | 移动设备连接状态检测方法、装置、电子设备及存储介质 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113542359B (zh) * | 2021-06-17 | 2023-09-05 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113452765A (zh) * | 2021-06-21 | 2021-09-28 | 北京达佳互联信息技术有限公司 | 一种长连接通信方法、系统、设备、存储介质及程序产品 |
CN113452765B (zh) * | 2021-06-21 | 2023-02-17 | 北京达佳互联信息技术有限公司 | 一种长连接通信方法、系统、设备、存储介质及程序产品 |
CN114006938A (zh) * | 2021-09-24 | 2022-02-01 | 深圳市佳创视讯技术股份有限公司 | 分布式集群的消息路由下发方法、装置、设备及存储介质 |
CN114143334B (zh) * | 2021-12-03 | 2024-04-09 | 爱信诺征信有限公司 | 一种终端控制方法及装置 |
CN114143334A (zh) * | 2021-12-03 | 2022-03-04 | 爱信诺征信有限公司 | 一种终端控制方法及装置 |
CN114374705A (zh) * | 2022-01-06 | 2022-04-19 | 青岛海信智慧生活科技股份有限公司 | 服务集群和消息推送方法 |
CN114760296A (zh) * | 2022-03-07 | 2022-07-15 | 中银金融科技有限公司 | 信息发送方法及装置 |
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083193A (zh) | 长连接消息发送方法、服务器及存储介质 | |
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
JP5232876B2 (ja) | フィードをベースにした移動端末へのコンテンツの自動送信技術 | |
CN110808948B (zh) | 远程过程调用方法、装置及系统 | |
EP3496432B1 (en) | Efficient multicast transmission | |
TWI454917B (zh) | Access control method, access control device and access control program | |
CN108055322B (zh) | 请求消息处理方法及装置 | |
KR20110050424A (ko) | 발명의 피어-투-피어 네트워크필드를 통해서 공유하는 인스톨된 게임 소프트웨어 | |
JP5960820B2 (ja) | ツリー構造の管理方法、情報処理システム、及び、プログラム | |
CN110417876B (zh) | 会话方法、分布式系统中的节点服务器及主控设备 | |
CN113760468A (zh) | 分布式选举方法、装置、系统和介质 | |
CN112491951A (zh) | 对等网络中的请求处理方法、服务器及存储介质 | |
CN111404828B (zh) | 实现全局流控的方法及装置 | |
CN112995723B (zh) | 一种epg数据管理方法及epg服务器 | |
CN110798349B (zh) | 一种配置分发、接收方法、设备及计算机可读存储介质 | |
CN110417850B (zh) | 软件配置获取方法、系统、服务器及介质 | |
CN112235184B (zh) | 一种基于事件驱动的信息推送方法、装置及电子设备 | |
EP4084437A1 (en) | Data transmission method, terminal, and computer-readable storage medium | |
CN110913020B (zh) | 工作组的数据传输方法及装置 | |
US20140040380A1 (en) | System and method for providing push service for reducing network loads | |
CN111459718B (zh) | 一种多终端系统及其数据备份方法和存储介质 | |
CN107995194A (zh) | 一种多媒体播控系统及其文件分发方法 | |
CN103312816A (zh) | 一种消息分发方法和设备 | |
KR20170025497A (ko) | 피어 정보를 제공하는 방법 및 네트워크 관리 시스템 | |
CN108076116B (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: 20200428 |