一种进程间心跳检测方法及装置与流程

文档序号:30936293发布日期:2022-07-30 01:12阅读:282来源:国知局
一种进程间心跳检测方法及装置与流程

1.本发明涉及互联网技术领域,尤其涉及一种进程间心跳检测方法及装置。


背景技术:

2.在高速网络传输检测设备中,网络传输的数据面处理模块作为一个个单独的进程运行在linux等操作系统上。在某些场景下,进程间需要串联来处理数据面的网络报文。这种情况下就需要检测被串联进程状态是否正常,若被串联进程由于异常kill或僵死,则需要某些机制来保证网络报文的正常传输通路。
3.现有技术中在进行进程间状态检测时,先建立进程间的通信链路,通信链路连接的方式包括:传输控制协议tcp连接和用户数据包协议udp连接以及基于进程间共享内存的通信方式进行连接。现有技术方案的缺点:使用tcp或udp建立通信链路的方式,由于受到链路资源的限制,会出现连接耗时过长,甚至连接失败的问题;心跳检测时延大。通过对方的心跳消息来检测对方状态是否正常,会存在一定的时延。在高速网络传输设备中,时延大会造成大量的报文丢失和短暂的通信链路中断。


技术实现要素:

4.本发明的目的是提供一种进程间心跳检测方法、装置、电子设备与存储介质,用以解决现有心跳检测技术中时延大以及由此带来的报文丢失和链路中断的问题,通过基于linux连接器和共享内存检测进程间心跳状态,相比建立通信链路更加简单,同时极大地降低了检测时间并提高了可靠性。
5.本发明提供一种进程间心跳检测方法,应用于linux系统,包括:共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建步骤,通过所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
6.本发明提供一种进程间心跳检测方法,所述判断产生退出事件的客户端进程是否为目标客户端进程,具体包括:判断所述共享内存中实时保存的目标客户端进程的pid值是否为非0;若所述共享内存中实时保存的目标客户端进程的pid值是0,则所述目标客户端进程和所述服务端进程退出连接。
7.本发明提供一种进程间心跳检测方法,还包括:若所述共享内存中实时保存的目标客户端进程的pid值是非0,则所述目标客户端
进程和所述服务端进程连接正常。
8.本发明提供一种进程间心跳检测方法,在所述进程状态检测线程创建步骤之前,还包括:所述服务端进程创建linux连接器套接字。
9.本发明提供一种进程间心跳检测方法,在所述共享内存创建步骤之前,还包括:创建需要进行状态检测的服务端进程和对应的目标客户端进程。
10.本发明还提供一种进程间心跳检测装置,包括:共享内存创建模块,用于服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建模块,用于所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理模块,用于若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
11.本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所述进程间心跳检测方法的步骤。
12.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现任一项所述进程间心跳检测方法的步骤。
13.本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述指令在被执行时用于实现任一项所述进程间心跳检测方法的步骤。
14.本发明提供一种进程间心跳检测方法及装置,包括共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建步骤,通过服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。基于linux连接器和共享内存检测进程间心跳状态,由linux内核提供接口,安全可靠,且进程间心跳状态检测的时延,仅有毫秒级,相比建立通信链路更加简单,同时极大地降低了检测时间并提高了可靠性。
附图说明
15.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1是本发明提供的进程间心跳检测方法的流程示意图;图2是本发明提供的进程间心跳检测装置的结构示意图;
图3是本发明提供的电子设备的结构示意图。
具体实施方式
17.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.下面结合图1-图3描述本发明的进程间心跳检测方法、装置、电子设备与存储介质。
19.图1为本发明提供的进程间心跳检测方法的流程图,如图1所示,本发明提供一种进程间心跳检测方法,应用于linux系统,包括:步骤110、共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;在本实施例中,进程(process)是计算机中的程序关于某数据集合上的一次运行活动,也是系统进行资源分配和调度的基本单位;共享内存 (shared memory)是指在多处理器的计算机系统中可以被不同中央处理器cpu访问的大容量内存;进程id(process identification)是大多数操作系统的内核用于唯一标识进程的一个数值,即pid,目标客户端进程的pid值为非0值。
20.在本实施例中,服务端进程创建一块共享内存区域,用于保存目标客户端进程的pid值,并初始化共享内存的值为0。
21.步骤120、进程状态检测线程创建步骤,通过所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;在本实施例中,线程(thread)是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位;进程退出exit事件包括异常退出和正常退出。
22.在本实施例中,服务端进程创建一个进程状态检测线程,进程状态检测线程睡眠等待客户端进程运行,循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程。
23.步骤130、退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
24.在本实施例中,重新创建的进程状态检测线程针对的目标客户端进程是指具有一个不同的进程id同时与前一个目标客户端进程实现同一功能的进程。
25.在本实施例中,确定产生退出事件的客户端进程是目标客户端进程以后,服务端进程重置共享内存的值为0,并返回进程状态检测线程创建步骤,重新创建进程状态检测线程,继续检测与前一个目标客户端进程具有不同的进程id同时实现同一功能的目标客户端进程。
26.本发明提供一种进程间心跳检测方法,通过共享内存创建步骤、进程状态检测线程创建步骤和退出事件处理步骤,基于linux连接器和共享内存检测进程间心跳状态,由
linux内核提供接口,安全可靠,且进程间心跳状态检测的时延,仅有毫秒级,相比建立通信链路更加简单,同时极大地降低了检测时间并提高了可靠性。
27.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测方法,所述判断产生退出事件的客户端进程是否为目标客户端进程,具体包括:判断所述共享内存中实时保存的目标客户端进程的pid值是否为非0;若所述共享内存中实时保存的目标客户端进程的pid值是0,则所述目标客户端进程和所述服务端进程退出连接。
28.在本实施例中,目标客户端进程的pid值是非0值,且在整个进程运行期间唯一确定。
29.在本实施例中,判断产生退出事件的客户端进程是否为目标客户端进程的具体实现路径是通过判断共享内存中实时保存的目标客户端进程的pid值是否为0;若共享内存中实时保存的目标客户端进程的pid值是0,则目标客户端进程退出,和服务端进程的连接中断。
30.本发明提供一种进程间心跳检测方法,通过明确判断客户端进程退出事件是否为目标客户端进程退出事件的具体路径是通过判断共享内存中实时保存的目标客户端进程的pid值是否为0来实现的,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
31.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测方法,还包括:若所述共享内存中实时保存的目标客户端进程的pid值是非0,则所述目标客户端进程和所述服务端进程连接正常。
32.在本实施例中,若共享内存中实时保存的目标客户端进程的pid值是非0值,即实时写入共享内存的目标客户端的pid值一直保持不变,则说明目标客户端进程和服务端进程的连接正常。
33.本发明提供一种进程间心跳检测方法,通过具体说明若共享内存中实时保存的目标客户端进程的pid值是非0,则说明目标客户端进程和服务端进程连接正常,进一步明确了目标客户端进程和服务端进程连接正常的判断路径,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
34.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测方法,在所述进程状态检测线程创建步骤之前,还包括:所述服务端进程创建linux连接器套接字。
35.在本实施例中,套接字(socket)是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。服务端进程创建linux连接器套接字,即建立一个通信隧道,用于监听客户端进程处理状态。
36.本发明提供一种进程间心跳检测方法,通过明确在进程状态检测线程创建步骤之前,服务端进程进一步创建的linux连接器套接字,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
37.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测方法,在所述共享内存创建步骤之前,还包括:创建需要进行状态检测的服务端进程和对应的目标客户端进程。
38.在本实施例中,针对网络中要完成的某一类任务,创建需要进行状态检测的服务端进程和对应的目标客户端进程,服务端进程和目标客户端进程基于linux连接器和共享内存进行交互。
39.本发明提供一种进程间心跳检测方法,通过明确在共享内存创建步骤之前,创建需要进行状态检测的服务端进程和对应的目标客户端进程,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
40.下面对本发明提供的一种进程间心跳检测装置进行描述,下文描述的进程间心跳检测装置与上文描述的进程间心跳检测方法可以相互对应参照。
41.图2为本发明提供的进程间心跳检测装置的结构图,如图2所示,本发明提供的进程间心跳检测装置,包括:共享内存创建模块210,用于服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建模块220,用于所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理模块230,用于若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
42.本发明提供一种进程间心跳检测装置,通过设置共享内存创建模块、进程状态检测线程创建模块和退出事件处理模块,基于linux连接器和共享内存检测进程间心跳状态,由linux内核提供接口,安全可靠,且进程间心跳状态检测的时延,仅有毫秒级,相比建立通信链路更加简单,同时极大地降低了检测时间并提高了可靠性。
43.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测装置,所述进程状态检测线程创建模块220,还包括:目标客户端进程判断第一单元,用于判断所述共享内存中实时保存的目标客户端进程的pid值是否为非0;若所述共享内存中实时保存的目标客户端进程的pid值是0,则所述目标客户端进程和所述服务端进程退出连接。
44.本发明提供一种进程间心跳检测装置,通过设置目标客户端进程判断第一单元,明确判断客户端进程退出事件是否为目标客户端进程退出事件的具体路径是通过判断共享内存中实时保存的目标客户端进程的pid值是否为0来实现的,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
45.基于上述任一实施例, 在本实施例中,本发明提供一种进程间心跳检测装置,还包括:目标客户端进程判断第二单元,用于若所述共享内存中实时保存的目标客户端进程的pid值是非0,则所述目标客户端进程和所述服务端进程连接正常。
46.本发明提供一种进程间心跳检测装置,通过设置目标客户端进程判断第二单元,进一步明确了目标客户端进程和服务端进程连接正常的判断路径,有力的支持了降低心跳检测时间并提高了心跳检测的可靠性。
47.另一方面,本发明还提供一种电子设备,图3示例了一种电子设备的实体结构示意
图,如图3所示,该电子设备可以包括处理器310、通信总线340、存储器330、通信接口320以及存储在所述存储器330上并可在所述处理器310上运行的计算机程序,其中,处理器310、通信接口320、存储器330通过通信总线340完成相互间的通信,处理器310可以调用存储器330中的逻辑指令,以执行进程间心跳检测方法,该方法包括:共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建步骤,通过所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
48.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,可以实现进程间心跳检测方法,该方法包括:共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建步骤,通过所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
49.最后,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够实现进程间心跳检测方法,该方法包括:共享内存创建步骤,通过服务端进程创建共享内存,并设置所述共享内存的初始值为0,其中,所述共享内存用于实时保存目标客户端进程的pid值;进程状态检测线程创建步骤,通过所述服务端进程创建进程状态检测线程,其中,所述进程状态检测线程用于循环检测客户端进程退出事件,并判断产生退出事件的客户端进程是否为目标客户端进程;退出事件处理步骤,若产生退出事件的客户端进程是目标客户端进程,则所述服务端进程重置所述共享内存的值为0,并返回所述进程状态检测线程创建步骤,重新创建进程状态检测线程。
50.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
51.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可
借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
52.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1