首页 / 一种节点可用性检测方法及装置

一种节点可用性检测方法及装置无效专利 发明

技术领域

[0001] 本发明属于互联网技术领域,具体涉及一种节点可用性检测方法及装置。

相关背景技术

[0002] 现代互联网应用的性能压力前所未有,因此大部分互联网应用都基于分布式系统搭建,即通过多台服务器组成集群来提供服务。
[0003] 在服务器集群中通常设置有一个负载均衡节点和多个工作节点,若一个工作节点出现故障,整个系统仍然能够运行。在分布式系统中对出现故障的工作节点进行检测的过程叫做可用性检测。当前相关技术中通过负载均衡节点对工作节点进行可用性检测。负载均衡节点周期性地尝试与各个工作节点建立连接,根据与各个工作节点之间的连接结果,维护负载均衡列表。
[0004] 由于相关技术中负载均衡节点承担工作节点的故障检测及任务分发,导致负载均衡节点成为一个容易单点失败的节点,而若负载均衡节点出现故障或拥堵,则整个系统将无法运行。

具体实施方式

[0046] 下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0047] 实施例1
[0048] 本发明实施例提供一种节点可用性检测方法,如图1所示,该方法所基于的网络架构为服务器集群,该服务器集群包括负载均衡节点和多个工作节点。图1中仅示意性地画出了负载均衡节点S0,以及S1、S2、S3和S4四个工作节点。在本发明实施例中,由工作节点承担各工作节点的可用性检测,负载均衡节点仅根据工作节点上传的检测结果进行负载均衡即可,减轻了负载均衡节点的负担,降低了负载均衡节点单点失败的可能性,提高了整个系统的稳定性。
[0049] 如图2所示,在本发明实施例提供的方法中,每个工作节点均通过如下步骤101-103的操作来对服务器集群中除自身以外的其他工作节点进行可用性检测,具体包括:
[0050] 步骤101:工作节点周期性地发送连接请求给服务器集群中的其他工作节点。
[0051] 在服务器集群中,每个工作节点都具有各自的节点标识。工作节点周期性地发送连接请求给服务器集群中除自身外的其他每个工作节点,该连接请求携带该工作节点的节点标识。
[0052] 本发明实施例中,工作节点周期性地尝试与其他工作节点建立TCP(Transmission Control Protocol,传输控制协议)连接,通过尝试进行TCP连接来检测其他工作节点的可用性。服务器集群中的每个工作节点均周期性地尝试与其他工作节点建立TCP连接,各个工作节点进行可用性检测的周期可以同步,也可以不同步。
[0053] 步骤102:该工作节点根据与其他每个工作节点之间的连接结果,获得集群可用性数据。
[0054] 该工作节点根据与其他每个工作节点之间的连接结果,分别设置其他每个工作节点对应的可用性标识值,将其他每个工作节点对应的可用性标识值组成集群可用性数据。可用性标识值用于标识工作节点是否可用,采用预先约定的字符或数值来标识可用或不可用,如预先约定用1标识可用,0标识不可用。
[0055] 工作节点发送连接请求给其他工作节点后,若其他工作节点当前可用,则能够建立该工作节点与其他工作节点之间的TCP连接,连接建立之后其他工作节点将发送连接响应消息给该工作节点。该工作节点接收到其他工作节点返回的连接响应消息时确认其他工作节点可用,将其他工作节点对应的可用性标识值设置为标识可用的字符或数值,如设置为1。若其他工作节点当前不可用,则无法建立该工作节点与其他工作节点之间的TCP连接,当该工作节点监测到超过预设时长仍未接收到其他工作节点返回的连接响应消息时确认其他工作节点不可用,将其他工作节点对应的可用性标识值设置为标识不可用的字符或数值,如设置为0。
[0056] 该工作节点按照上述方式确定其他每个工作节点对应的可用性标识值后,按照预设顺序将其他每个工作节点对应的可用性标识值组成集群可用性数据。预设顺序可以为预先约定的工作节点的排列顺序。还可以将其他工作节点的节点标识与可用性数据标识值组成数对,将其他每个工作节点对应的数对组成集群可用性数据。
[0057] 为了便于理解,下面结合附图1进行举例说明。例如,工作节点S1分别发送连接请求给工作节点S2、S3和S4,之后接收到工作节点S2和S3返回的连接响应消息,但超过预设时长仍未接收到工作节点S4发送的连接响应消息。则工作节点S1确定工作节点S2和S3对应的可用性标识值均为1,工作节点S4对应的可用性标识值均为0。假设预先约定的工作节点的排列顺序为工作节点S1、S2、S3、S4,则工作节点S1将工作节点S2、S3和S4对应的可用性标识值组成集群可用性数据110。
[0058] 步骤103:该工作节点发送集群可用性数据给负载均衡节点。
[0059] 在工作节点中,可用性检测的操作与负载均衡节点分发的业务任务是通过多线程并发同步进行的,且可用性检测是周期性进行的,可用性检测对工作节点的系统资源占用不大,不影响工作节点处理业务任务。
[0060] 服务器集群中各个工作节点均可按照上述步骤101-103的操作周期性地进行可用性检测。对于负载均衡节点,如图3所示,负载均衡节点仅需根据工作节点的检测结果,按照下述步骤104和105的操作来维护负载均衡列表,并根据负载均衡列表进行各个工作节点之间的负载均衡即可。
[0061] 步骤104:负载均衡节点获取服务器集群中每个工作节点上传的集群可用性数据。
[0062] 对于获取各个工作节点对应的集群可用性数据,负载均衡节点中可以配置两种不同的方式,下面分别进行具体说明。
[0063] 第一,负载均衡节点存储各个工作节点最近一次上传的集群可用性数据,在负载均衡节点的当前周期只要接收到一个工作节点上传的集群可用性数据,就开始进行负载均衡列表的更新处理。具体地,如图4所示,通过步骤1041和1042的操作来获取各个工作节点对应的集群可用性数据,包括:
[0064] 步骤1041:负载均衡节点接收一个工作节点上传的集群可用性数据。
[0065] 在负载均衡节点接收到该工作节点上传的集群可用性数据之后,还将本地存储的该工作节点过去最近一次上传的集群可用性数据更新为当前该工作节点上传的集群可用性数据。
[0066] 步骤1042:负载均衡节点从本地存储中获取服务器集群中除该工作节点外其他每个工作节点过去上传的集群可用性数据。
[0067] 采用第一种方式只要接收到一个工作节点上传的集群可用性数据,就结合本地存储的其他工作节点过去上传的集群可用性数据进行负载均衡列表的更新处理,负载均衡列表的更新周期短,可用性检测的周期短,灵敏性高,能够及时发现不可用的工作节点。
[0068] 第二,负载均衡节点不存储各个工作节点过去上传的集群可用性数据,在负载均衡节点的当前周期接收到一个工作节点上传的集群可用性数据后,负载均衡节点等待其他工作节点上传集群可用性数据,直到负载均衡节点接收到所有工作节点上传的集群可用性数据后,才开始进行负载均衡列表的更新处理。
[0069] 采用第二种方式要等到接收到各个工作节点上传的集群可用性数据后,才开始进行负载均衡列表的更新处理,能够避免负载均衡节点频繁进行列表更新操作,进一步减轻负载均衡节点的负担。
[0070] 负载均衡节点通过上述第一或第二种方式获取到服务器集群中每个工作节点上传的集群可用性数据后,通过如下步骤105来更新负载均衡列表。
[0071] 步骤105:负载均衡节点根据每个工作节点上传的集群可用性数据,更新负载均衡列表。
[0072] 在本发明实施例中,负载均衡节点通过如下步骤A1和A2的操作来更新负载均衡列表,具体包括:
[0073] A1:负载均衡节点根据每个工作节点上传的集群可用性数据,分别确定每个工作节点对应的可用系数。
[0074] 负载均衡节点根据每个工作节点上传的集群可用性数据,分别对每个工作节点的可用性进行投票,得到每个工作节点对应的可用性票数。可以将工作节点对应的可用性票数作为工作节点对应的可用系数。也可以将工作节点对应的可用性票数与总票数之间的比值作为工作节点对应的可用系数。总票数为服务器集群包括的工作节点总数减一。
[0075] 为了便于理解,下面举例进行说明。例如,假设预先约定的集群可用性数据中各工作节点的可用性标识值的排列顺序为工作节点S1、S2、S3、S4。负载均衡节点S0接收到工作节点S1上传的集群可用性数据为110,负载均衡节点本地存储的工作节点S2最近一次上传的集群可用性数据为101,工作节点S3最近一次上传的集群可用性数据为001,工作节点S4最近一次上传的集群可用性数据为100。则负载均衡节点S0根据各工作节点对应的集群可用性数据对各工作节点的可用性进行投票,得到工作节点S1的票数为2,工作节点S2的票数为1,工作节点S3的票数为1,工作节点S4的票数为2。若将可用性票数作为工作节点的可用系数,则工作节点S1、S2、S3、S4的可用系数依次为2、1、1、2。若将可用性票数与总票数之间的比值作为工作节点的可用系数,则工作节点S1、S2、S3、S4的可用系数依次为2/3、1/3、1/3、2/3。
[0076] A2:负载均衡节点根据每个工作节点对应的可用系数,更新负载均衡列表。
[0077] 在本发明实施例中,负载均衡节点可通过如下第一或第二种方式来更新负载均衡列表,具体包括:
[0078] 第一,负载均衡节点只更新负载均衡列表中可用性发生变化的工作节点的节点标识。
[0079] 为了便于描述,将每个工作节点中的任一工作节点称为第一工作节点。具体地,负载均衡节点判断第一工作节点对应的可用系数是否大于预设阈值,及判断负载均衡列表中是否包含第一工作节点的节点标识。若第一工作节点对应的可用系数大于预设阈值且负载均衡列表中不包含第一工作节点的节点标识,则将第一工作节点的节点标识添加到负载均衡列表中;若第一工作节点对应的可用系数小于或等于预设阈值且负载均衡列表中包含第一工作节点的节点标识,则从负载均衡列表中移除第一工作节点的节点标识。
[0080] 对于其他每个工作节点,与第一工作节点相同,都按照上述方式确定其他每个工作节点是否需要更新,若需要,则按照上述方式在负载均衡列表中进行更新。
[0081] 例如,假设预设阈值为1/2,工作节点S1、S2、S3、S4的可用系数依次为2/3、1/3、1/3、2/3,当前负载均衡列表中包括节点标识S1和S3。则负载均衡节点判断出工作节点S4的可用系数2/3大于预设阈值1/2,但负载均衡列表中并未包括工作节点S4的节点标识,因此在负载均衡列表中添加节点标识S4。相似地,负载均衡节点判断出工作节点S3的可用系数1/3小于预设阈值1/2,但负载均衡列表中包括工作节点S3的节点标识,因此从负载均衡列表中移除节点标识S3。如此更新后的负载均衡列表中仅包含当前可用的工作节点S1和S4的节点标识。
[0082] 第二,负载均衡节点直接对当前负载均衡列表中包含的所有节点标识进行更新。
[0083] 具体地,负载均衡列表确定每个工作节点中可用系数大于预设阈值的工作节点;将负载均衡列表中包含的所有节点标识替换为可用系数大于预设阈值的工作节点的节点标识。
[0084] 例如,假设预设阈值为1/2,工作节点S1、S2、S3、S4的可用系数依次为2/3、1/3、1/3、2/3,当前负载均衡列表中包括节点标识S1和S3。则负载均衡节点确定出工作节点S1、S2、S3、S4中可用系数大于预设阈值1/2的工作节点为S1和S4,直接将负载均衡列表中包括节点标识S1和S3替换为节点标识S1和S4。
[0085] 负载均衡节点通过上述第一或第二种方式更新负载均衡列表后,至下次更新负载均衡列表前,在这段时间内负载均衡节点根据该负载均衡列表进行任务分发,在当前可用的工作节点之间进行负载均衡。
[0086] 在本发明实施例中,由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。且在工作节点中,可用性检测的操作与负载均衡节点分发的业务任务是通过多线程并发同步进行的,可用性检测是周期性进行的,可用性检测对工作节点的系统资源占用不大,不影响工作节点处理业务任务。
[0087] 实施例2
[0088] 参见图5,本发明实施例提供了一种节点可用性检测装置,该装置用于执行上述实施例1所提供的节点可用性检测方法中负载均衡节点进行的操作,所述装置包括:
[0089] 获取模块20,用于获取服务器集群中每个工作节点上传的集群可用性数据;
[0090] 更新模块21,用于根据所述每个工作节点上传的集群可用性数据,更新负载均衡列表。
[0091] 上述获取模块20,包括:
[0092] 接收单元,用于接收一个工作节点上传的集群可用性数据;
[0093] 获取单元,用于从本地存储中获取服务器集群中除所述工作节点外其他每个工作节点过去上传的集群可用性数据。
[0094] 所述更新模块21,还用于将本地存储的所述工作节点过去上传的集群可用性数据更新为当前所述工作节点上传的集群可用性数据。
[0095] 更新模块21包括:
[0096] 确定单元,用于根据所述每个工作节点上传的集群可用性数据,分别确定所述每个工作节点对应的可用系数;
[0097] 更新单元,用于根据所述每个工作节点对应的可用系数,更新负载均衡列表。
[0098] 所述更新单元包括:
[0099] 判断子单元,用于判断第一工作节点对应的可用系数是否大于预设阈值,及判断所述负载均衡列表中是否包含所述第一工作节点的节点标识,所述第一工作节点为所述每个工作节点中的任一工作节点;
[0100] 添加子单元,用于若所述判断子单元判断出所述第一工作节点对应的可用系数大于预设阈值且所述负载均衡列表中不包含所述第一工作节点的节点标识,则将所述第一工作节点的节点标识添加到所述负载均衡列表中;
[0101] 移除子单元,用于若所述判断子单元判断出所述第一工作节点对应的可用系数小于或等于所述预设阈值且所述负载均衡列表中包含所述第一工作节点的节点标识,则从所述负载均衡列表中移除所述第一工作节点的节点标识。
[0102] 在另一种实施方式中,所述更新单元包括:
[0103] 确定子单元,用于确定所述每个工作节点中可用系数大于预设阈值的工作节点;
[0104] 替换子单元,用于将所述负载均衡列表中包含的所有节点标识替换为所述可用系数大于预设阈值的工作节点的节点标识。
[0105] 在本发明实施例中,由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。且在工作节点中,可用性检测的操作与负载均衡节点分发的业务任务是通过多线程并发同步进行的,可用性检测是周期性进行的,可用性检测对工作节点的系统资源占用不大,不影响工作节点处理业务任务。
[0106] 实施例3
[0107] 参见图6,本发明实施例提供了一种节点可用性检测装置,该装置用于执行上述实施例1所提供的节点可用性检测方法中工作节点进行的操作,所述装置包括:
[0108] 第一发送模块30,用于周期性地发送连接请求给服务器集群中的其他工作节点;
[0109] 获得模块31,用于根据与其他每个工作节点之间的连接结果,获得集群可用性数据。
[0110] 第二发送模块32,用于发送所述集群可用性数据给负载均衡节点。
[0111] 上述获得模块31包括:
[0112] 设置单元,用于根据与其他每个工作节点之间的连接结果,分别设置所述其他每个工作节点对应的可用性标识值;
[0113] 组成单元,用于将所述其他每个工作节点对应的可用性标识值组成集群可用性数据。
[0114] 在本发明实施例中,由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。且在工作节点中,可用性检测的操作与负载均衡节点分发的业务任务是通过多线程并发同步进行的,可用性检测是周期性进行的,可用性检测对工作节点的系统资源占用不大,不影响工作节点处理业务任务。
[0115] 实施例4
[0116] 本发明实施例提供一种节点可用性检测设备,该设备包括一个或多个处理器,以及一个或多个存储装置,所述一个或多个存储装置中存储有一个或多个程序,所述一个或多个程序被所述一个或多个处理器加载并执行时,实现上述实施例1所提供的节点可用性检测方法中负载均衡节点所执行的操作。
[0117] 本发明实施例由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。
[0118] 实施例5
[0119] 本发明实施例提供一种计算机可存储介质,该存储介质中存储有可执行程序,所述可执行程序被处理器加载并执行时实现上述实施例1所提供的节点可用性检测方法中负载均衡节点所执行的操作。
[0120] 本发明实施例由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。
[0121] 实施例6
[0122] 本发明实施例提供一种节点可用性检测设备,该设备包括一个或多个处理器,以及一个或多个存储装置,所述一个或多个存储装置中存储有一个或多个程序,所述一个或多个程序被所述一个或多个处理器加载并执行时,实现上述实施例1所提供的节点可用性检测方法中工作节点所执行的操作。
[0123] 本发明实施例由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。
[0124] 实施例7
[0125] 本发明实施例提供一种计算机可存储介质,该存储介质中存储有可执行程序,所述可执行程序被处理器加载并执行时实现上述实施例1所提供的节点可用性检测方法中工作节点所执行的操作。
[0126] 本发明实施例由工作节点进行可用性检测,负载均衡节点仅根据工作节点的检测结果更新负载均衡列表即可,减轻了负载均衡节点的负担,降低负载均衡节点单点失败的可能性,提高了整个系统的稳定性。
[0127] 需要说明的是:
[0128] 在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备有固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0129] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0130] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0131] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0132] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0133] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0134] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0135] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页 第1页 第2页 第3页
相关技术
方法装置相关技术
检测方法相关技术
颜昊霖发明人的其他相关专利技术