CN112417349A - 一种编程装置、网络状态监控方法 - Google Patents

一种编程装置、网络状态监控方法 Download PDF

Info

Publication number
CN112417349A
CN112417349A CN202010893184.4A CN202010893184A CN112417349A CN 112417349 A CN112417349 A CN 112417349A CN 202010893184 A CN202010893184 A CN 202010893184A CN 112417349 A CN112417349 A CN 112417349A
Authority
CN
China
Prior art keywords
client
server
session control
module
request
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
Application number
CN202010893184.4A
Other languages
English (en)
Other versions
CN112417349B (zh
Inventor
韩志华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202010893184.4A priority Critical patent/CN112417349B/zh
Publication of CN112417349A publication Critical patent/CN112417349A/zh
Application granted granted Critical
Publication of CN112417349B publication Critical patent/CN112417349B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种编程装置、网络状态监控方法,其中所述编程装置配置于服务器,包括反应器模块、状态管理模块、事件处理模块和请求应答模块;所述反应器模块,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件;所述状态管理模块,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件;所述事件处理模块,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件;所述请求应答模块,被配置为返回业务事件的处理结果。本申请提供的编程装置通过状态管理模块监控节点状态,没有第三方依赖,小巧简单,方便使用。

Description

一种编程装置、网络状态监控方法
技术领域
本申请涉及计算机技术领域,特别涉及一种编程装置、网络状态监控方法、计算设备和计算机可读存储介质。
背景技术
非阻塞式I/O(NIO)是JavaSE1.4版本后推出的针对网络传输效能优化的新功能,相应的,NIO编程框架也被开发用于相应的程序开发。
目前的开源NIO编程框架采用反应器模式来实现非阻塞式I/O,但是目前的开源NIO框架无法直接检测客户端与服务器的连接状态,在需要了解连接双方的连接状态时,需要引入第三方软件进行状态监控,但是当引入第三方软件时,还需要调用与第三方软件相关的多个关联库,这样势必会引入一些不必要的依赖,也会导致网络分区的问题,同时目前开源的NIO编程框架的代码实现相对复杂,编程框架的体积较大,若再引入与第三方软件相关的多个关联库,会进一步增加编程框架的体量。
因此,如何解决上述问题,就成为技术人员需要面对的问题。
发明内容
有鉴于此,本申请实施例提供了一种编程装置、网络状态监控方法、计算设备和计算机可读存储介质,以解决现有技术中编程装置无法实施检测客户端与服务器连接状态,且体量大、代码复杂的问题。
根据本申请实施例的第一方面,提供了一种编程装置,配置于服务器,包括:包括反应器模块、状态管理模块、事件处理模块和请求应答模块;
所述反应器模块,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件;
所述状态管理模块,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件;
所述事件处理模块,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件;
所述请求应答模块,被配置为返回业务事件的处理结果。
根据本申请实施例的第二方面,提供了一种网络状态监控方法,应用于编程装置,包括:
接收客户端发送的与服务器的业务请求;
基于所述业务请求通过注册会话控制建立所述客户端与所述服务器之间的网络连接,其中,所述会话控制包括会话控制标识;
将所述会话控制标识发送至所述客户端,并将所述会话控制标识保存至所述服务器;
监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述网络状态监控方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述网络状态监控方法的步骤。
本申请实施例中提供的编程装置,包括反应器模块、状态管理模块、事件处理模块和请求应答模块;其中,所述反应器模块,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件,可以同步处理客户端的业务请求,提高编程装置的处理能力;所述状态管理模块,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件,使得客户端与服务器能够知晓彼此的状态,当客户端和/或服务器发生下线、重启等情况时,可以彼此知晓对方的状态事件,所述事件处理模块,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件,事件处理模块是整个编程装置的核心模块,处理各种业务事件;所述请求应答模块,被配置为返回业务事件的处理结果,当业务事件处理完成后,将处理结果返回给客户端,本申请提供的编程装置,没有第三方依赖,小巧、简洁、使用简单,内嵌状态管理模块可以实时监控通信节点状态,并在节点重启变更时发出通知,方便使用。
附图说明
图1是本申请实施例提供的编程装置的架构示意图;
图2是本申请实施例提供的编程装置的功能示意图;
图3是本申请实施例提供的编程装置的组件示意图;
图4是本申请实施例提供的网络状态监控方法的流程图;
图5是本申请实施例提供的网络状态监控方法的交互图;
图6是本申请实施例提供的计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
NIO:非阻塞式I/O,是Java SE1.4版以后,针对网络传输效能优化的新功能。
反应器模式:Reactor模式,是一种处理一个或多个客户端并发交付服务请求的事件设计模式,当请求抵达后,服务处理程序使用I/O多路复用侧率,然后同步地派发这些请求至相关的请求处理程序。
NIO编程框架:采用Reactor模式来实现的非阻塞式编程框架。
业务请求:与上层业务相关的请求,如写请求、读请求等。
业务事件:与业务请求对应的事件,如写请求对应的写事件,读请求对应的读事件。
在本申请中,提供了一种编程装置、网络状态监控方法、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
下面结合图1和图2对本申请实施例提供的编程装置做进一步解释说明,图1示出了本身申请一实施例提供的编程装置的架构示意图,图2示出了本申请一实施例提供的编程装置的功能示意图,所述编程装置的底层功能包括配置管理、超时管理、状态管理、事件处理以及多个反应器,所述编程装置的上层功能包括协议配置、重连管理、服务调用以及请求应答。
如图1所示,所述编程装置包括反应器模块102、状态管理模块104、事件处理模块106和请求应答模块108;
所述反应器模块102,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件。
业务请求为客户端发送至服务器的请求,如登录请求、连接请求、读请求、写请求、心跳请求等。
反应器模式是一种处理一个或多个客户端并发交付给服务处理程序的服务请求,当请求到达后,服务处理程序通过多路复用策略同步地将这些请求分派给相关的请求处理程序。
反应器模块102对应图2所示底层功能中的反应器,用于每个反应器实例的管理,其中每个反应器包括selector、channel、buffer。
在本申请提供的一具体实施方式中,反应器模块接收客户端发送的与服务器进行连接的连接请求,将所述连接请求交付给服务处理程序,服务处理程序触发所述连接请求对应的连接事件。
所述状态管理模块104,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件。
可选的,所述状态管理模块,进一步被配置为:
基于所述业务请求通过注册会话控制建立所述客户端与所述服务器之间的网络连接,其中,所述会话控制包括会话控制标识;
监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态。
通过编程装置在服务器中注册会话控制,进而与客户端进行连接,可以直接用编程装置对客户端与服务器的状态进行监控,无需引入第三方监控软件,减少了编程装置的代码量,使用便捷。
在实际应用中,客户端与服务器建立连接时,在服务器注册与所述客户端对应的会话控制,并为所述会话控制分配唯一的会话控制标识,所述客户端与所述服务器通过所述会话控制来保持连接,会话控制存储所述客户端与所述服务器交互所需的属性及配置信息,存储在会话控制中的变量不会丢失,直至所述会话控制过期或被放弃。
客户端与服务器之间的连接一般为长连接,如TCP长连接。
可选的,所述状态管理模块,进一步被配置为:
监控所述客户端发送至所述服务器的业务请求或心跳请求。
交互请求包括客户端发送至服务器的业务请求或心跳请求,业务请求用于处理对应的业务,心跳请求用于检测客户端与服务器的连接情况。
所述状态管理模块实施监控所述客户端发送至所述服务器的交互请求,具体的,所述状态管理模块,进一步被配置为:
解析所述客户端发送的与所述服务器的目标交互请求;
在未获取到所述目标交互请求中携带的会话控制标识的情况下,确定所述客户端已经重启;
在获取到所述目标交互请求中携带的会话控制标识的情况下,判断所述目标交互请求中携带的会话控制标识与所述服务器中保存的会话控制标识是否相同;
若是,则确定所述客户端与所述服务器保持连接;
若否,则确定所述服务器已经重启。
在实际应用中,当会话控制已经注册后,所述会话控制对应的会话控制标识会对应发送到客户端中,同时所述会话控制标识还会被保存在所述服务器的内存中,客户端每次再发送与服务器的交互请求时均会携带所述会话控制标识,所述状态管理模块通过解析客户端发送至服务器的目标交互请求,以获取所述目标交互请求中携带的会话控制标识,通过判断目标交互请求中携带的会话控制标识是否与保存在所述服务器内存中的会话控制标识相同来确定客户端与服务器的连接状态。
若在解析目标交互请求后,未获取到所述目标交互请求中携带的会话控制标识,则说明会话控制标识在所述客户端丢失,确定所述客户端发生过重启。
若在解析目标交互请求后,获取到所述目标交互请求中携带的会话控制标识,则进一步的判断目标交互请求中携带的会话控制标识与服务器内存中保存的会话控制标识是否相同,若是,则可以确定所述客户端与所述服务器之间一直在保持长连接,若否,则可以确定所述服务器已经重启,因为当服务器重启后,保存在服务器内存中的数据将会丢失,因此目标交互请求中携带的会话控制标识与服务器内存中的会话控制标识不同。
可选的,所述状态管理模块实施监控所述客户端发送至所述服务器的交互请求,具体的,所述状态管理模块,进一步被配置为:
在预设时间区间内未接收到所述客户端发送的与所述服务器的目标交互请求的情况下,确定所述客户端下线。
具体的,在实际应用中,若在预设的时间区间内,如半个小时,一个小时等,未接收到所述客户端发送的目标交互请求,如读请求、写请求、心跳请求等,则可以认定所述客户端已经下线,与所述服务器断开连接,心跳请求用来检测一个系统是否存活或网络链路是否通畅的一种方式,一般是定时的向被检测系统发送心跳包,被检测系统收到心跳包后进行回复,收到回复则说明对方存活,心跳请求能检测长连接是否正常,若连接出现中断可以尽快通知对方,做些其他的措施来保证系统的正常运行。
在本申请中提供的实施例中,以客户端发送的心跳包为例,客户端定时向服务器发送心跳包,检测客户端与服务器的长连接,心跳包中携带会话控制标识,状态管理模块解析所述心跳包,若未获取到所述心跳包中携带的会话控制标识,说明保存在客户端的会话控制标识丢失,客户端发生过重启,若获取到所述心跳包中携带的会话控制标识,则将心跳包中携带的会话控制标识与保存在服务器内存中的会话控制标识进行比对,若两者相同,则客户端与服务器保持长连接,若两者不同则说明服务器中保存的会话控制标识丢失,所述服务器发生过重启。
根据确定所述客户端与所述服务器之间的网络连接状态后,根据监控结果触发对应的业务事件,可选的,所述状态管理模块,进一步被配置为:
在确定所述客户端已经重启的情况下,触发客户端重启事件;或
在确定所述服务器已经重启的情况下,触发服务器重启事件;或
在确定所述客户端下线的情况下,触发客户端下线事件。
在实际应用中,客户端重启事件、服务器重启事件、客户端下线事件等均可以统称为节点变更事件,根据监控结果即可确定对应的业务事件,如节点变更事件、超时事件、过期事件等。
所述状态管理模块104对应图2所示底层功能中的状态管理功能,包括会话控制初始化、会话控制管理以及触发节点状态变更事件。
所述事件处理模块106,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件。
所述事件处理模块106对应图2所示底层功能中的事件处理功能,事件处理模块是所述编程装置的核心,用于处理编程装置中的发生的事件,如接受事件、连接事件、读事件、写事件、超时事件以及节点状态变更事件等。
在本申请提供的实施例中,以客户端连接服务器为例,根据客户端发送的连接请求,触发对应的连接事件,则事件处理模块处理所述连接事件,建立所述客户端与所述服务器的长连接。
所述请求应答模块108,被配置为返回业务事件的处理结果。
可选的,所述请求应答模块,进一步被配置为:
将所述会话控制标识发送至所述客户端,并将所述会话控制标识保存至所述服务器。
在实际应用中,在服务器中注册与客户端对应的会话控制生成会话控制标识后,会将所述会话控制标识发送至客户端,同时将所述会话控制标识保存至服务器的内存中,所述会话控制标识用于检查客户端和服务器之间的连接状态。
所述请求应答模块对应图2所示上层功能中的请求应答功能,用于为每个请求设置对应的请求处理器,并返回业务时间的处理结果。
可选的,所述编程装置还包括:配置管理模块、超时管理模块、协议配置模块、服务调用模块、重连管理模块、请求应答模块;
所述配置管理模块,被配置为配置所述编程装置的设置参数。
所述配置管理模块对应图2所示底层功能中的配置管理功能,用于读写、派发线程模型,接收报文的Buffer模型、超时阈值设置、Mertic设置等。
所述超时管理模块,被配置为管理所述编程装置中的超时任务。
所述超时管理模块对应图2所示底层功能中的超时管理功能,用于管理Channel空闲、过期超时任务,以及上层业务超时任务。
所述协议配置模块,被配置为配置业务对应的通信协议。
所述协议配置模块对应图2所示上层功能中的协议配置功能,用于灵活定制通信协议,实现编码解码接口。
所述服务调用模块,被配置为为业务事件提供服务调用接口。
所述服务调用模块对应图2所示上层功能中的服务调用功能,用于支持同步、异步、异步+listener、oneway多种服务调用方式,当节点状态发生变化时,提供调用接口,方便上层业务处理节点状态对应的业务事件。
所述重连管理模块,被配置为在所述客户端与所述服务器断开连接的情况下,重新建立所述客户端与所述服务器连接。
所述重连管理模块对应图2所示上层功能中的重连管理功能,针对客户端,在网络连接异常断开时能自动修复,重新连接。
本申请实施例提供的编程装置,包括反应器模块、状态管理模块、事件处理模块和请求应答模块;其中,所述反应器模块,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件,可以同步处理客户端的业务请求,提高编程装置的处理能力;所述状态管理模块,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件,使得客户端与服务器能够知晓彼此的状态,当客户端和/或服务器发生下线、重启等情况时,可以彼此知晓对方的状态事件,所述事件处理模块,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件,事件处理模块是整个编程装置的核心模块,处理各种业务事件;所述请求应答模块,被配置为返回业务事件的处理结果,当业务事件处理完成后,将处理结果返回给客户端,本申请提供的编程装置,没有第三方依赖,小巧、简洁、使用简单,内嵌状态管理模块可以实时监控通信节点状态,并在节点重启变更时发出通知,方便使用,标准化的请求应答编程装置,便于后续扩展,使用方便。
本申请实施例提供的编程装置还包括配置管理模块、超时管理模块、协议配置模块、服务调用模块、重连管理模块、请求应答模块,本申请提供的编程装置的配置项完整,可以灵活定制各项通信协议,业务层的通信支持同步、异步、异步+listener、oneway等多种方式,功能丰富。
图3示出了本申请一实施例提供的编程装置的组件示意图。所述编程装置包括上层组件和底层组件,所述编程装置还包括服务器和客户端。如图所示,在底层组件中包括:
控制器(Controller)组件,所述控制器组件分为服务器控制器3022(ServerController)和客户端控制器3024(ClientController),服务器控制器3022通过bind启动服务,客户端控制器3024通过connect启动服务,服务器控制器3022关联一个反应器管理器3042(ReactorManager),客户端控制器3024关联一个反应器管理器3044(ReactorManager)。
反应器管理器3042和反应器管理器3044分别位于服务器和客户端,反应器管理器3042用来管理多个反应器3062(Reactor),反应器管理器3044用来管理多个反应器3064(Reactor),反应器管理器对各自的反应器进行初始化。
反应器3062和反应器3064分别进行轮询,并触发事件。在实际应用中,通过反应器3062和反应器3064监控会话控制,从而确定节点状态,通过上层的业务层通信组件实现同步、异步、oneway等多种通信方式。
通道3082(Channel)和通道3084(Channel)分别关联一个套接字通道(SocketChannel),并关联读写进程模型。
编解码3102和编解码3104为编解码服务(Encoder/Decoder),支持网络报文和业务对象互相转换。
句柄(Handle)用于事件处理,具体为:
对于读事件(read),交给读线程模型处理,在完成编解码服务后,完成编解码后交给Handle处理。
对于写事件(write),交给写线程模型处理,通过通道发送至网卡。
对于接收事件(Accept),由服务器控制器3022建立对应的通道3082,并将通道注册至反应器3062。
对于连接事件(Connect),由客户端控制器3024建立对应的通道3084,并将通道3084注册至反应器3064。
对于通道(Channel)的空闲/过期事件,直接交由句柄处理。
对于业务超时事件,发送至读线程模型处理。
所述编程装置在上层组件中包括:
装置组件,所述装置组件包括装置服务器3122和装置客户端3124,所述装置服务器3122关联底层组件中的服务器控制器3022,所述装置客户端3124关联底层组件中的客户端控制器3024。
装置服务器3122和装置客户端3124分别连接一个Connect选择器(ConnectSelector),编程装置管理多个Connect,通过Connect选择器选择业务层通信(Connection),服务器的业务层通信连接服务器中的通道3082,客户端的业务层通信连接客户端中的通道3084。
服务器和客户段的业务层通信包括多种,有同步调用、异步调用、Oneway调用等。
同步调用,阻塞当前调用线程,并关联一个返回值(CallBack)。
异步调用,不阻塞当前调用线程,并关联一个返回值(CallBack),由该返回值触发Listener。
Oneway,不阻塞当前调用线程,如果成功发送本地网卡即返回。
业务层通信还分别连接一个返回值管理,用于关联同步、异步调用的返回值。
装置服务器3122和装置客户端3124还分别连接一个分组管理器,分组管理用与管理多个业务层通信(Connection)。
装置客户端3124还连接一个重连管理器(ReConnectionManager),用于重连管理,需要注意的是,重新连接是由客户端发起的。
装置服务器3122和装置客户端3124还分别连接一个装置上下文(Context),装置上下文为编程装置的上下文,包括RequestProcess Map。
本申请实施例提供的编程装置的组件图,详细解释说明了本申请实施例提供的编程装置的构成组件,所述编程装置组件简单,引用清晰,配置项完整,支持同步、异步、oneway等多种通信方式,使用标准的request-response通信架构,便于调用,本申请提供的编程装置,通过反应器实时检查会话控制是否超时、过期,可以在编程装置内直接监控节点状态,便于及时知晓节点的变更情况,并且编程装置整体小巧简单,没有第三方依赖,应用逻辑清晰,使用简单。
参见图4,图4示出了根据本申请一实施例提供的网络状态监控方法的流程图,所述方法应用于编程装置,具体包括以下步骤402至步骤408:
步骤402:接收客户端发送的与服务器的业务请求。
业务请求为客户端向服务器发送的,用于在客户端与服务器之间建立连接,在客户端希望与服务器建立连接时,由客户端向服务器发起业务请求。
在本申请实施例提供的一具体实施方式中,以客户端C与服务器S之间建立连接为例,客户端C向服务器S发送连接请求Connect,编程装置配置于服务器,装置服务器接收所述连接请求Connect。
步骤404:基于所述业务请求通过注册会话控制建立所述客户端与所述服务器之间的网络连接,其中,所述会话控制包括会话控制标识。
响应于所述业务请求,在服务器中注册一个会话控制(Session),同时获得服务器分配的与所述会话控制对应的会话控制标识(SessionId)。所述Session用于所述客户端与所述服务器之间的通信,所述客户端与所述服务器之间保持TCP长连接。
在本申请实施例提供的一具体实施方式中,沿用上例,服务器S响应于连接请求Connect注册与客户端C对应的会话控制Session1,同时生成会话控制Session1唯一对应的会话控制标识S1,此时服务器S与客户端C之间建立了TCP长连接。
步骤406:将所述会话控制标识发送至所述客户端,并将所述会话控制标识保存至所述服务器。
在生成SessionId后,将所述SessionId发送至客户端,便于客户端在后续的交互请求中携带所述SessionId;同时将所述SessionId保存至所述服务器,具体的,将所述SessionId保存至服务器的内存中,便于通过SessionId监控服务器的状态。
在本申请实施例提供的一具体实施方式中,沿用上例,服务器将生成的会话控制标识S1发送至客户端C,同时将会话控制标识S1保存至服务器的内存中。
步骤408:监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态。
所述交互请求包括客户端发送至服务器的业务请求或心跳请求,业务请求为客户端向服务器发送的与业务相关的请求,如读请求,写请求等,心跳请求为客户端向服务器发送的用于判断双方之间通讯链路是否断开的请求,即客户端每隔一段时间向服务器发送一个很小的心跳包,心跳包中的内容不限,可以为时间戳,可以为固定标识等,若服务器回复与所述心跳包对应的信息,则确定客户端与服务器之间保持连接,若在预设时间内未接收到服务器回复的信息,则可以认定服务器已经断开连接,若服务器在预设的时间内未接收到客户端发送的心跳请求,则可以认定客户端已经断开连接。
可选的,监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态,包括:
解析所述客户端发送的与所述服务器的目标交互请求;
在未获取到所述目标交互请求中携带的会话控制标识的情况下,确定所述客户端已经重启;
在获取到所述目标交互请求中携带的会话控制标识的情况下,判断所述目标交互请求中携带的会话控制标识与所述服务器中保存的会话控制标识是否相同;
若是,则确定所述客户端与所述服务器保持连接;
若否,则确定所述服务器已经重启。
在实际应用中,客户端发送的交互请求中,要携带会话控制标识SessionId,编程装置在接收到交互请求后,需要对所述交互请求进行解析,以获取交互请求中的SessionId,若交互请求中,没有携带SessionId,则说明保存在客户端的SessionId丢失,进而确定客户端已经发生过重启。
在对交互请求进行解析后,获取交互请求中的SessionId,将交互请求中的SessionId与保存在服务器内存中的SessionId进行比对,若服务器内存中没有找到对应的SessionId,则说明保存在服务器的SessionId丢失,进而确定服务器已经发生过重启。
若交互请求中的SessionId与服务器内存中的SessionId经过比对后相同,则说明客户端与服务器之间的保持连接。
在本申请实施例提供的一具体实施方式中,以交互请求中未获取到会话控制标识为例,接收客户端发送至服务器的读请求R1,编程装置对所述读请求R1进行解析,未解析到所述读请求R1中的会话控制标识,确定客户端C发生过重启。
在本申请实施例提供的另一具体实施方式中,以交互请求中的会话控制标识不存在于服务器内存中为例,接收客户端发送至服务器的写请求W1,编程装置对所述写请求W1进行解析,获得所述写请求W1中的会话控制标识S1,根据所述会话控制标识S1在所述服务器S的内存中比对,在服务器S的内存中没有找到会话控制标识S1,则确定服务器S发生过重启。
在本申请实施例提供的又一具体实施方式中,以交互请求中的会话控制标识存在与服务器内存中为例,接收客户端发送至服务器的心跳请求H1,编程装置对所述心跳请求H1进行解析,获得所述心跳请求H1中的会话控制标识S1,同时在服务器S的内存中找到对应的会话控制标识S1,则确定客户端C与服务器S之间通信连接。
可选的,监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态,还包括:
在预设时间区间内未接收到所述客户端发送的与所述服务器的目标交互请求的情况下,确定所述客户端下线。
在实际应用中,监控所述客户端发送的交互请求,还有一种情况是在预设的时间区间内,未接收到所述客户端的交互请求(包括业务请求和心跳请求),则确定客户端已经下线。
在本申请实施例提供的一具体实施方式中,以服务器长时间未接收到客户端发送的交互请求为例,预设的时间区间为5分钟,若在5分钟时间内,未接收到客户端发送的与服务器的交互请求的情况下,确定客户端已经下线。
可选的,所述方法还包括:根据所述客户端与所述服务器之间的网络连接状态触发对应的目标事件。
在实际应用中,在确定客户端与服务器之间的网络连接状态后,根据网络连接状态触发对应的目标事件,如若客户端已经重启,则服务器注销注册在服务器中与所述客户端对应的会话控制,若服务器已经重启,则通知客户端,以使客户端向服务器发起重连请求等,在本申请中,不对客户端与服务器之间的网络连接状态对应的目标事件做具体限制,以实际应用为准。
本申请实施例提供的网络状态监控方法,通过在编程装置建立客户端与服务器的连接,注册会话控制,同时将生成的会话控制标识返回给客户端,以使客户端在之后的每次交互请求中携带所述会话控制标识,在编程装置中检查交互请求中的会话控制标识,若会话控制标识合法(交互请求的会话控制标识与服务器内存中保存的会话控制标识相同)则说明服务器与客户端之间状态未发生改变,若会话控制标识不合法,则根据具体的会话控制标识不合法的情况确定对应的节点变更事件,在编程装置中即刻实现对服务器和客户端的节点状态监控,无需引入第三方监控程序,避免了第三方监控程序带来的不必要的依赖,同时也避免引入第三方监控程序带来的网络分区的问题。
图5示出了本申请一实施例提供的网络状态监控方法的交互图,包括以下步骤:
步骤502:客户端通过编程装置的装置客户端组件向装置服务器组件发送连接请求。
步骤504:编程装置在服务器中初始化session,会话管理组件生成与session对应的sessionId。
步骤506:装置服务器组件将所述sessionId返回至装置客户端组件。
下面通过步骤508至步骤512解释说明在客户端与服务器的交互请求中,sessionId合法的情况。
步骤508:装置客户端组件向装置服务器组件发送交互请求1。
步骤510:会话管理组件检查交互请求1中携带的SessionId的合法性,在SessionId合法的情况下,将交互请求1发送至处理器。
步骤512:将处理结果返回至装置客户端组件。
下面通过步骤514至步骤520解释说明在客户端与服务器的交互请求中,sessionId在服务器端不合法的情况。
步骤514:装置客户端组件向装置服务器组件发送交互请求2。
步骤516:会话管理组件检查交互请求2中携带的SessionId的合法性,经检查交互请求2中携带的SessionId不合法。
步骤518:返回sessionId在服务器端不合法事件。
步骤520:处理服务器状态变更事件。
下面通过步骤5222至步骤5244解释说明在客户端与服务器的心跳请求交互中,心跳包检查的情况。
步骤5222:装置客户端组件检查客户端发送的心跳包是否过期。
若客户端发送至服务器的心跳包在预设的时间内未接收到服务器返回的反馈信息,则确定所述心跳包过期。
步骤5242:在客户端心跳包过期的情况下,确定服务器状态发生变更,处理服务器状态变更事件。
步骤5224:装置服务器组件检查服务器发送的心跳包是否过期。
步骤5244:在服务器心跳包过期的情况下,确定客户端状态发生变更,处理客户端状态变更事件。
本申请实施例提供的网络状态监控方法,通过在编程装置建立客户端与服务器的连接,注册会话控制,同时将生成的会话控制标识返回给客户端,以使客户端在之后的每次交互请求中携带所述会话控制标识,在编程装置中检查交互请求中的会话控制标识,若会话控制标识合法(交互请求的会话控制标识与服务器内存中保存的会话控制标识相同)则说明服务器与客户端之间状态未发生改变,若会话控制标识不合法,则根据具体的会话控制标识不合法的情况确定对应的节点变更事件,在编程装置中即刻实现对服务器和客户端的节点状态监控,无需引入第三方监控程序,避免了第三方监控程序带来的不必要的依赖,同时也避免引入第三方监控程序带来的网络分区的问题。
图6示出了根据本申请一实施例的计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现所述网络状态监控方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的网络状态监控方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述网络状态监控方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述网络状态监控方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的网络状态监控方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述网络状态监控方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

Claims (15)

1.一种编程装置,其特征在于,配置于服务器,包括反应器模块、状态管理模块、事件处理模块和请求应答模块;
所述反应器模块,被配置为处理客户端发送至服务器的业务请求,并触发每个业务请求对应的业务事件;
所述状态管理模块,被配置为监控客户端和/或服务器的网络连接状态,并根据监控结果触发对应的业务事件;
所述事件处理模块,被配置为处理所述反应器模块和/或所述状态管理模块触发的业务事件;
所述请求应答模块,被配置为返回业务事件的处理结果。
2.如权利要求1所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
基于所述业务请求通过注册会话控制建立所述客户端与所述服务器之间的网络连接,其中,所述会话控制包括会话控制标识;
监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态。
3.如权利要求2所述的编程装置,其特征在于,所述请求应答模块,进一步被配置为:
将所述会话控制标识发送至所述客户端,并将所述会话控制标识保存至所述服务器。
4.如权利要求3所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
解析所述客户端发送的与所述服务器的目标交互请求;
在未获取到所述目标交互请求中携带的会话控制标识的情况下,确定所述客户端已经重启;
在获取到所述目标交互请求中携带的会话控制标识的情况下,判断所述目标交互请求中携带的会话控制标识与所述服务器中保存的会话控制标识是否相同;
若是,则确定所述客户端与所述服务器保持连接;
若否,则确定所述服务器已经重启。
5.如权利要求4所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
在确定所述客户端已经重启的情况下,触发客户端重启事件;或
在确定所述服务器已经重启的情况下,触发服务器重启事件。
6.如权利要求2至5任意一项所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
在预设时间区间内未接收到所述客户端发送的与所述服务器的目标交互请求的情况下,确定所述客户端下线。
7.如权利要求6所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
在确定所述客户端下线的情况下,触发客户端下线事件。
8.如权利要求2至5任意一项所述的编程装置,其特征在于,所述状态管理模块,进一步被配置为:
监控所述客户端发送至所述服务器的业务请求或心跳请求。
9.如权利要求1所述的编程装置,其特征在于,还包括:配置管理模块、超时管理模块、协议配置模块、服务调用模块、重连管理模块、请求应答模块;
所述配置管理模块,被配置为配置所述编程装置的设置参数;
所述超时管理模块,被配置为管理所述编程装置中的超时任务;
所述协议配置模块,被配置为配置业务对应的通信协议;
所述服务调用模块,被配置为为业务事件提供服务调用接口;
所述重连管理模块,被配置为在所述客户端与所述服务器断开连接的情况下,重新建立与所述客户端的连接。
10.一种网络状态监控方法,其特征在于,应用于编程装置,包括:
接收客户端发送的与服务器的业务请求;
基于所述业务请求通过注册会话控制建立所述客户端与所述服务器之间的网络连接,其中,所述会话控制包括会话控制标识;
将所述会话控制标识发送至所述客户端,并将所述会话控制标识保存至所述服务器;
监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态。
11.如权利要求10所述的网络状态监控方法,其特征在于,监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态,包括:
解析所述客户端发送的与所述服务器的目标交互请求;
在未获取到所述目标交互请求中携带的会话控制标识的情况下,确定所述客户端已经重启;
在获取到所述目标交互请求中携带的会话控制标识的情况下,判断所述目标交互请求中携带的会话控制标识与所述服务器中保存的会话控制标识是否相同;
若是,则确定所述客户端与所述服务器保持连接;
若否,则确定所述服务器已经重启。
12.如权利要求11所述的网络状态监控方法,其特征在于,监控所述客户端发送的与所述服务器的目标交互请求,根据监控结果确定所述客户端与所述服务器之间的网络连接状态,还包括:
在预设时间区间内未接收到所述客户端发送的与所述服务器的目标交互请求的情况下,确定所述客户端下线。
13.如权利要求10所述的网络状态监控方法,其特征在于,所述方法还包括:
根据所述客户端与所述服务器之间的网络连接状态触发对应的目标事件。
14.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求10-13任意一项所述方法的步骤。
15.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求10-13任意一项所述方法的步骤。
CN202010893184.4A 2020-08-31 2020-08-31 一种编程装置、网络状态监控方法 Active CN112417349B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010893184.4A CN112417349B (zh) 2020-08-31 2020-08-31 一种编程装置、网络状态监控方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010893184.4A CN112417349B (zh) 2020-08-31 2020-08-31 一种编程装置、网络状态监控方法

Publications (2)

Publication Number Publication Date
CN112417349A true CN112417349A (zh) 2021-02-26
CN112417349B CN112417349B (zh) 2023-01-10

Family

ID=74855179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010893184.4A Active CN112417349B (zh) 2020-08-31 2020-08-31 一种编程装置、网络状态监控方法

Country Status (1)

Country Link
CN (1) CN112417349B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127204A (zh) * 2021-04-29 2021-07-16 四川虹美智能科技有限公司 一种基于反应堆网络模型处理并发业务的方法和服务器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075116A1 (en) * 2004-09-11 2006-04-06 Oracle International Corporation System and method for discretization of client-server interactions
US20070220155A1 (en) * 2006-03-17 2007-09-20 Microsoft Corporation Server session management application program interface and schema
CN107181639A (zh) * 2017-03-31 2017-09-19 北京奇艺世纪科技有限公司 一种通信状态的监控方法及装置
CN107360239A (zh) * 2017-07-25 2017-11-17 郑州云海信息技术有限公司 一种客户端连接状态检测方法及系统
CN107426281A (zh) * 2017-04-28 2017-12-01 武汉票据交易中心有限公司 一种客户端事件和服务器事件的交互处理系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075116A1 (en) * 2004-09-11 2006-04-06 Oracle International Corporation System and method for discretization of client-server interactions
US20070220155A1 (en) * 2006-03-17 2007-09-20 Microsoft Corporation Server session management application program interface and schema
CN107181639A (zh) * 2017-03-31 2017-09-19 北京奇艺世纪科技有限公司 一种通信状态的监控方法及装置
CN107426281A (zh) * 2017-04-28 2017-12-01 武汉票据交易中心有限公司 一种客户端事件和服务器事件的交互处理系统及方法
CN107360239A (zh) * 2017-07-25 2017-11-17 郑州云海信息技术有限公司 一种客户端连接状态检测方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127204A (zh) * 2021-04-29 2021-07-16 四川虹美智能科技有限公司 一种基于反应堆网络模型处理并发业务的方法和服务器

Also Published As

Publication number Publication date
CN112417349B (zh) 2023-01-10

Similar Documents

Publication Publication Date Title
US8688822B2 (en) Push e-mail inferred network presence
US10454795B1 (en) Intermediate batch service for serverless computing environment metrics
CN109933439B (zh) 消息传输方法、装置、计算机设备和存储介质
CN106899772B (zh) 一种呼叫服务的分布式均衡负载控制方法及呼叫系统
CN109246220B (zh) 一种消息推送系统及方法
CN111784329B (zh) 业务数据的处理方法和装置、存储介质、电子装置
CN109391482B (zh) 网络功能的升级方法及升级管理实体
CN113938516A (zh) 同步实现异构系统交易处理的方法及系统
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
EP2974159B1 (en) Method, device and system for voice communication
CN112417349B (zh) 一种编程装置、网络状态监控方法
KR101488031B1 (ko) 프레즌스 기반 시스템에서의 근거리 즉석 통신 방법
CN113094571A (zh) 多平台对账方法及装置
CN105634931B (zh) 消息业务处理方法及即时通讯服务器
CN114745564B (zh) 服务调度方法及装置
CN114598739B (zh) 基于云应用的通信通道的处理方法、装置及系统
CN113392081B (zh) 数据处理系统及方法
CN114697339A (zh) 集中式架构下的负载均衡方法及装置
CN113206780A (zh) 企业即时通讯方法、装置、计算机设备及可读存储介质
CN115086487A (zh) 呼叫话务监测方法及装置
US11275602B1 (en) Virtual communication service for mobile devices
CN109218450B (zh) 一种客户端业务服务系统及其工作方法
CN114257578A (zh) 信息验证方法及装置
US20060128388A1 (en) Apparatus and method for easily restoring a connection to a telephone
CN112422609A (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