CN106874103A - 心跳实现方法及装置 - Google Patents
心跳实现方法及装置 Download PDFInfo
- Publication number
- CN106874103A CN106874103A CN201611093916.1A CN201611093916A CN106874103A CN 106874103 A CN106874103 A CN 106874103A CN 201611093916 A CN201611093916 A CN 201611093916A CN 106874103 A CN106874103 A CN 106874103A
- Authority
- CN
- China
- Prior art keywords
- node
- value
- write
- load
- heartbeat
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种心跳实现方法及装置,其中,该方法包括:按照第一值周期性的执行第一写心跳操作,第一写心跳操作为向共享的存储空间中写入顺序计数值;在检测到本节点的负载过载时,将本节点的状态从正常切换为非正常,停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,其中,第二值大于第一值;按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种心跳实现方法及装置。
背景技术
在共享文件系统中,多个节点(例如,主机)组成一个集群,该集群中的所有节点可以访问同一存储空间,任一节点读写该存储空间中的文件时,其它节点仍可以访问该文件,节点间通过分布式锁协商读写权限。
在共享文件系统中,采用读写心跳机制来判定节点是否在线。具体的,在如图1所示的共享文件系统中包括节点1(节点ID为1)、节点2(节点ID为2)和节点3(节点ID为3),这3个节点可以访问存储空间中的同一逻辑盘(或称为卷),从该逻辑盘的固定基地址位置开始执行读写心跳操作,例如,该基地址位置为该逻辑盘4M字节位置,每一个节点写心跳的偏移地址为4字节(即写心跳内容占用4字节),则各个节点写心跳的方法如下:
节点1在4M~(4M+4)字节位置写入本节点的sequence(顺序)计数值1,节点2在(4M+4)~(4M+8)字节位置写入本节点的sequence计数值1,节点3在(4M+8)~(4M+12)字节位置写入本节点的sequence计数值1;然后,节点1在4M~(4M+4)字节位置将本节点的sequence计数值更新为2,节点2在(4M+4)~(4M+8)字节位置将本节点的sequence计数值更新为2,节点3在(4M+8)~(4M+12)字节位置将本节点的sequence计数值更新为2;以此类推。
每一个节点周期性的执行上述写心跳操作,并且,周期性的执行从该逻辑盘中读取所有节点的sequence计数值的读心跳操作,通过读取到的sequence计数值来判断其它节点是否在线。具体的判断方法是:针对任一其它节点,如果在预定时间内该其它节点的sequence计数值发生了变化,则确定该其它节点在线,否则,确定该其它节点不在线。一般情况下,读写心跳周期为2秒,上述预定时间可以为2秒的整数倍,例如,为4秒。
在上述的读写心跳机制中,当节点负载较大时,可能会导致读写心跳操作发生延时,特别是写心跳操作会发生延时,例如,将顺序计数值写入逻辑盘的过程较慢、写不进去等。
发明内容
有鉴于此,本申请提供一种心跳实现方法及装置。
具体地,本申请是通过如下技术方案实现的:
一方面,提供了一种心跳实现方法,该方法应用于共享文件系统中的节点,该方法包括:
按照第一值周期性的执行第一写心跳操作,第一写心跳操作为向共享的存储空间中写入顺序计数值;
在检测到本节点的负载过载时,将本节点的状态从正常切换为非正常,停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,其中,第二值大于第一值;
按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1。
另一方面,还提供了一种心跳实现装置,该装置应用于共享文件系统中的节点中,该装置包括:
检测单元,用于检测本节点的负载情况;
状态切换单元,用于在检测单元检测到本节点的负载过载时,将本节点的状态从正常切换为非正常;
写心跳执行单元,用于按照第一值周期性的执行第一写心跳操作,第一写心跳操作为向共享的存储空间中写入顺序计数值;还用于在检测单元检测到本节点的负载过载时,停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1,第二值大于第一值。
通过本申请的以上技术方案,在现有的写心跳操作(称为第一写心跳操作)的基础上,新增了一种向本节点中写入顺序计数值的写心跳操作(称为第二写心跳操作),初始时,节点会以第一值为周期执行第一写心跳操作,在本节点的负载变大时,节点不再按照第一值周期性的执行第一写心跳操作,而是按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给其它节点,其中,第二值大于第一值。由于在节点的负载较大时,增大了心跳周期,而且,不再向存储空间中写入顺序计数值,而是向本节点中写入顺序计数值,因此,降低了读写心跳的频率,减少了读写心跳占用的CPU资源和IO(输入输出)资源,而且,向本节点中写入顺序计数值的操作能够更加及时快速的完成,避免了向存储空间写入顺序计数值存在的执行过程较慢、写不进去等造成的写心跳操作延时问题。
附图说明
图1是一种共享文件系统的架构示意图;
图2是本申请一示例性实施例示出的心跳实现方法的流程图;
图3是图1中的节点1在检测到本节点的负载过载时执行的流程图;
图4是图1中的节点1在检测到本节点的负载恢复正常时执行的流程图;
图5是图1中的节点3在检测到节点2的状态从Abnormal切换为Normal时执行的流程图;
图6是本申请一示例性实施例示出的心跳实现装置所在节点的硬件结构示意图;
图7是本申请一示例性实施例示出的心跳实现装置的一种结构示意图;
图8是本申请一示例性实施例示出的心跳实现装置的另一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了解决现有技术中存在的当节点负载较大时,会导致读写心跳操作发生延时的问题,本申请以下实施例中提供了一种心跳实现方法,以及一种可以应用该方法的装置。
在本申请实施例的心跳实现方法中,每一个节点的初始状态均为正常(Normal),心跳周期的初始值为第一值,此时,任一节点在挂载共享文件系统后,会按照第一值周期性的执行现有技术的写心跳操作(为了描述方便,称为第一写心跳操作),即,向共享的存储空间中写入本节点的顺序计数值,后续,在检测到本节点的负载过载时,会切换为执行第二写心跳操作,即,向本节点中写入本节点的顺序计数值。具体的,在执行第二写心跳操作时,可以将顺序计数值写入本节点的内存或本地磁盘等存储介质中。
具体的过程如图2所示,包括以下步骤:
步骤S101,在检测到本节点的负载过载时,将本节点的状态从Normal切换为非正常(Abnormal),停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,其中,第二值大于第一值;
在实际实施过程中,第二值T2大于第一值T1即可,优选的,T2可以设置为T1的整数倍,即,2*T1、3*T1等。例如,T1可以为2秒,T2可以为10秒。
通常情况下,读心跳操作和写心跳操作的周期相同,因此,本申请实施例中提到的心跳周期为读心跳操作和写心跳操作共同的周期,当心跳周期发生了更新时,按照更新后的心跳周期,执行写心跳操作和读心跳操作。
步骤S102,按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,其中,写入的顺序计数值的起始值为M或M+1。
具体的,当写入的顺序计数值的起始值为M时,首次执行第二写心跳操作时,将M写入上述存储介质中,并将M发送给其它节点;然后,第二次执行第二写心跳操作时,将该存储介质中的M更新为M+1,并将M+1发送给其它节点;之后,第三次执行第二写心跳操作时,将该存储介质中的M+1更新为M+2,并将M+2发送给其它节点;以此类推。
本申请上述实施例的方法中,在现有的写心跳操作(称为第一写心跳操作)的基础上,新增了一种向本节点中写入顺序计数值的写心跳操作(称为第二写心跳操作),初始时,节点会以第一值为周期执行第一写心跳操作,在本节点的负载变大时,节点不再按照第一值周期性的执行第一写心跳操作,而是按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给其它节点,其中,第二值大于第一值。由于在节点的负载较大时,增大了心跳周期,而且,不再向存储空间中写入顺序计数值,而是向本节点中写入顺序计数值,因此,降低了读写心跳的频率,减少了读写心跳占用的CPU资源和IO资源,而且,向本节点中写入顺序计数值的操作能够更加及时快速的完成,避免了向存储空间写入顺序计数值存在的执行过程较慢、写不进去等造成的写心跳操作延时问题。
上述的共享文件系统具体可以为OCFS2(Oracle Cluster File System 2,Oracle集群文件系统2)、NFS(Network File System,网络文件系统)、以及VMFS(Virtual MachineFile System,虚拟机文件系统)等。
以图1所示的共享文件操作系统为例,说明本申请实施例的方法。该共享文件系统中包括3个节点:节点1、节点2和节点3,这3个节点的初始状态均为Normal,心跳周期的初始值为第一值T1,假设T1=2秒,第二值T2=10秒。节点1~节点3中的任一节点均需要维护所有其它节点的状态,状态初始值为Normal。节点维护其它节点的状态的方式可以有多种,例如,可以采用以下方式中的任一种:
方式一、每一个节点在本节点的状态发生了改变时,将变化后的新状态通知给其它节点,该其它节点接收到该通知后,就可以对本地保存的节点状态进行更新;
方式二、每一个节点周期性的将本节点的状态通知给其它节点,该其它节点接收到该通知后,就可以对本地保存的节点状态进行更新;
方式三、将方式一和方式二结合,即,周期性通知,并且,在状态发生变化时也会通知。
基于此,本申请实施例的心跳实现方法如下:
初始时,节点1~节点3中的任一节点以2秒为周期执行第一写心跳操作,并且,以2秒为周期执行读心跳操作。
此时,在执行读心跳操作时,在从存储空间中读取到所有节点的顺序计数值之后,针对任一其它节点,判断该其它节点的顺序计数值在第一预定时间内是否发生了变化,若是,则确定该其它节点在线,否则,确定该其它节点不在线。其中,上述第一预定时间可以为第一值T1的整数倍,例如,该第一预定时间为4秒。
首先,节点1发生了过载。
节点1在检测到本节点的负载过载时,会执行如图3所示的步骤:
步骤S201,在检测到本节点的负载发生过载时,将本节点的状态从Normal切换为Abnormal,停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为10秒;
在节点1的状态切换为Abnormal时,节点2和节点3可以通过上述方式一至方式三中的任一种方式,检测到节点1的状态变化,并将本地保存的节点1的状态更新为Abnormal。此时,节点1的状态为Abnormal,节点2和节点3的状态为Normal。
在步骤S201中,节点1可以通过获取本节点的负载信息的方式来检测本节点的负载是否过载,获取的负载信息可以是与读写心跳操作有关的一种或者多种信息的组合,例如,可以是IOPS(Input/Output Operations Per Second,每秒进行读写(I/O)操作的次数)、CPU(中央处理单元)资源利用率、存储资源利用率等负载信息中的一种或多种的组合。下面分别对这两种情况加以介绍。
情况一、当获取一种负载信息时
在情况一中,该负载信息对应于一个预设阈值,例如,当该负载信息是IOPS时,对应的预设阈值为800,当该负载信息是CPU资源利用率时,对应的预设阈值为90%,当该负载信息为存储资源利用率时,对应的预设阈值为85%。
这样,检测本节点的负载是否过载的方式为:判断获取到的负载信息的数值是否大于预设阈值,若是,则确定本节点的负载过载,否则,确定本节点的负载没有过载。
情况二、当获取两种以上负载信息时
在情况二中,每一种负载信息对应于一个预设阈值,则,检测本节点的负载是否过载的方式为:若获取到的每一个负载信息的数值均大于对应的预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载。
步骤S201,以10秒为周期执行第二写心跳操作,每次执行第二写心跳操作时,将写入的顺序计数值发送给节点2和节点3,其中,写入的顺序计数值的起始值为M或M+1。
在步骤S201中节点1可以将顺序计数值携带在心跳计数报文中发送给节点2和节点3。
另外,节点1还会以10秒为周期执行读心跳操作。
节点2和节点3在检测到节点1的状态从Normal切换为Abnormal时,发现本节点的心跳周期为2秒,则会将本节点的心跳周期更新为10秒,以10秒为周期执行第一写心跳操作;在接收到节点1发来的顺序计数值之后,会保存该顺序计数值,具体的,可以在内存中保存节点1发来的顺序计数值。
另外,节点2和节点3还会以10秒为周期执行读心跳操作。其中,节点2在从存储空间中读取到所有节点的顺序计数值之后,针对节点1,会根据本节点2中保存的节点1的顺序计数值,判断节点1的顺序计数值在第二预定时间内是否发生了变化,若发生了变化,则确定节点1在线,否则,确定节点1不在线,针对节点3,依然会按照现有技术,根据从存储空间中读取到的节点3的顺序计数值进行判断,若判断出发生了变化,则确定节点3在线,否则,确定节点3不在线。
节点3在从存储空间中读取到所有节点的顺序计数值之后,针对节点1,会根据本节点3中保存的节点1的顺序计数值,判断节点1的顺序计数值在第二预定时间内是否发生了变化,若发生了变化,则确定节点1在线,否则,确定节点1不在线,针对节点2,依然会按照现有技术,根据从存储空间中读取到的节点2的顺序计数值进行判断,若判断出发生了变化,则确定节点2在线,否则,确定节点2不在线。
其中,上述第二预定时间可以为第二值T2的整数倍,例如,当T2=10秒时,该第二预定时间可以为20秒。
然后,节点2也发生了过载。
节点2在检测到本节点的负载过载时,也会执行如图3所示的步骤。
节点1和节点3在检测到节点2的状态变为Abnormal时,会将本地保存的节点2的状态更新为Abnormal。此时,节点1和节点2的状态均为Abnormal,节点3的状态为Normal。
节点1在接收到节点2发来的顺序计数值之后,会保存该顺序计数值。这样,节点1在执行读心跳操作时,从存储空间中读取到所有节点的顺序计数值之后,针对节点2,根据本节点1中保存的节点2的顺序计数值,判断节点2的顺序计数值在第二预定时间内是否发生了变化,若发生了变化,则确定节点2在线,否则,确定节点2不在线;针对节点3,依然会按照现有技术,根据从存储空间中读取到的节点3的顺序计数值进行判断,若判断出发生了变化,则确定节点3在线,否则,确定节点3不在线。
节点3在接收到节点2发来的顺序计数值之后,会保存该顺序计数值。这样,节点3在执行读心跳操作时,从存储空间中读取到所有节点的顺序计数值之后,针对节点1和节点2中的任一其它节点,会根据本节点3中保存的该其它节点的顺序计数值,判断该其它节点的顺序计数值在第二预定时间内是否发生了变化,若发生了变化,则确定该其它节点在线,否则,确定该其它节点不在线。
之后,节点1的负载恢复正常。
节点1在检测到本节点的负载恢复正常时,会将本节点的状态从Abnormal切换为Normal。节点2和节点3可以检测到节点1的状态变化,将本地保存的节点1的状态更新为Normal,此时,节点1和节点3的状态为Normal,节点2的状态为Abnormal。
与判断本节点的负载是否过载类似,判断本节点的负载是否恢复正常的方式为:
在上述情况一中,检测本节点的负载是否恢复正常的方式为:判断获取到的负载信息的数值是否不大于预设阈值,若是,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常。
在上述情况二中,检测本节点的负载是否恢复正常的方式为:若获取到的每一个负载信息的数值均不大于对应的预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常。
节点1在Normal状态时,由于节点1当前的心跳周期为10秒,并且当前执行的是第二写心跳周期,因此,会执行如图4所示的步骤:
步骤S301,判断所有其它节点的状态是否均为Normal,即,判断本地保存的节点2和节点3的状态是否均为Normal,若是,则执行步骤S302,否则,执行步骤S304;
步骤S302,停止执行第二写心跳操作,获取第二写心跳操作的最新顺序计数值N,将本节点的心跳周期更新为2秒;
步骤S303,按照2秒周期性的执行第一写心跳操作和读心跳操作,其中,执行第一写心跳操作时写入的顺序计数值的起始值为N或N+1,之后退出本流程。
步骤S304,继续按照10秒周期性的执行第二写心跳操作和读心跳操作,之后退出本流程。
由于节点1在步骤S301中判断出节点2的状态为Abnormal,节点3的状态为Normal,因此,会执行步骤S304,继续以10秒为周期执行第二写心跳操作和读心跳操作。
后续,节点2的负载也恢复正常。
节点2在检测到本节点的负载恢复正常时,也会将本节点的状态从Abnormal切换为Normal,并且,由于节点2当前的心跳周期为10秒,且当前执行的是第二写心跳周期,因此,也会执行如图4所示的流程。此时,节点2会在步骤S301中判断出节点1和节点3的状态均为Normal,从而执行步骤S302和步骤S303,切换为以2秒为周期执行第一写心跳操作和读心跳操作。
节点1和节点3可以检测到节点2的状态从Abnormal切换为Normal,从而将本地保存的节点2的状态更新为Normal。
其中,节点1在检测到节点2的状态从Abnormal切换为Normal后,由于节点1当前的状态为Normal,当前的心跳周期为10秒,且当前执行的是第二写心跳操作,因此,节点1会执行如图4所示的步骤。此时,节点1会在步骤S301中判断出节点2和节点3的状态均为Normal,从而执行步骤S302和步骤S303,切换以2秒为周期执行第一写心跳操作和读心跳操作。
节点3在检测到节点2的状态从Abnormal切换为Normal时,由于节点3当前的状态为Normal,当前的心跳周期为10秒,且当前执行的是第一写心跳操作,因此,节点3会执行如图5所示的步骤:
步骤S401,判断所有其它节点的状态是否均为Normal,即,判断本地保存的节点1和节点2的状态是否均为Normal,若是,则执行步骤S402,否则,执行步骤S403;
步骤S402,将本节点的心跳周期更新为2秒,之后退出本流程。
步骤S403,继续按照当前的心跳周期10秒,周期性的执行第一写心跳操作和读心跳操作,之后退出本流程。
由于节点3在步骤S401中判断出节点1和节点2的状态均为Normal,因此,会执行步骤S402,从而以2秒为周期执行第一写心跳操作和读心跳操作。
由上可见,节点在检测到本节点的负载发生了过载时,会以更大的第二值为周期执行向本节点中写入顺序计数值的第二写心跳操作,另外,在检测到本节点的负载恢复正常,并且所有其它节点的状态均为Normal时,才会恢复为以较小的第一值为周期执行向存储空间中写入顺序计数值的第一写心跳操作。依据本节点的负载情况进行第一写心跳操作与第二写心跳操作之间的切换,减少了读写心跳的延时,确保了共享文件系统的正常读写心跳机制的实现。
与前述心跳实现方法的实施例相对应,本申请还提供了心跳实现装置的实施例。
本申请心跳实现装置60的实施例可以应用在共享文件系统中的任一节点上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在节点的处理器10将非易失性存储器50中对应的计算机程序指令读取到内存40中运行形成的。从硬件层面而言,如图6所示,为本申请心跳实现装置所在节点的一种硬件结构图,除了图6所示的处理器10、内部总线20、网络接口30、内存40、以及非易失性存储器50之外,实施例中装置所在的节点通常根据该节点的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图7,本申请实施例的心跳实现装置60中包括以下单元:检测单元601、状态切换单元602和写心跳执行单元603,其中:
检测单元601,用于检测本节点的负载情况;
状态切换单元602,用于在检测单元601检测到本节点的负载过载时,将本节点的状态从正常切换为非正常;
写心跳执行单元603,用于按照第一值周期性的执行第一写心跳操作,第一写心跳操作为向共享的存储空间中写入顺序计数值;还用于在检测单元601检测到本节点的负载过载时,停止执行第一写心跳操作,获取第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,按照第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1,第二值大于第一值。
其中,检测单元601,还用于检测其它节点的状态;
写心跳执行单元603,还用于在检测单元601检测到任一其它节点的状态从正常切换为非正常时,若本节点的心跳周期为第一值,则将本节点的心跳周期更新为第二值。
如图8所示,上述心跳实现装置60中还包括:接收单元604和读心跳执行单元605,其中:
接收单元604,用于接收其它节点发来的顺序计数值,保存该顺序计数值;
读心跳执行单元605,用于在执行读心跳操作时,判断本节点中保存的该其它节点的顺序计数值在预定时间内是否发生了改变,若是,则确定该其它节点在线,否则,确定该其它节点不在线。
如图8所示,上述心跳实现装置60中还包括:判断单元606,其中:
状态切换单元602,还用于在检测单元601检测到本节点的负载恢复正常时,将本节点的状态从非正常切换为正常;
判断单元605,用于当本节点的状态为正常时,判断所有其它节点的状态是否均为正常;
写心跳执行单元603,还用于若判断单元605判断出所有其它节点的状态均为正常,则在本节点当前执行的是第二写心跳操作时,停止执行第二写心跳操作,获取第二写心跳操作的最新顺序计数值N,将本节点的心跳周期更新为第一值,按照第一值周期性的执行第一写心跳操作,其中,执行第一写心跳操作时写入的顺序计数值的起始值为N或N+1;在本节点当前执行的是第一写心跳操作时,若本节点的心跳周期为第二值,则将本节点的心跳周期更新为第一值。
如图8所示,上述心跳实现装置60中还包括:获取单元607,用于获取本节点的负载信息;则,
当获取单元607获取一种负载信息时,检测单元601具体用于通过以下方式检测本节点的负载是否过载:若获取单元607获取到的负载信息的数值大于预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;检测单元601具体用于通过以下方式检测本节点是否恢复正常:若获取单元607获取到的负载信息的数值不大于预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常;
当获取单元607获取两种以上负载信息时,检测单元601具体用于通过以下方式检测本节点的负载是否过载:若获取单元607获取到的每一个负载信息的数值均大于对应的预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;检测单元604具体用于通过以下方式检测本节点是否恢复正常:若获取单元607获取到的每一个负载信息的数值均不大于对应的预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种心跳实现方法,其特征在于,所述方法应用于共享文件系统中的节点,所述方法包括:
按照第一值周期性的执行第一写心跳操作,所述第一写心跳操作为向共享的存储空间中写入顺序计数值;
在检测到本节点的负载过载时,将本节点的状态从正常切换为非正常,停止执行所述第一写心跳操作,获取所述第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,其中,所述第二值大于所述第一值;
按照所述第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,所述第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到任一其它节点的状态从正常切换为非正常时,若本节点的心跳周期为所述第一值,则将本节点的心跳周期更新为所述第二值。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到其它节点发来的顺序计数值之后,保存该其它节点发来的顺序计数值;
在执行读心跳操作时,判断本节点中保存的该其它节点的顺序计数值在预定时间内是否发生了改变,若是,则确定该其它节点在线,否则,确定该其它节点不在线。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到本节点的负载恢复正常时,将本节点的状态从非正常切换为正常;
当本节点的状态为正常时,判断所有其它节点的状态是否均为正常;
若是,则在本节点当前执行的是所述第二写心跳操作时,停止执行所述第二写心跳操作,获取所述第二写心跳操作的最新顺序计数值N,将本节点的心跳周期更新为所述第一值,按照所述第一值周期性的执行所述第一写心跳操作,其中,执行所述第一写心跳操作时写入的顺序计数值的起始值为N或N+1;在本节点当前执行的是所述第一写心跳操作时,若本节点的心跳周期为所述第二值,则将本节点的心跳周期更新为所述第一值。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:获取本节点的负载信息;
当获取一种负载信息时,通过以下方式检测本节点的负载是否过载:若获取到的负载信息的数值大于预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;通过以下方式检测本节点是否恢复正常:若获取到的负载信息的数值不大于所述预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常;
当获取两种以上负载信息时,通过以下方式检测本节点的负载是否过载:若获取到的每一个负载信息的数值均大于对应的预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;通过以下方式检测本节点是否恢复正常:若获取到的每一个负载信息的数值均不大于对应的预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常。
6.一种心跳实现装置,其特征在于,所述装置应用于共享文件系统中的节点中,所述装置包括:
检测单元,用于检测本节点的负载情况;
状态切换单元,用于在所述检测单元检测到本节点的负载过载时,将本节点的状态从正常切换为非正常;
写心跳执行单元,用于按照第一值周期性的执行第一写心跳操作,所述第一写心跳操作为向共享的存储空间中写入顺序计数值;还用于在所述检测单元检测到本节点的负载过载时,停止执行所述第一写心跳操作,获取所述第一写心跳操作的最新顺序计数值M,将本节点的心跳周期更新为第二值,按照所述第二值周期性的执行第二写心跳操作,并将写入的顺序计数值发送给除本节点以外的其它节点,所述第二写心跳操作为向本节点中写入顺序计数值,其中,写入的顺序计数值的起始值为M或M+1,所述第二值大于所述第一值。
7.根据权利要求6所述的装置,其特征在于,
所述检测单元,还用于检测其它节点的状态;
所述写心跳执行单元,还用于在所述检测单元检测到任一其它节点的状态从正常切换为非正常时,若本节点的心跳周期为所述第一值,则将本节点的心跳周期更新为所述第二值。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:接收单元和读心跳执行单元,其中:
所述接收单元,用于接收其它节点发来的顺序计数值,保存该顺序计数值;
所述读心跳执行单元,用于在执行读心跳操作时,判断本节点中保存的该其它节点的顺序计数值在预定时间内是否发生了改变,若是,则确定该其它节点在线,否则,确定该其它节点不在线。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:判断单元,其中:
所述状态切换单元,还用于在所述检测单元检测到本节点的负载恢复正常时,将本节点的状态从非正常切换为正常;
所述判断单元,用于当本节点的状态为正常时,判断所有其它节点的状态是否均为正常;
所述写心跳执行单元,还用于若所述判断单元判断出所有其它节点的状态均为正常,则在本节点当前执行的是所述第二写心跳操作时,停止执行所述第二写心跳操作,获取所述第二写心跳操作的最新顺序计数值N,将本节点的心跳周期更新为所述第一值,按照所述第一值周期性的执行所述第一写心跳操作,其中,执行所述第一写心跳操作时写入的顺序计数值的起始值为N或N+1;在本节点当前执行的是所述第一写心跳操作时,若本节点的心跳周期为所述第二值,则将本节点的心跳周期更新为所述第一值。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:获取单元,用于获取本节点的负载信息;则,
当所述获取单元获取一种负载信息时,所述检测单元具体用于通过以下方式检测本节点的负载是否过载:若所述获取单元获取到的负载信息的数值大于预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;所述检测单元具体用于通过以下方式检测本节点是否恢复正常:若所述获取单元获取到的负载信息的数值不大于所述预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常;
当所述获取单元获取两种以上负载信息时,所述检测单元具体用于通过以下方式检测本节点的负载是否过载:若所述获取单元获取到的每一个负载信息的数值均大于对应的预设阈值,则确定本节点的负载过载,否则,确定本节点的负载没有过载;所述检测单元具体用于通过以下方式检测本节点是否恢复正常:若所述获取单元获取到的每一个负载信息的数值均不大于对应的预设阈值,则确定本节点的负载恢复正常,否则,确定本节点的负载没有恢复正常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611093916.1A CN106874103B (zh) | 2016-12-01 | 2016-12-01 | 心跳实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611093916.1A CN106874103B (zh) | 2016-12-01 | 2016-12-01 | 心跳实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874103A true CN106874103A (zh) | 2017-06-20 |
CN106874103B CN106874103B (zh) | 2020-04-03 |
Family
ID=59239488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611093916.1A Active CN106874103B (zh) | 2016-12-01 | 2016-12-01 | 心跳实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874103B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544758A (zh) * | 2017-08-29 | 2018-01-05 | 新华三云计算技术有限公司 | 集群的磁盘心跳检测方法和装置 |
CN107590050A (zh) * | 2017-09-04 | 2018-01-16 | 杭州迪普科技股份有限公司 | 一种检查外部插件设备异常的方法及装置 |
CN110049532A (zh) * | 2019-03-12 | 2019-07-23 | 上海感悟通信科技有限公司 | 一种用于无线自组网的心跳方法、受控节点和控制节点 |
CN110321515A (zh) * | 2019-07-12 | 2019-10-11 | 北京字节跳动网络技术有限公司 | 网页数据存储方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634683B2 (en) * | 2004-01-20 | 2009-12-15 | International Business Machines Corporation | Managing failover of J2EE compliant middleware in a high availability system |
CN102523158A (zh) * | 2011-12-15 | 2012-06-27 | 杭州电子科技大学 | 一种基于权重的元数据服务器集群负载均衡方法 |
US20120254607A1 (en) * | 2011-04-01 | 2012-10-04 | International Business Machines Corporation | System And Method For Security Levels With Cluster Communications |
CN104866395A (zh) * | 2014-02-24 | 2015-08-26 | 中国移动通信集团福建有限公司 | 数据备份方法及系统、主备切换方法及系统 |
-
2016
- 2016-12-01 CN CN201611093916.1A patent/CN106874103B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634683B2 (en) * | 2004-01-20 | 2009-12-15 | International Business Machines Corporation | Managing failover of J2EE compliant middleware in a high availability system |
US20120254607A1 (en) * | 2011-04-01 | 2012-10-04 | International Business Machines Corporation | System And Method For Security Levels With Cluster Communications |
CN102523158A (zh) * | 2011-12-15 | 2012-06-27 | 杭州电子科技大学 | 一种基于权重的元数据服务器集群负载均衡方法 |
CN104866395A (zh) * | 2014-02-24 | 2015-08-26 | 中国移动通信集团福建有限公司 | 数据备份方法及系统、主备切换方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544758A (zh) * | 2017-08-29 | 2018-01-05 | 新华三云计算技术有限公司 | 集群的磁盘心跳检测方法和装置 |
CN107544758B (zh) * | 2017-08-29 | 2020-07-10 | 新华三云计算技术有限公司 | 集群的磁盘心跳检测方法和装置 |
CN107590050A (zh) * | 2017-09-04 | 2018-01-16 | 杭州迪普科技股份有限公司 | 一种检查外部插件设备异常的方法及装置 |
CN110049532A (zh) * | 2019-03-12 | 2019-07-23 | 上海感悟通信科技有限公司 | 一种用于无线自组网的心跳方法、受控节点和控制节点 |
CN110049532B (zh) * | 2019-03-12 | 2021-04-30 | 上海感悟通信科技有限公司 | 一种用于无线自组网的心跳方法、受控节点和控制节点 |
CN110321515A (zh) * | 2019-07-12 | 2019-10-11 | 北京字节跳动网络技术有限公司 | 网页数据存储方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106874103B (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4054616B2 (ja) | 論理計算機システム、論理計算機システムの構成制御方法および論理計算機システムの構成制御プログラム | |
CN106874103A (zh) | 心跳实现方法及装置 | |
EP3518110A2 (en) | Designation of a standby node | |
JP2006351004A (ja) | 携帯端末機のメモリ管理方法 | |
CN109710456B (zh) | 一种数据恢复方法及装置 | |
CN109491609A (zh) | 一种缓存数据处理方法、装置、设备及可读存储介质 | |
JP5668982B2 (ja) | ストレージシステム、アクセスパス状態更新方法およびアクセスパス状態更新プログラム | |
CN110049091A (zh) | 数据存储方法及装置、电子设备、存储介质 | |
CN107861691A (zh) | 一种多控存储系统的负载均衡方法和装置 | |
KR20170052441A (ko) | 중앙 집중 분산 시스템 및 그것의 동작 방법 | |
CN104991866B (zh) | Js程序的调试方法及装置 | |
JP5401903B2 (ja) | 故障情報監視装置及び故障情報監視方法 | |
CN108512753A (zh) | 一种集群文件系统中消息传输的方法及装置 | |
CN109587218B (zh) | 一种集群选举的方法和装置 | |
CN109388511B (zh) | 一种信息处理方法、电子设备及计算机存储介质 | |
CN107229882B (zh) | 在可信模式与非可信模式之间互相切换的处理器 | |
CN106201442B (zh) | 应用程序的执行方法及装置 | |
CN111177028B (zh) | 一种动态多级缓存的方法和设备 | |
US11409673B2 (en) | Triggered operations for collective communication | |
CN112800057A (zh) | 一种指纹表管理方法及装置 | |
JP5565187B2 (ja) | 情報処理装置および割込み制御プログラム | |
CN106547473B (zh) | 一种磁盘阵列的写控制方法及装置 | |
CN109669814A (zh) | 一种元数据服务的恢复方法、装置、设备及可读存储介质 | |
WO2012081720A1 (ja) | データ管理装置、システム、プログラム、および、方法 | |
CN112350947B (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 |