CN109857344B - 基于共享内存的心跳状态判断方法、装置和计算机设备 - Google Patents
基于共享内存的心跳状态判断方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN109857344B CN109857344B CN201910093763.8A CN201910093763A CN109857344B CN 109857344 B CN109857344 B CN 109857344B CN 201910093763 A CN201910093763 A CN 201910093763A CN 109857344 B CN109857344 B CN 109857344B
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- time
- osd
- storage device
- terminal
- 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.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请揭示了一种基于共享内存的心跳状态判断方法、装置、计算机设备和存储介质,所述方法包括:接收对OSD存储设备进行心跳状态判断的指令;根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值;若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止。从而借助共享内存,减少了心跳开销。
Description
技术领域
本申请涉及到计算机领域,特别是涉及到一种基于共享内存的心跳状态判断方法、装置、计算机设备和存储介质。
背景技术
当前绝大部分的存储产品的心跳机制都是基于socket(套接字)消息通信来运行的,如OSD存储设备,随着通信进程数增多,心跳所带来的通信开销越发增多,致使CPU、网络资源有效利用率不高,制约大型单一的存储系统的发展。其中,OSD存储设备(Object-basedStorage Device)指基于对象的存储设备,是一种智能存储设备,是常用的存储产品,有心跳通信的需要。在一个终端或一个存储系统中,可能存在多个OSD存储设备,现有技术无法避免一个终端或一个存储系统中的多个OSD存储设备间的心跳带来的通信开销,以及减少不同终端或不同存储系统的多个OSD存储设备间的心跳带来的通信开销。
发明内容
本申请的主要目的为提供一种基于共享内存的心跳状态判断方法、装置、计算机设备和存储介质,旨在借助共享内存,减少心跳开销。
为了实现上述发明目的,本申请提出一种基于共享内存的心跳状态判断方法,包括以下步骤:
接收对OSD存储设备进行心跳状态判断的指令;
根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
判断所述心跳时间差是否大于预设的第一心跳阈值;
若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
进一步地,所述心跳状态判断指令包括OSD存储设备归属字段,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤,包括:
从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;
若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;
若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
进一步地,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤之前,包括:
获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;
根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;
根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;
在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
进一步地,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤,包括:
若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;
根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;
从所述存储时间中筛选出最近一次存储时间。
进一步地,所述指定终端内置有jiffies定时器,所述通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差的步骤,包括:
获取所述jiffies定时器的当前数值;
根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;
通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
进一步地,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤之后,包括:
若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;
根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;
从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;
若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
进一步地,所述若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值的步骤之前,包括:
接收所述OSD存储设备发送的心跳信息;
在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段中,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
本申请提供一种基于共享内存的心跳状态判断装置,应用于指定终端,包括:
指令接收单元,用于接收对OSD存储设备进行心跳状态判断的指令;
指定终端判断单元,用于根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
存储时间调取单元,用于若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
心跳时间差计算单元,用于通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
第一心跳阈值判断单元,用于判断所述心跳时间差是否大于预设的第一心跳阈值;
静止判定单元,用于若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
活动判定单元,用于若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
本申请提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请的基于共享内存的心跳状态判断方法、装置、计算机设备和存储介质,通过接收对OSD存储设备进行心跳状态判断的指令;判断所述OSD存储设备是否属于所述终端;利用共享内存中所存的心跳信息数据,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值,从而判断心跳状态是否为活动,从而借助共享内存减少了心跳开销。
附图说明
图1为本申请一实施例的基于共享内存的心跳状态判断方法的流程示意图;
图2为本申请一实施例的基于共享内存的心跳状态判断装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请实施例提供一种基于共享内存的心跳状态判断方法,包括以下步骤:
S1、接收对OSD存储设备进行心跳状态判断的指令;
S2、根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
S3、若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
S4、通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
S5、判断所述心跳时间差是否大于预设的第一心跳阈值;
S6、若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
S7、若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
如上述步骤S1所述,接收对OSD存储设备进行心跳状态判断的指令。在网络信息传输中,心跳机制是定时发送一个自定义的结构体(心跳包,心跳信息),让对方知道自己还活着,以确保连接的有效性的机制,其中心跳状态分为静止或者活动。OSD存储设备(Object-based Storage Device)指基于对象的存储设备,是一种智能存储设备。其中一个终端(例如物理主机)可以包括多个OSD存储设备。在同一个终端内的多个OSD存储设备间,也有着心跳状态判断的需要。
如上述步骤S2所述,根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端。若所述OSD存储设备属于所述指定终端,表明所述OSD存储设备的心跳判断可采用同一指定终端的判断模式;若所述OSD存储设备不属于所述指定终端,即要判断其他终端的OSD存储设备的心跳状态,那么需要采用不同终端的判断模式。其中,根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的具体过程可为任意过程,例如:所述心跳状态判断的指令携带有所述OSD存储设备的归属信息,从所述心跳状态判断的指令中提取所述归属信息,从而判断所述OSD存储设备是否属于所述指定终端;或者,从所述心跳状态判断的指令提取出所述OSD存储设备的名称信息,判断所述名称信息是否预存于所述指定终端的自有设备列表中,从而判断所述OSD存储设备是否属于所述指定终端。
如上述步骤S3所述,若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间。所述指定终端具有共享内存,共享内存指在多OSD存储设备的指定终端中,可以被不同OSD存储设备访问的内存。所述指定终端的所述OSD存储设备生成心跳信息的同时,会将所述心跳信息存储在共享内存中,此时存储时间也为心跳信息生成的时间。据此,通过调用共享内存即可获知OSD存储设备的心跳信息,从而免去了同一指定终端内多个OSD存储设备间的心跳通信开销。由于每次生成心跳信息都存入共享内存,因此共享内存中存储有OSD存储设备的所有心跳信息,在判断心跳状态时,需要调用最近一次心跳信息的生成时间,因此要从所述存储时间中筛选出最近一次存储时间(与心跳信息生成时间相同)。
如上述步骤S4所述,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。本申请的心跳机制为:若OSD存储设备最近一次生成的心跳信息与当前时间的时间差,大于心跳阈值时,则认为心跳静止。据此,需要通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差,以备后续调用。其中,心跳时间差即为OSD存储设备最近一次生成的心跳信息与当前时间的时间差。
如上述步骤S5所述,判断所述心跳时间差是否大于预设的第一心跳阈值。心跳时间差反应了OSD存储设备最近一次生成的心跳信息与当前时间的时间差。当心跳时间差大于预设的第一心跳阈值,表明OSD存储设备有较长时间未活动,可认定心跳状态为静止;当心跳时间差不大于预设的第一心跳阈值,表明OSD存储设备保持活动,可认定心跳状态为活动。
如上述步骤S6所述,若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止。进一步地,在所述共享内存中将所述OSD存储设备的状态设置为DOWN,以表示所述OSD存储设备的心跳状态为静止。
如上述步骤S7所述,若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。进一步地,在所述共享内存中将所述OSD存储设备的状态设置为UP,以表示所述OSD存储设备的心跳状态为活动。
从而,通过共享内存存储心跳信息及心跳信息的生成时间,免去了处于同一指定终端内的OSD存储设备的心跳通信开销,只需调用共享内存即可获知OSD存储设备的心跳状态。
在一个实施方式中,所述心跳状态判断指令包括OSD存储设备归属字段,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤S2,包括:
S201、从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;
S202、若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;
S203、若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
如上所述,实现了判断所述OSD存储设备是否属于所述指定终端。其中,所述心跳状态判断指令包括OSD存储设备归属字段。通过判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端,若记载内容为所述指定终端,则判定所述OSD存储设备属于所述指定终端;反之则不属于所述指定终端。从而实现了简便判断指定终端的归属。
在一个实施方式中,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤S3之前,包括:
S2101、获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;
S2102、根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;
S2103、根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;
S2104、在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
如上所述,实现了确定心跳时间间隔,并设置心跳生成时间。由于不同类型的数据需要的心跳时间间隔,例如社交软件调用的数据、金融软件调用的数据、视频网站调用的数据需要的心跳时间间隔不一定相同。据此,先获取需要生成所述心跳信息的数据(即所述OSD存储设备中存储的与所述心跳信息相应的数据)的类型,再利用预设的类型与心跳时间间隔的映射关系,以确定心跳时间间隔,从而设置心跳信息的生成时间。由此就能在所述共享内存中记录存入心跳信息的存储时间(即心跳信息的生成时间)。其中,所述获取所述OSD存储设备中存储的与心跳信息相应的数据的类型的过程例如为:从所述OSD存储设备中查询所述与心跳信息相应的数据的具体信息,并从中提取出类型信息。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤S3,包括:
S301、若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;
S302、根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;
S303、从所述存储时间中筛选出最近一次存储时间。
如上所述,实现了获取最近一次存储时间。其中第一字段(例如为write_jiffies字段)的数值即为所述指定终端预置的jiffies定时器在所述OSD存储设备生成心跳信息并存入共享内存时的数值,该数值与所述指定终端内核频率值相关,其单位为tick(嘀嗒),其中1tick=1/指定终端内核频率值,具体的对应关系为:所述存储时间=所述OSD存储设备的第一字段(例如为write_jiffies字段)的数值÷所述指定终端的内核频率值。据此计算出所述存储时间。再从所述存储时间中筛选出最近一次存储时间。其中筛选的方式包括:将所述存储时间按时间顺序降序排列,提取排在首位的时间为最近一次存储时间。其中所述jiffies定时器是一种内核定时器,其单位为tick,其中1tick=1/指定终端内核频率值。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差的步骤S4,包括:
S401、获取所述jiffies定时器的当前数值;
S402、根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;
S403、通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
如上所述,实现了计算出所述心跳时间差。其中所述jiffies定时器是一种内核定时器,其单位为tick,其中1tick=1/指定终端内核频率值。因此,根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间。再通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤S2之后,包括:
ST3、若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;
ST4、根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;
ST5、从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;
ST6、若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
ST7、若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
如上所述,实现了不同指定终端的OSD存储设备的心跳判断。由于所述OSD存储设备属于其他终端,则在进行心跳判断时,需要先接收所述OSD存储设备的心跳信息,因此会有部分心跳通信开销。但是通过将所述心跳信息存入共享内存中,当本指定终端的多个OSD存储设备需要与其他终端的存储设备进行心跳判断时,只需调取共享内存即可,即只需产生一次心跳通信开销。从而大大减少了不同终端间的心跳通信开销。其中第二字段(例如为local_jiffies字段)记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值,根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,就能计算出所述发送心跳信息的时间。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值的步骤ST3之前,包括:
ST2101、接收所述OSD存储设备发送的心跳信息;
ST2102、在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
如上所述,实现了利用共享内存存储心跳信息及发送心跳信息时所述指定终端预置jiffies定时器的数值。通过将心跳信息存储在共享内存中,当本指定终端内的OSD存储设备需要与其他终端的OSD存储设备进行心跳判断时,只需调取共享内存即可,即只需产生一次心跳通信开销。从而大大减少了不同终端间的心跳通信开销。进一步地,本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
本申请的基于共享内存的心跳状态判断方法,通过接收对OSD存储设备进行心跳状态判断的指令;判断所述OSD存储设备是否属于所述终端;利用共享内存中所存的心跳信息数据,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值,从而判断心跳状态是否为活动,从而借助共享内存减少了心跳开销。
参照图2,本申请实施例提供一种基于共享内存的心跳状态判断装置,包括:
指令接收单元10,用于接收对OSD存储设备进行心跳状态判断的指令;
指定终端判断单元20,用于根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
存储时间调取单元30,用于若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
心跳时间差计算单元40,用于通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
第一心跳阈值判断单元50,用于判断所述心跳时间差是否大于预设的第一心跳阈值;
静止判定单元60,用于若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
活动判定单元70,用于若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
如上述单元10所述,接收对OSD存储设备进行心跳状态判断的指令。在网络信息传输中,心跳机制是定时发送一个自定义的结构体(心跳包,心跳信息),让对方知道自己还活着,以确保连接的有效性的机制,其中心跳状态分为静止或者活动。OSD存储设备(Object-based Storage Device)指基于对象的存储设备,是一种智能存储设备。其中一个终端(例如物理主机)可以包括多个OSD存储设备。在同一个终端内的多个OSD存储设备间,也有着心跳状态判断的需要。
如上述单元20所述,根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端。若所述OSD存储设备属于所述指定终端,表明所述OSD存储设备的心跳判断可采用同一指定终端的判断模式;若所述OSD存储设备不属于所述指定终端,即要判断其他终端的OSD存储设备的心跳状态,那么需要采用不同终端的判断模式。其中,根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的具体过程可为任意过程,例如:所述心跳状态判断的指令携带有所述OSD存储设备的归属信息,从所述心跳状态判断的指令中提取所述归属信息,从而判断所述OSD存储设备是否属于所述指定终端;或者,从所述心跳状态判断的指令提取出所述OSD存储设备的名称信息,判断所述名称信息是否预存于所述指定终端的自有设备列表中,从而判断所述OSD存储设备是否属于所述指定终端。
如上述单元30所述,若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间。所述指定终端具有共享内存,共享内存指在多OSD存储设备的指定终端中,可以被不同OSD存储设备访问的内存。所述指定终端的所述OSD存储设备生成心跳信息的同时,会将所述心跳信息存储在共享内存中,此时存储时间也为心跳信息生成的时间。据此,通过调用共享内存即可获知OSD存储设备的心跳信息,从而免去了同一指定终端内多个OSD存储设备间的心跳通信开销。由于每次生成心跳信息都存入共享内存,因此共享内存中存储有OSD存储设备的所有心跳信息,在判断心跳状态时,需要调用最近一次心跳信息的生成时间,因此要从所述存储时间中筛选出最近一次存储时间(与心跳信息生成时间相同)。
如上述单元40所述,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。本申请的心跳机制为:若OSD存储设备最近一次生成的心跳信息与当前时间的时间差,大于心跳阈值时,则认为心跳静止。据此,需要通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差,以备后续调用。其中,心跳时间差即为OSD存储设备最近一次生成的心跳信息与当前时间的时间差。
如上述单元50所述,判断所述心跳时间差是否大于预设的第一心跳阈值。心跳时间差反应了OSD存储设备最近一次生成的心跳信息与当前时间的时间差。当心跳时间差大于预设的第一心跳阈值,表明OSD存储设备有较长时间未活动,可认定心跳状态为静止;当心跳时间差不大于预设的第一心跳阈值,表明OSD存储设备保持活动,可认定心跳状态为活动。
如上述单元60所述,若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止。进一步地,在所述共享内存中将所述OSD存储设备的状态设置为DOWN,以表示所述OSD存储设备的心跳状态为静止。
如上述单元70所述,若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。进一步地,在所述共享内存中将所述OSD存储设备的状态设置为UP,以表示所述OSD存储设备的心跳状态为活动。
从而,通过共享内存存储心跳信息及心跳信息的生成时间,免去了处于同一指定终端内的OSD存储设备的心跳通信开销,只需调用共享内存即可获知OSD存储设备的心跳状态。
在一个实施方式中,所述指定终端判断单元20,包括:
归属字段提取子单元,用于从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;
属于指定终端判定子单元,用于若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;
不属于指定终端判定子单元,用于若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
如上所述,实现了判断所述OSD存储设备是否属于所述指定终端。其中,所述心跳状态判断指令包括OSD存储设备归属字段。通过判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端,若记载内容为所述指定终端,则判定所述OSD存储设备属于所述指定终端;反之则不属于所述指定终端。从而实现了简便判断指定终端的归属。
在一个实施方式中,所述装置,包括:
类型获取单元,用于获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;
心跳时间间隔设置单元,用于根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;
心跳信息生成时间设置单元,用于根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;
心跳信息存入单元,用于在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
如上所述,实现了确定心跳时间间隔,并设置心跳生成时间。由于不同类型的数据需要的心跳时间间隔,例如社交软件调用的数据、金融软件调用的数据、视频网站调用的数据需要的心跳时间间隔不一定相同。据此,先获取需要生成所述心跳信息的数据(即所述OSD存储设备中存储的与所述心跳信息相应的数据)的类型,再利用预设的类型与心跳时间间隔的映射关系,以确定心跳时间间隔,从而设置心跳信息的生成时间。由此就能在所述共享内存中记录存入心跳信息的存储时间(即心跳信息的生成时间)。其中,所述获取所述OSD存储设备中存储的与心跳信息相应的数据的类型的过程例如为:从所述OSD存储设备中查询所述与心跳信息相应的数据的具体信息,并从中提取出类型信息。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述存储时间调取单元30,包括:
第一字段调取子单元,用于若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;
存储时间计算子单元,用于根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;
存储时间筛选子单元,用于从所述存储时间中筛选出最近一次存储时间。
如上所述,实现了获取最近一次存储时间。其中第一字段(例如为write_jiffies字段)的数值即为所述指定终端预置的jiffies定时器在所述OSD存储设备生成心跳信息并存入共享内存时的数值,该数值与所述指定终端内核频率值相关,其单位为tick(嘀嗒),其中1tick=1/指定终端内核频率值,具体的对应关系为:所述存储时间=所述OSD存储设备的第一字段(例如为write_jiffies字段)的数值÷所述指定终端的内核频率值。据此计算出所述存储时间。再从所述存储时间中筛选出最近一次存储时间。其中筛选的方式包括:将所述存储时间按时间顺序降序排列,提取排在首位的时间为最近一次存储时间。其中所述jiffies定时器是一种内核定时器,其单位为tick,其中1tick=1/指定终端内核频率值。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述心跳时间差计算单元40,包括:
当前数值获取子单元,用于获取所述jiffies定时器的当前数值;
当前时间计算子单元,用于根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;
心跳时间差计算子单元,用于通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
如上所述,实现了计算出所述心跳时间差。其中所述jiffies定时器是一种内核定时器,其单位为tick,其中1tick=1/指定终端内核频率值。因此,根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间。再通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述装置,包括:
第二字段调取单元,用于若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;
发送心跳信息的时间计算单元,用于根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;
第二心跳阈值判断单元,用于从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;
判定静止单元,用于若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
判定活动单元,用于若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
如上所述,实现了不同指定终端的OSD存储设备的心跳判断。由于所述OSD存储设备属于其他终端,则在进行心跳判断时,需要先接收所述OSD存储设备的心跳信息,因此会有部分心跳通信开销。但是通过将所述心跳信息存入共享内存中,当本指定终端的多个OSD存储设备需要与其他终端的存储设备进行心跳判断时,只需调取共享内存即可,即只需产生一次心跳通信开销。从而大大减少了不同终端间的心跳通信开销。其中第二字段(例如为local_jiffies字段)记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值,根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,就能计算出所述发送心跳信息的时间。本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
在一个实施方式中,所述装置,包括:
接收心跳信息单元,用于接收所述OSD存储设备发送的心跳信息;
第二字段记载单元,用于在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
如上所述,实现了利用共享内存存储心跳信息及发送心跳信息时所述指定终端预置jiffies定时器的数值。通过将心跳信息存储在共享内存中,当本指定终端内的OSD存储设备需要与其他终端的OSD存储设备进行心跳判断时,只需调取共享内存即可,即只需产生一次心跳通信开销。从而大大减少了不同终端间的心跳通信开销。进一步地,本实施方式,采用jiffies定时器计时,仅与内核频率,而心跳判断仅与jiffies定时器数值相关,即心跳判断仅与所述指定终端的jiffies、内核频率相关,而与真实时间无关,从而提高了心跳机制的可靠性和稳定性。
本申请的基于共享内存的心跳状态判断装置,通过接收对OSD存储设备进行心跳状态判断的指令;判断所述OSD存储设备是否属于所述终端;利用共享内存中所存的心跳信息数据,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值,从而判断心跳状态是否为活动,从而借助共享内存减少了心跳开销。
参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于共享内存的心跳状态判断方法所用数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于共享内存的心跳状态判断方法。
上述处理器执行上述基于共享内存的心跳状态判断方法,包括以下步骤:接收对OSD存储设备进行心跳状态判断的指令;根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值;若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
在一个实施方式中,所述心跳状态判断指令包括OSD存储设备归属字段,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤,包括:从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
在一个实施方式中,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤之前,包括:获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤,包括:若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;从所述存储时间中筛选出最近一次存储时间。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差的步骤,包括:获取所述jiffies定时器的当前数值;根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
在一个实施方式中,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤之后,包括:若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
在一个实施方式中,所述若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值的步骤之前,包括:接收所述OSD存储设备发送的心跳信息;在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段中,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
本领域技术人员可以理解,图中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请的计算机设备,通过接收对OSD存储设备进行心跳状态判断的指令;判断所述OSD存储设备是否属于所述终端;利用共享内存中所存的心跳信息数据,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值,从而判断心跳状态是否为活动,从而借助共享内存减少了心跳开销。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现基于共享内存的心跳状态判断方法,包括以下步骤:接收对OSD存储设备进行心跳状态判断的指令;根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值;若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
在一个实施方式中,所述心跳状态判断指令包括OSD存储设备归属字段,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤,包括:从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
在一个实施方式中,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤之前,包括:获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤,包括:若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;从所述存储时间中筛选出最近一次存储时间。
在一个实施方式中,所述指定终端内置有jiffies定时器,所述通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差的步骤,包括:获取所述jiffies定时器的当前数值;根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
在一个实施方式中,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤之后,包括:若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
在一个实施方式中,所述若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值的步骤之前,包括:接收所述OSD存储设备发送的心跳信息;在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段中,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
本申请的计算机可读存储介质,通过接收对OSD存储设备进行心跳状态判断的指令;判断所述OSD存储设备是否属于所述终端;利用共享内存中所存的心跳信息数据,通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;判断所述心跳时间差是否大于预设的第一心跳阈值,从而判断心跳状态是否为活动,从而借助共享内存减少了心跳开销。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种基于共享内存的心跳状态判断方法,应用于指定终端,其特征在于,包括:
接收对OSD存储设备进行心跳状态判断的指令;
根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
判断所述心跳时间差是否大于预设的第一心跳阈值;
若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动;
其中,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤,包括:
若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;
根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;
从所述存储时间中筛选出最近一次存储时间。
2.根据权利要求1所述的基于共享内存的心跳状态判断方法,其特征在于,所述心跳状态判断指令包括OSD存储设备归属字段,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤,包括:
从所述心跳状态判断的指令中提取所述OSD存储设备归属字段中的记载内容,并判断所述OSD存储设备归属字段中的记载内容是否是所述指定终端;
若所述OSD存储设备归属字段中的记载内容是所述指定终端,则判定所述OSD存储设备属于所述指定终端;
若所述OSD存储设备归属字段中的记载内容不是所述指定终端,则判定所述OSD存储设备不属于所述指定终端。
3.根据权利要求1所述的基于共享内存的心跳状态判断方法,其特征在于,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤之前,包括:
获取所述OSD存储设备中存储的与心跳信息相应的数据的类型;
根据所述类型,利用预设的类型与心跳时间间隔的映射关系,设置所述OSD存储设备对应的心跳时间间隔,所述心跳时间间隔指相邻两次心跳信息的生成时间之间的时间间隔;
根据所述OSD存储设备对应的心跳时间间隔,设置心跳信息的生成时间;
在所述OSD存储设备根据设置好的心跳信息的生成时间生成心跳信息的同时,在所述共享内存中存入心跳信息,并在所述共享内存中记录存入心跳信息的存储时间。
4.根据权利要求1所述的基于共享内存的心跳状态判断方法,其特征在于,所述指定终端内置有jiffies定时器,所述通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差的步骤,包括:
获取所述jiffies定时器的当前数值;
根据公式:当前时间=所述jiffies定时器的当前数值÷所述指定终端的内核频率值,计算出所述当前时间;
通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差。
5.根据权利要求1所述的基于共享内存的心跳状态判断方法,其特征在于,所述根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端的步骤之后,包括:
若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值;
根据公式:发送心跳信息的时间=所述第二字段的数值÷所述指定终端的内核频率值,计算出所述发送心跳信息的时间;
从所述发送心跳信息的时间中筛选出最近一次心跳信息发送时间,并判断当前时间-所述最近一次心跳信息发送时间的值是否大于预设的第二心跳阈值;
若当前时间-所述最近一次心跳信息发送时间的值大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
若当前时间-所述最近一次心跳信息发送时间的值不大于预设的第二心跳阈值,则判定所述OSD存储设备的心跳状态为活动。
6.根据权利要求5所述的基于共享内存的心跳状态判断方法,其特征在于,所述若所述OSD存储设备不属于所述指定终端,则调取所述共享内存中所述OSD存储设备的第二字段,所述第二字段记载了所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值的步骤之前,包括:
接收所述OSD存储设备发送的心跳信息;
在所述共享内存中存储所述心跳信息,并在所述共享内存中所述OSD存储设备的第二字段中,记载所述OSD存储设备向所述指定终端发送心跳信息之时所述指定终端预置jiffies定时器的数值。
7.一种基于共享内存的心跳状态判断装置,应用于指定终端,其特征在于,包括:
指令接收单元,用于接收对OSD存储设备进行心跳状态判断的指令;
指定终端判断单元,用于根据所述心跳状态判断的指令,判断所述OSD存储设备是否属于所述指定终端;
存储时间调取单元,用于若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间;
心跳时间差计算单元,用于通过公式:心跳时间差=当前时间-所述最近一次存储时间,计算出所述心跳时间差;
第一心跳阈值判断单元,用于判断所述心跳时间差是否大于预设的第一心跳阈值;
静止判定单元,用于若所述心跳时间差大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为静止;
活动判定单元,用于若所述心跳时间差不大于预设的第一心跳阈值,则判定所述OSD存储设备的心跳状态为活动;
其中,所述指定终端内置有jiffies定时器,所述若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取,所述OSD存储设备在所述共享内存中存入心跳信息的存储时间,并从所述存储时间中筛选出最近一次存储时间的步骤,包括:
若所述OSD存储设备属于所述指定终端,则从所述指定终端的共享内存中调取所述OSD存储设备的第一字段的数值,所述第一字段记载了所述OSD存储设备生成心跳信息并存入共享内存时所述指定终端预置jiffies定时器的数值;
根据公式:所述存储时间=所述第一字段的数值÷所述指定终端的内核频率值,计算出所述存储时间;
从所述存储时间中筛选出最近一次存储时间。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910093763.8A CN109857344B (zh) | 2019-01-30 | 2019-01-30 | 基于共享内存的心跳状态判断方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910093763.8A CN109857344B (zh) | 2019-01-30 | 2019-01-30 | 基于共享内存的心跳状态判断方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109857344A CN109857344A (zh) | 2019-06-07 |
CN109857344B true CN109857344B (zh) | 2022-05-20 |
Family
ID=66896979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910093763.8A Active CN109857344B (zh) | 2019-01-30 | 2019-01-30 | 基于共享内存的心跳状态判断方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857344B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110830436B (zh) * | 2019-09-17 | 2021-11-19 | 网宿科技股份有限公司 | 用户登录方法与跳板机 |
CN113821414B (zh) * | 2021-11-22 | 2022-02-08 | 成都新希望金融信息有限公司 | 一种服务器保护方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1717658A (zh) * | 2002-11-27 | 2006-01-04 | 甲骨文国际公司 | 集群系统的心跳机构 |
CN103069741A (zh) * | 2011-08-17 | 2013-04-24 | 华为技术有限公司 | 凭据认证方法及单点登录服务器 |
CN106873918A (zh) * | 2017-02-27 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟化系统中的存储设置方法及装置 |
CN107678918A (zh) * | 2017-09-26 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种分布式文件系统的osd心跳机制设置方法及装置 |
CN108924195A (zh) * | 2018-06-20 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种单向心跳机制实现方法、装置、设备及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201839B (zh) * | 2015-04-30 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 一种业务对象的信息加载方法和装置 |
-
2019
- 2019-01-30 CN CN201910093763.8A patent/CN109857344B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1717658A (zh) * | 2002-11-27 | 2006-01-04 | 甲骨文国际公司 | 集群系统的心跳机构 |
CN103069741A (zh) * | 2011-08-17 | 2013-04-24 | 华为技术有限公司 | 凭据认证方法及单点登录服务器 |
CN106873918A (zh) * | 2017-02-27 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟化系统中的存储设置方法及装置 |
CN107678918A (zh) * | 2017-09-26 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种分布式文件系统的osd心跳机制设置方法及装置 |
CN108924195A (zh) * | 2018-06-20 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种单向心跳机制实现方法、装置、设备及系统 |
Non-Patent Citations (2)
Title |
---|
Adaptive Task Scheduling Strategy Based on Dynamic Workload Adjustment for Heterogeneous Hadoop Clusters;Xiaolong Xu et al.;《IEEE SYSTEMS JOURNAL》;20160630;第10卷(第2期);全文 * |
基于共享内存的机群服务检查点机制研究;梁毅 等;《计算机研究与发展》;20100415;第47卷(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109857344A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750267B (zh) | 业务信息更新方法、装置、计算机设备和存储介质 | |
CN110602169B (zh) | 服务调用方法、装置、计算机设备和存储介质 | |
CN110768873B (zh) | 分布式心跳检测方法、系统、装置和计算机设备 | |
CN108965383B (zh) | 文件同步方法、装置、计算机设备和存储介质 | |
CN109857344B (zh) | 基于共享内存的心跳状态判断方法、装置和计算机设备 | |
CN109413153B (zh) | 数据爬取方法、装置、计算机设备和存储介质 | |
CN112153170B (zh) | 访问服务器的方法、装置、设备及存储介质 | |
CN109389299B (zh) | 工作流流程部署方法、装置、计算机设备和存储介质 | |
CN108959384B (zh) | 网页数据获取方法、装置、计算机设备和存储介质 | |
CN110795171B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN109491772B (zh) | 业务序号生成方法、装置、计算机设备和存储介质 | |
CN109032527B (zh) | 数据处理方法、存储介质及计算机设备 | |
CN111858588B (zh) | 一种分布式应用索引服务平台及数据处理方法 | |
CN108924043A (zh) | 系统监控方法、网关通信、网关装置、业务处理设备 | |
CN111159233A (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN111224939B (zh) | 任务请求的拦截方法、装置、计算机设备和存储介质 | |
CN110727698A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN110597693B (zh) | 告警信息发送方法、装置、设备、系统及存储介质 | |
CN110719337A (zh) | 业务系统、业务请求处理方法、装置及服务器 | |
CN111258860B (zh) | 数据告警方法、装置、计算机设备和存储介质 | |
CN115017538A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114168876A (zh) | 页面显示方法、装置、计算机设备及计算机可读存储介质 | |
CN113515056A (zh) | 功能的执行方法及智能家电 | |
CN113504879A (zh) | 数据存储的方法及智能家电 | |
CN112287236A (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 |