CN110572443A - 长连接状态更新方法、服务端、服务器及存储介质 - Google Patents
长连接状态更新方法、服务端、服务器及存储介质 Download PDFInfo
- Publication number
- CN110572443A CN110572443A CN201910776633.4A CN201910776633A CN110572443A CN 110572443 A CN110572443 A CN 110572443A CN 201910776633 A CN201910776633 A CN 201910776633A CN 110572443 A CN110572443 A CN 110572443A
- Authority
- CN
- China
- Prior art keywords
- client
- information
- server
- online information
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- 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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及通信技术领域,特别涉及一种长连接状态更新方法、服务端、服务器及存储介质。长连接状态更新方法,应用于分布式集群中的服务端,所述分布式集群包括若干个服务端;所述方法包括:每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;判断所述客户端的在线信息是否超时;若所述客户端的在线信息已超时,将所述客户端的在线信息更新为离线信息。采用本发明的实施方式,使得服务端能够及时更新客户端的实时连接状态等信息,以便于对客户端的状态及业务进行管理。
Description
技术领域
本发明实施例涉及通信技术领域,特别涉及一种长连接状态更新方法、服务端、服务器及存储介质。
背景技术
长连接是指在一个连接上可以连续发送多个数据包,且如果在连接保持期间没有数据包发送,需要连接双方发送用于检测连接的数据包。长连接多用于操作频繁(读写)的场景中,当服务端与客户端需要及时频繁进行通信与交互时,通常会在服务端与客户端间建立长连接,以提升通信交互的效率与速度。然而发明人发现相关技术中存在如下问题:当服务端出现故障时,服务端无法及时更新与其建立了长连接的客户端的实时状态,服务端看似与客户端仍然保持长连接但无法进行信息交互,且易导致其他服务端可能获取到与实际不符的、错误的客户端的状态信息,从而影响对于客户端的状态及业务管理等。
发明内容
本发明实施方式的目的在于提供一种长连接状态更新方法、服务端、服务器及存储介质,使得服务端能够及时更新客户端的实时连接状态等信息,以便于对客户端的状态及业务进行管理。
为解决上述技术问题,本发明的实施方式提供了一种长连接状态更新方法,应用于分布式集群中的服务端,所述分布式集群包括若干个服务端;所述方法包括:每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;判断所述客户端的在线信息是否超时;若所述客户端的在线信息已超时,将所述客户端的在线信息更新为离线信息。
本发明的实施方式还提供了一种分布式集群中的服务端,包括:获取模块,用于每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;判断模块,用于判断所述客户端的在线信息是否超时;更新模块,用于在所述客户端的在线信息已超时时,将所述客户端的在线信息更新为离线信息。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述中任一项所述的长连接状态更新方法。
本发明的实施方式还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实上述中任一项所述的长连接状态更新方法。
本发明实施方式相对于现有技术而言,分布式集群中的服务端每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;判断所述客户端的在线信息是否超时;若所述客户端的在线信息已超时,将所述客户端的在线信息更新为离线信息。也就是说,客户端可以与分布式集群中的一服务端建立长连接,分布式集群中的任一正常运行的服务端每间隔一定的时间去获取所有与分布式集群中的服务端建立了长连接的各客户端的在线信息,并判断客户端的在线信息是否超时;如果客户端的在线信息已经超时,说明与客户端建立长连接的服务端可能存在故障,导致客户端的在线信息未能得到及时更新,客户端与服务端的长连接已不可用,客户端与分布式集群中的服务端间无法正常进行信息交互,则该服务端将该客户端的在线信息更新为离线信息;通过上述方式,分布式集群中的服务端能够实现对客户端状态的监管,避免了因与客户端建立长连接的服务端发生故障而无法及时更新客户端的长连接相关信息的情况,从而保障了对长连接状态管理的及时性和准确性,也令管理分布式集群的系统能够根据正确的客户端的在线信息或离线信息,进行客户端的业务编排和任务下发等处理操作,有助于客户端和服务端间正常信息交互的开展。
另外,所述获取客户端的在线信息前,还包括:判定获取到第一定时任务的执行权;其中,在所述获取到第一定时任务的执行权前,所述第一定时任务处于未锁定状态;在所述获取到第一定时任务的执行权后,锁定所述第一定时任务,并执行所述第一定时任务,所述执行所述第一定时任务包括:获取客户端的在线信息;所述方法还包括:在完成所述第一定时任务后,解锁所述第一定时任务;其中,完成所述第一定时任务,包括:若判定所述客户端的在线信息已超时,则将所述客户端的在线信息更新为离线信息;通过上述方式,使得服务端能够通过已被锁定的第一定时任务知晓到当前已有其他服务端获取到了第一定时任务的执行权,并在执行上述的长连接状态更新方法,也就是在一个第一预设时长内只有一个服务端执行上述长连接状态更新方法,避免了服务端同时执行相同操作时可能产生的冲突。
另外,所述方法还包括:还包括:每间隔第二预设时长,判断所述第一定时任务的锁定状态是否超时;若所述第一定时任务的锁定状态超时,解锁所述第一定时任务;其中,所述第二预设时长大于所述第一预设时长;通过上述方式,服务端还对第一定时任务是否正常起效进行了检测,即服务端每间隔第二预设时长若判定到第一定时任务的锁定状态超时,就对第一定时任务进行解锁,避免了第一定时任务长时间处于锁定状态而无法被服务端正常获取第一定时任务的执行权的情况,也就是避免了服务端无法正常对长连接的状态进行更新的情况。
另外,所述判断所述第一定时任务的锁定状态是否超时,包括:判定所述第一定时任务处于锁定状态,获取所述第一定时任务被锁定的时刻;若所述第一定时任务被锁定的时刻与当前时间的差值大于所述第一预设时长,则判定所述第一定时任务的锁定状态超时;上述提供了一种判断第一定时任务的锁定状态是否超时的方式,由于正常情况下,第一定时任务的执行权是每间隔第一预设时长被服务端获取一次,因此当第一定时任务保持锁定状态的时间大于第一预设时长时,说明第一定时任务在被锁定时至今一直处于被锁定状态,从而服务端需要将一直处于被锁定状态的第一定时任务进行解锁,以便于后续根据第一预设时长的间隔正常获取第一定时任务的执行权。
另外,所述获取客户端的在线信息,包括:从所述服务端连接的第一数据库中获取客户端的在线信息;其中,所述客户端的在线信息由与所述客户端建立长连接的服务端在所述第一数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的在线信息,并根据接收所述客户端发送的心跳信息的情况对所述在线信息进行更新;也就是说,当服务端每次接收到了与自身建立长连接的客户端的心跳信息后,都在第一数据库中更新客户端的在线信息,从而有助于服务端直接从第一数据库中获取到客户端的最新的在线信息。
另外,所述客户端的在线信息中包括所述客户端的超时时间;所述判断所述客户端的在线信息是否超时,包括:从所述第一数据库中获取所述客户端的在线信息的超时时间,根据所述客户端的在线信息的超时时间,判断所述客户端的在线信息是否超时;其中,所述客户端的在线信息的超时时间由与所述客户端建立长连接的服务端在接收到所述客户端发送的心跳信息后在所述数据库中进行更新;也就是说,当服务端每次接收到了与自身建立长连接的客户端的心跳信息后,还在数据库中更新客户端的在线信息的超时时间,从而服务端可直接根据客户端的在线信息的超时时间和当前的系统时间进行计算,快捷地对客户端的在线信息是否超时进行判断。
另外,所述判断所述客户端的在线信息是否超时,包括:从所述第一数据库中获取具有在线信息的客户端;判断与所述服务端连接的第二数据库中是否存储有所述具有在线信息的客户端的记录,若否,判定所述客户端的在线信息已超时;其中,所述具有在线信息的客户端的记录由与所述客户端建立长连接的服务端在所述第二数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的记录,并设置所述记录的超时时间,所述服务端在到达超时时间时未接收到所述客户端发送的心跳信息则清空所述客户端的记录;也就是说,上述还提供了一种判断在线信息是否超时的方式,服务端可根据判断第二数据库中是否存储有客户端的记录,快捷地对客户端的在线信息是否超时进行判断。
另外,若判定所述客户端的在线信息已超时,则将所述客户端的连接信息更新为断开信息,用于表示客户端与服务端的长连接已经处于断开状态。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式中长连接状态更新方法的流程图;
图2是根据本发明第二实施方式中长连接状态更新方法的流程图;
图3是根据本发明第二实施方式中对第一定时任务的检测方式的流程图;
图4是根据本发明第二实施方式中步骤301的具体实现流程图;
图5是根据本发明第三实施方式中分布式集群中的服务端的结构方框图;
图6是根据本发明第四实施方式中服务器的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明第一实施方式涉及一种长连接状态更新方法,具体流程如图1所示,包括:
步骤101,每间隔第一预设时长,获取客户端的在线信息。
步骤102,判断客户端的在线信息是否超时;若是,执行步骤103;若否,结束。
步骤103,将客户端的在线信息更新为离线信息。
下面对本实施方式的长连接状态更新方法的实现细节进行具体的说明,以下内容仅为方便理解提供的细节,并非实施本方案的必须。
本实施方式中,分布式集群中包括若干个服务端,若干个服务端部署运行着相同的服务应用,均可用于响应各客户端的请求,客户端可以与分布式集群中的一服务端建立长连接,一旦客户端与服务端建立连接。当集群中的服务端与任一客户端建立长连接后,会对该长连接的相关信息进行记录,包括在线信息、离线信息等,同时对相关信息记录进行更新,其中在线信息用于表征客户端状态为在线,即长连接可用,离线信息则用于表征客户端已离线,即长连接不可用。
分布式集群中的任一服务端均可获取到各服务端维护的各该长连接的相关信息,由此,可设定分布式集群中的一正常运行的服务端每间隔一定的时间去获取所有与分布式集群中的服务端建立了长连接的各客户端的在线信息,并判断客户端的在线信息是否超时;如果客户端的在线信息已经超时,说明与该客户端建立连接的服务端可能存在故障,导致客户端的在线信息未能得到及时更新,客户端与服务端的长连接已不可用,客户端与分布式集群中的服务端间无法正常进行信息交互,则该服务端可将该客户端的在线信息更新为离线信息。
通过上述方式,分布式集群可实现对各客户端状态的监管,避免了因与客户端建立长连接的服务端发生故障而无法及时更新长连接的相关信息的情况,从而保障了对长连接状态管理的及时性和准确性,也令管理分布式集群的系统能够根据正确的客户端的在线信息或离线信息,进行客户端的业务编排和任务下发等处理操作,有助于客户端和服务端间正常信息交互的开展。
在步骤101中,服务端每间隔第一预设时长,获取与分布式集群中的任一服务端建立了长连接的客户端的在线信息,也就是说,设定集群中一正常运行的服务端定时获取一次所有与分布式集群中的服务端建立了长连接的各客户端的在线信息;此处第一预设时长可根据具体需要进行设置。
本实施方式中,分布式集群可通过设定一数据库来保存相关数据,例如,PgSQL(PostgreSQL)数据库,PgSQL数据库用于存储已与分布式集群中的服务端建立了长连接的客户端的长连接相关信息。集群中的所有服务端都可访问该数据库,并对该数据库进行更新。当服务端与一客户端成功建立长连接后,该服务端会在数据库中添加该客户端的记录,并将该客户端的长连接相关信息设置为在线状态,也就是在PgSQL数据库中创建了该客户端的在线信息。可以理解的是,由于客户端和服务端间需要保持长连接,客户端在与服务端建立长连接后,需要周期性的向服务端发送心跳信息,以保持长连接的有效性;服务端在接收到客户端发送的心跳信息后,确定与该客户端的长连接当前可用,故可在数据库中将该客户端的在线信息进行更新,也就是数据库中存储的是客户端最新的在线信息,若在一超出心跳周期的时长内未接收到某客户端发送的心跳信息,则可在数据库中将该客户端的状态更新为离线,也就是创建该客户端的离线信息,并主动断开与该客户端之间的长连接,通过上述过程,集群中的各服务器可分别维护数据库中与其建立长连接的客户端的记录。
由于集群中的任一正常运行的服务器均可顺利访问上述数据库,因此每间隔第一预设时长可设定分布式集群中的一正常运行的服务端,直接从数据库中获取到所有客户端的最新的在线信息。
在步骤102中,服务端判断获取到的客户端的在线信息是否超时;若获取到的客户端的在线信息已经超时,则需要服务端及时更新客户端的在线信息;若获取到的客户端的在线信息未超时,说明客户端和服务端的长连接仍处于正常状态,无需对客户端的在线信息进行处理。
本实施方式中,在线信息的超时时间,可以是随在线信息同步更新的时刻值。
在一具体实施中,PgSQL数据库中保存的客户端的在线信息,可包含超时时间字段,用于表征该客户端的在线状态的超时时间,服务端在接收到客户端发送的心跳信息后,会在PgSQL数据库中将发送心跳信息的客户端的在线信息进行更新,包括对超时时间进行更新,例如,服务端在2019年8月19日8时10分接收到客户端发送的心跳信息,若超时时长固定设置为5分钟,服务器将对数据库中该客户端的在线信息进行更新,并更新超时时间字段对应的值为2019年8月19日8时15分;若服务端在2019年8月19日8时11分再次接收到该客户端发送的心跳信息,则该客户端的超时时间更新为2019年8月19日8时16分。那么如果在2019年8月19日8时17分,发现该客户端的在线信息中的超时时间仍然为2019年8月19日8时16分,那么可确定该在信息已超时。值得注意的是,记录超时时间的方式并不限于上述示例。在该实施中,每隔第一预设时长来获取客户端在线信息的服务端,可通过查找PgSQL数据库获得具有在线信息记录的客户端,并通过确认该些具有在线信息中的超时时间与当前系统时间的关系,来确定该客户端的在线信息是否超时,若系统时间小于超时时间,则表示该客户端的在线信息未超时,反之确认超时。
在另一具体实施中,分布式集群可通过同时基于上述PgSQL数据库和一Redis数据库来存储各客户端的在线信息。其中,服务器更新PgSQL数据库的方式与上文一致,不再赘述,同样的,集群中的任一正常运行的服务器均可访问Redis数据库,并对其进行更新,具体可包括:服务器与客户端成功建立长连接后,可同时在Redis中添加该客户端的记录,设置该条记录的超时时间,该超时时间用于表征该条记录存在于Redis数据库中的时限,即Redis数据库会基于超时时间对数据记录进行清空。同样的,若在超时时间内,服务器收到来自该客户端的心跳信息,则可更新该超时时间。在该实施中,每隔第一预设时长来获取客户端在线信息的服务端,可通过查找PgSQL数据库获得具有在线信息记录的客户端,并通过确认具有在线记录的客户端是否在Redis数据库中存在记录,来确定该客户端的在线信息是否超时,若在Redis数据库中存在相关记录,则表示该客户端的在线信息未超时,反之确认超时。
本实施方式中,PgSQL数据库和Redis数据库相互辅助管理客户端的在线信息、离线信息及连接状态等;PgSQL数据库还可存储客户端的相关信息,例如客户端的机房信息、客户端所述的企业信息等相关信息,分布式集群可通过PgSQL数据库中存储的相关信息对客户端进行业务编排和任务下发等操作。
在步骤103中,服务端将客户端的在线信息更新为离线信息;结合上述步骤中的描述,可以理解的是服务端在数据库中将存储的客户端的在线信息更新为离线信息,从而管理分布式集群的系统和其他连接至数据库的服务端能够获取到客户端的正确的状态信息。
本实施方式相对于现有技术而言,分布式集群中的一正常运行的服务端每间隔一定的时间从数据库获取所有与分布式集群中的服务端建立了长连接的各客户端的在线信息,并判断客户端的在线信息是否超时;如果客户端的在线信息已经超时,说明与客户端建立长连接的服务端可能存在故障,导致客户端的在线信息未能得到及时更新,客户端与服务端的长连接长连接已不可用,客户端与分布式集群中的服务端间无法正常进行信息交互,则服务端可将该客户端的在线信息更新为离线信息;通过上述方式,分布式集群中的服务端能够实现对客户端状态的监管,避免了因与该客户端建立长连接的服务端发送故障而无法及时更新客户端长连接相关信息的情况,从而保障了对长连接状态管理的及时性和准确性,也令管理分布式集群的系统能够根据正确的客户端的在线信息或离线信息,进行客户端的业务编排和任务下发等处理操作,有助于客户端和服务端间正常信息交互的开展。
本发明第二实施方式涉及一种长连接状态更新方法,本实施方式中,设置了第一定时任务以实现每隔第一预设时长设定一服务器去获取客户端的在线信息,同时还设置了对第一定时任务的监测方式。本实施方式中的长连接状态更新方法的流程图如图2所示,下面对图2的流程做具体说明:
步骤201,每间隔第一预设时长,判定获取到第一定时任务的执行权,锁定第一定时任务,获取客户端的在线信息。
具体地说,分布式集群可每隔第一预设时长设定一正常运行的服务端用于执行第一定时任务,所述第一定时任务可包含获取客户端的在线信息、判断客户端的在线信息是否超时、根据客户端的在线信息的超时情况对客户端的在线信息进行相应的更新等,具体的执行方式可参照图1所示实施例中的说明。
其中,第一定时任务可以理解为存储在与分布式集群中的服务端相连接的数据库中的一条记录,第一定时任务的初始状态为未锁定状态;分布式集群中的每个服务端会每间隔第一预设时长去争取第一定时任务的执行权,当某一服务端获取到第一定时任务的执行权后,才会去获取客户端的在线信息;也就是说,每一个第一预设时长内(即每一个执行周期内)只有一个服务端执行本实施方式中长连接状态更新的方法,避免了服务端同时执行相同操作时可能产生的冲突。
为了保证每一个第一预设时长内只有一个服务端执行本实施方式中长连接状态更新的方法,服务端在获取到第一定时任务的执行权后,锁定第一定时任务,从而其他客户端能够通过已被锁定的第一定时任务,知晓到当前已有其他服务端获取到了第一定时任务的执行权,从而不会再重复执行本实施方式中的长连接状态更新的方法。
另外,本步骤中关于“服务端获取客户端的在线信息”部分的说明与步骤101中的说明大致相同,此处不再赘述。
步骤202,判断客户端的在线信息是否超时;若是,执行步骤203;若否,结束。此步骤与步骤102大致相同,此处不再赘述。
步骤203,将客户端的在线信息更新为离线信息。此步骤与步骤103大致相同,此处不再赘述。
步骤204,解锁第一定时任务。
具体地说,服务端将客户端的在线信息更新为了离线信息,可以视为完成了第一定时任务,则服务端对第一定时任务进行解锁,从而其他客户端能够通过未锁定的第一定时任务,知晓到当前未有其他服务端获取到了第一定时任务的执行权,从而能够正常获取第一定时任务的执行权,并执行本实施方式中的长连接状态更新的方法。
可以理解的是,完成第一定时任务,包括但不限于将客户端的在线信息更新为离线信息;若服务端判定客户端的在线信息未超时,则不对客户端的在线信息进行处理,也可视为服务端完成了第一定时任务,服务端可直接解锁第一定时任务。
另外,本实施方式中,还设置了对第一定时任务的监测方式,用于判断第一定时任务的锁定状态是否超时,对第一定时任务的检测方式的流程图如图3所示,包括:
步骤301,每间隔第二预设时长,判断第一定时任务的锁定状态是否超时;若是,执行步骤302,若否,结束。
步骤302,解锁第一定时任务。
具体地说,由于第一定时任务的执行权被获取到且第一定时任务未被执行完成时,第一定时任务一直处于锁定状态;若第一定时任务长时间处于锁定状态,可能是由于当前锁定第一定时任务的服务端出现故障所致,从而将导致服务端无法正常获取第一定时任务的执行权,也就是服务端无法正常执行本实施方式中的长连接状态更新方法。因此,令分布式集群中(任一或所有)处于正常状态的服务端(即未故障的服务端)每隔第二预设时长,判断第一定时任务的锁定状态是否超时;若第一定时任务的锁定状态超时,则对第一定时任务解锁,避免了第一定时任务长时间处于锁定状态而导致服务端无法正常对长连接的状态进行更新的情况。本实施方式中,第二预设时长大于第一预设时长。
本实施方式中,提供了一种判断第一定时任务的锁定状态是否超时的具体实现方式,即对步骤301的具体实现,流程图如图4所示,包括:
步骤3011,判定第一定时任务处于锁定状态,获取第一定时任务被锁定的时刻。
步骤3012,若第一定时任务被锁定的时刻与当前时间的差值大于第一预设时长,则判定第一定时任务的锁定状态超时。
具体地说,服务端判定第一定时任务当前处于锁定状态,获取第一定时任务被获取了执行权的服务端锁定的具体时刻。可以理解的是,若服务端判定到第一定时任务当前未被锁定,则结束对第一定时任务的监测。在服务端获取到第一定时任务被获取了执行权的服务端锁定的具体时刻后,计算第一定时任务的锁定时刻和当前时间的差值,若差值大于第一预设时长,说明第一定时任务在被锁定时至今一直处于被锁定状态,从而服务端判定第一定时任务的锁定状态超时,服务端对第一定时任务进行解锁。
在一个实例中,第一预设时长为3分钟,第二预设时长为5分钟;服务端每间隔5分钟去获取第一定时任务是否处于锁定状态,若判定到第一定时任务处于锁定状态,则获取第一定时任务被锁定的时刻,当前获取到第一定时任务被锁定的时刻为2019年8月19日8时10分,当前时间为2019年8月19日8时15分,则第一定时任务被锁定的时长为5分钟,大于第一预设时长3分钟,从而服务端判定第一定时任务的锁定状态超时,对第一定时任务解锁。
在一具体实施中,可在PgSQL数据库中存储第一定时任务的一条记录,该记录的初始锁定状态为未加锁,设定分布式集群中的各正常运行的服务端去争抢该第一定时任务的执行权,最先抢到该第一定时任务执行权的服务器,可执行该第一任务,并同时将PgSQL数据库中该第一定时任务的锁定状态改为已加锁;其他服务器在执行该第一定时任务前,发现该任务已被加锁,则丢弃该任务,以这种方式保证在一次执行周期内,只有一台服务端执行该定时任务。抢到执行权的服务端在执行完第一定时任务后,再将锁定状态改为未加锁。
在一具体实施中,如果抢到执行权的服务端在将该任务加锁之后宕机了,无法将该任务的锁定状态解锁,会导致永久解锁不了,因此可新增一个定时任务,用来检测上述定时任务锁。例如,每隔五分钟,所有服务端会查询PgSQL数据库中第一定时任务的开始时间,如果现在当前系统时间减去开始时间大于五分钟,并且任务处于锁定状态,说明任务执行超时,将任务解锁掉,如此,可防止服务端在锁定任务后宕机导致该任务被永久锁住无法执行。
本实施方式相对于现有技术而言,设置了第一定时任务,当服务端在每间隔第一预设时长获取到第一定时任务的执行权时,才执行本实施方式中的长连接状态更新方法,也就是在一个第一预设时长内只有一个服务端执行上述长连接状态更新方法,避免了服务端同时执行相同操作时可能产生的冲突。另外,还令服务端每间隔第二预设时长,对第一定时任务的锁定状态是否超时进行判断,若判定到第一定时任务的锁定状态超时,就对第一定时任务进行解锁,避免了第一定时任务长时间处于锁定状态而无法被服务端正常获取第一定时任务的执行权的情况,也就是避免了服务端无法正常对长连接的状态进行更新的情况。
本发明第三实施方式涉及一种分布式集群中的服务端,如图5所示,包括:获取模块501,判断模块502和更新模块503。
获取模块501,用于每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;
判断模块502,用于判断所述客户端的在线信息是否超时;
更新模块503,用于在所述客户端的在线信息已超时时,将所述客户端的在线信息更新为离线信息。
在一个实例中,在所述获取模块501获取客户端的在线信息前,所述获取模块501还用于判定获取到第一定时任务的执行权;其中,在所述获取到第一定时任务的执行权前,所述第一定时任务处于未锁定状态;在所述获取到第一定时任务的执行权后,锁定所述第一定时任务,并执行所述第一定时任务,所述执行所述第一定时任务包括:获取客户端的在线信息;在完成所述第一定时任务后,解锁所述第一定时任务;其中,完成所述第一定时任务,包括:所述更新模块503若判定所述客户端的在线信息已超时,则将所述客户端的在线信息更新为离线信息。
在一个实例中,所述判断模块502还用于:每间隔第二预设时长,判断所述第一定时任务的锁定状态是否超时;若所述第一定时任务的锁定状态超时,则解锁所述第一定时任务;其中,所述第二预设时长大于所述第一预设时长。
在一个实例中,所述判断模块502判断所述第一定时任务的锁定状态是否超时,包括:判定所述第一定时任务处于锁定状态,获取所述第一定时任务被锁定的时刻;若所述第一定时任务被锁定的时刻与当前时间的差值大于所述第一预设时长,则判定所述第一定时任务的锁定状态超时。
在一个实例中,所述获取模块501获取客户端的在线信息,包括:从所述服务端连接的第一数据库中获取客户端的在线信息;其中,所述客户端的在线信息由与所述客户端建立长连接的服务端在所述第一数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的在线信息,并根据接收所述客户端发送的心跳信息的情况对所述在线信息进行更新。
在一个实例中,所述客户端的在线信息中包括所述客户端的超时时间;所述判断模块502判断所述客户端的在线信息是否超时,包括:从所述第一数据库中获取所述客户端的在线信息的超时时间,根据所述客户端的在线信息的超时时间,判断所述客户端的在线信息是否超时;其中,所述客户端的在线信息的超时时间由与所述客户端建立长连接的服务端在接收到所述客户端发送的心跳信息后在所述数据库中进行更新。
在一个实例中,所述判断模块502判断所述客户端的在线信息是否超时,包括:从所述第一数据库中获取具有在线信息的客户端;判断与所述服务端连接的第二数据库中是否存储有所述具有在线信息的客户端的记录,若否,判定所述客户端的在线信息已超时;其中,所述具有在线信息的客户端的记录由与所述客户端建立长连接的服务端在所述第二数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的记录,并设置所述记录的超时时间,所述服务端在到达超时时间时未接收到所述客户端发送的心跳信息则清空所述客户端的记录。
在一个实例中,若所述判断模块502判定所述客户端的在线信息已超时,则所述更新模块503将所述客户端的连接信息更新为断开信息。
不难发现,本实施方式为与第一实施方式或第二实施方式的相对应装置的实施例,本实施方式可与第一实施方式或第二实施方式互相配合实施,第一实施方式或第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,此处不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第一实施方式或第二实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种服务器,如图6所示,包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行上述长连接状态更新方法。
其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器602的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。
处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述长连接状态更新方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (11)
1.一种长连接状态更新方法,其特征在于,应用于分布式集群中的服务端,所述分布式集群包括若干个服务端,所述方法包括:
每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;
判断所述客户端的在线信息是否超时;若所述客户端的在线信息已超时,则将所述客户端的在线信息更新为离线信息。
2.根据权利要求1所述的长连接状态更新方法,其特征在于,在所述获取客户端的在线信息前,还包括:
判定获取到第一定时任务的执行权;其中,在所述获取到第一定时任务的执行权前,所述第一定时任务处于未锁定状态;在所述获取到第一定时任务的执行权后,锁定所述第一定时任务,并执行所述第一定时任务,所述执行所述第一定时任务包括:获取客户端的在线信息;
所述方法还包括:在完成所述第一定时任务后,解锁所述第一定时任务;其中,完成所述第一定时任务包括:若判定所述客户端的在线信息已超时,则将所述客户端的在线信息更新为离线信息。
3.根据权利要求2所述的长连接状态更新方法,其特征在于,还包括:
每间隔第二预设时长,判断所述第一定时任务的锁定状态是否超时;
若所述第一定时任务的锁定状态超时,则解锁所述第一定时任务;
其中,所述第二预设时长大于所述第一预设时长。
4.根据权利要求3所述的长连接状态更新方法,其特征在于,所述判断所述第一定时任务的锁定状态是否超时,包括:
判定所述第一定时任务处于锁定状态,获取所述第一定时任务被锁定的时刻;
若所述第一定时任务被锁定的时刻与当前时间的差值大于所述第一预设时长,则判定所述第一定时任务的锁定状态超时。
5.根据权利要求1所述的长连接状态更新方法,其特征在于,所述获取客户端的在线信息,包括:
从所述服务端连接的第一数据库中获取客户端的在线信息;其中,所述客户端的在线信息由与所述客户端建立长连接的服务端在所述第一数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的在线信息,并根据接收所述客户端发送的心跳信息的情况对所述在线信息进行更新。
6.根据权利要求5所述的长连接状态更新方法,其特征在于,所述客户端的在线信息中包括所述客户端的超时时间;
所述判断所述客户端的在线信息是否超时,包括:
从所述第一数据库中获取所述客户端的在线信息的超时时间,根据所述客户端的在线信息的超时时间,判断所述客户端的在线信息是否超时;
其中,所述客户端的在线信息的超时时间由与所述客户端建立长连接的服务端在接收到所述客户端发送的心跳信息后进行更新。
7.根据权利要求5所述的长连接状态更新方法,其特征在于,所述判断所述客户端的在线信息是否超时,包括:
从所述第一数据库中获取具有在线信息的客户端;
判断与所述服务端连接的第二数据库中是否存储有所述具有在线信息的客户端的记录,若否,判定所述客户端的在线信息已超时;
其中,所述具有在线信息的客户端的记录由与所述客户端建立长连接的服务端在所述第二数据库中进行创建和更新,所述服务端在与所述客户端建立所述长连接时创建所述客户端的记录,并设置所述记录的超时时间,所述服务端在到达超时时间时未接收到所述客户端发送的心跳信息则清空所述客户端的记录。
8.根据权利要求1所述的长连接状态更新方法,其特征在于,还包括:若判定所述客户端的在线信息已超时,则将所述客户端的连接信息更新为断开信息。
9.一种分布式集群中的服务端,其特征在于,包括:
获取模块,用于每间隔第一预设时长,获取客户端的在线信息;其中,所述客户端为与所述分布式集群中的任一服务端建立长连接的客户端;
判断模块,用于判断所述客户端的在线信息是否超时;
更新模块,用于在所述客户端的在线信息已超时时,将所述客户端的在线信息更新为离线信息。
10.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8中任一项所述的长连接状态更新方法。
11.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任一项所述的长连接状态更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910776633.4A CN110572443B (zh) | 2019-08-22 | 2019-08-22 | 长连接状态更新方法、服务端、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910776633.4A CN110572443B (zh) | 2019-08-22 | 2019-08-22 | 长连接状态更新方法、服务端、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110572443A true CN110572443A (zh) | 2019-12-13 |
CN110572443B CN110572443B (zh) | 2022-05-13 |
Family
ID=68774280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910776633.4A Active CN110572443B (zh) | 2019-08-22 | 2019-08-22 | 长连接状态更新方法、服务端、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110572443B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111372130A (zh) * | 2020-03-02 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 一种用户在线时长统计方法、装置、电子设备及存储介质 |
CN112100029A (zh) * | 2020-09-04 | 2020-12-18 | 北京浪潮数据技术有限公司 | 客户端状态监测方法及相关组件 |
CN112417255A (zh) * | 2020-11-19 | 2021-02-26 | 青岛海尔科技有限公司 | 在线状态的接收方法及装置、存储介质、电子装置 |
CN112969064A (zh) * | 2021-02-08 | 2021-06-15 | 智洋创新科技股份有限公司 | 一种基于Redis缓存超时的设备在线状态计算方法 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
CN115022393A (zh) * | 2022-05-11 | 2022-09-06 | 杭州网易云音乐科技有限公司 | 确定连接状态的方法、装置、介质和计算设备 |
CN115913787A (zh) * | 2023-02-16 | 2023-04-04 | 国网浙江省电力有限公司 | 适用于电力数据的文件加解密传输方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475753A (zh) * | 2013-09-29 | 2013-12-25 | 北京奇虎科技有限公司 | 数据传输方法、设备及系统 |
CN105515900A (zh) * | 2015-12-07 | 2016-04-20 | 北京奇虎科技有限公司 | 一种获取终端在线状态的方法及装置 |
CN106131085A (zh) * | 2016-08-31 | 2016-11-16 | 江苏蓝创智能科技股份有限公司 | 远程智控系统的通信方法 |
CN106921454A (zh) * | 2017-02-14 | 2017-07-04 | 刘恒茂 | 一种安全广播系统的控制方法 |
CN107290986A (zh) * | 2016-04-11 | 2017-10-24 | 趣之科技(深圳)有限公司 | 一种基于互联网云服务的远程机器人实时消息推送方法、系统和装置 |
-
2019
- 2019-08-22 CN CN201910776633.4A patent/CN110572443B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475753A (zh) * | 2013-09-29 | 2013-12-25 | 北京奇虎科技有限公司 | 数据传输方法、设备及系统 |
CN105515900A (zh) * | 2015-12-07 | 2016-04-20 | 北京奇虎科技有限公司 | 一种获取终端在线状态的方法及装置 |
CN107290986A (zh) * | 2016-04-11 | 2017-10-24 | 趣之科技(深圳)有限公司 | 一种基于互联网云服务的远程机器人实时消息推送方法、系统和装置 |
CN106131085A (zh) * | 2016-08-31 | 2016-11-16 | 江苏蓝创智能科技股份有限公司 | 远程智控系统的通信方法 |
CN106921454A (zh) * | 2017-02-14 | 2017-07-04 | 刘恒茂 | 一种安全广播系统的控制方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111372130B (zh) * | 2020-03-02 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 一种用户在线时长统计方法、装置、电子设备及存储介质 |
CN111372130A (zh) * | 2020-03-02 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 一种用户在线时长统计方法、装置、电子设备及存储介质 |
CN112100029A (zh) * | 2020-09-04 | 2020-12-18 | 北京浪潮数据技术有限公司 | 客户端状态监测方法及相关组件 |
CN112100029B (zh) * | 2020-09-04 | 2022-07-08 | 北京浪潮数据技术有限公司 | 客户端状态监测方法及相关组件 |
CN112417255B (zh) * | 2020-11-19 | 2023-06-20 | 青岛海尔科技有限公司 | 在线状态的接收方法及装置、存储介质、电子装置 |
CN112417255A (zh) * | 2020-11-19 | 2021-02-26 | 青岛海尔科技有限公司 | 在线状态的接收方法及装置、存储介质、电子装置 |
CN112969064A (zh) * | 2021-02-08 | 2021-06-15 | 智洋创新科技股份有限公司 | 一种基于Redis缓存超时的设备在线状态计算方法 |
CN113542359A (zh) * | 2021-06-17 | 2021-10-22 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113542359B (zh) * | 2021-06-17 | 2023-09-05 | 聚好看科技股份有限公司 | 一种线上会议中的终端状态更新方法、装置及电子设备 |
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
CN113905005B (zh) * | 2021-09-30 | 2023-05-23 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
CN115022393A (zh) * | 2022-05-11 | 2022-09-06 | 杭州网易云音乐科技有限公司 | 确定连接状态的方法、装置、介质和计算设备 |
CN115022393B (zh) * | 2022-05-11 | 2024-05-17 | 杭州网易云音乐科技有限公司 | 确定连接状态的方法、装置、介质和计算设备 |
CN115913787A (zh) * | 2023-02-16 | 2023-04-04 | 国网浙江省电力有限公司 | 适用于电力数据的文件加解密传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110572443B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110572443B (zh) | 长连接状态更新方法、服务端、服务器及存储介质 | |
CN108810100B (zh) | 一种主节点的选举方法、装置及设备 | |
CN109656172B (zh) | 一种获取波特率的方法、装置 | |
US20050132154A1 (en) | Reliable leader election in storage area network | |
CN101196840A (zh) | 配置数据镜像的系统和方法 | |
CN108183971B (zh) | 一种分布式系统中的节点选举方法 | |
CN103414916A (zh) | 一种故障诊断系统及方法 | |
CN113824760B (zh) | 文件并发分块上传方法、装置、电子设备及存储介质 | |
JP2017118487A (ja) | 通信システムで実行される情報集約方法 | |
CN110868313A (zh) | 一种巡检方法、相关装置及可读存储介质 | |
CN114268532A (zh) | 一种基于Raft协议的竞选方法、分布式系统及存储介质 | |
CN107592199B (zh) | 一种数据同步的方法和系统 | |
CN110290002B (zh) | 一种更新方法、终端及电子设备 | |
CN110275793B (zh) | 一种用于MongoDB数据分片集群的检测方法及设备 | |
CN116643775A (zh) | 一种车辆ota升级控制方法及相关设备 | |
CN109240259B (zh) | 车辆诊断方法、装置、设备及存储介质 | |
CN108388108B (zh) | 一种多重冗余控制系统中同步数据的方法及装置 | |
CN109450757B (zh) | 一种CANopen主站的启动方法及其统筹管理器 | |
CN112835598B (zh) | 一种汽车ecu刷写方法及其系统、计算机可读存储介质 | |
CN111190913A (zh) | 一种分布式锁实现方法及系统 | |
CN107171915B (zh) | 一种通信协议的变更方法及装置 | |
CN113783649B (zh) | 终端校时方法、系统、电子设备及存储介质 | |
EP2988476A1 (en) | Method and apparatus for processing operation on endpoint peripheral | |
CN112433968B (zh) | 一种控制器共享同步方法和装置 | |
CN112039681A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |