一种用于监控CDN节点的状态的方法和设备与流程

文档序号:11138359阅读:412来源:国知局
一种用于监控CDN节点的状态的方法和设备与制造工艺

本申请涉及计算机领域,尤其涉及一种用于监控CDN节点的状态的技术。



背景技术:

CDN(Content Delivery Network)内容分发网络,其目的是通过现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因造成的用户访问网站速度慢的问题。

CDN包含大量的服务节点,这些服务节点涵盖联通、电信等各个运营商,分布在各个地区。在CDN网络中,因为有众多服务节点,可能出现部分节点故障,导致局部地区访问异常的情况。

传统的CDN节点健康检查方法是在全网启动一个健康检查服务,周期性地探测CDN各个节点的健康状况。这种单点方式的健康检查方法容易因为网络阻塞网络状况抖动出现误判且有运营商隔离问题。另外,单点式的健康检查方法无法及时获得服务异常信息,实时性较差,而且监控质量也得不到保障。



技术实现要素:

本申请的目的是提供一种用于监控CDN节点的状态的方法和设备,以解决单点检测的误判对CDN节点状态监控的影响。

根据本申请的一个方面,提供了一种在主设备端用于监控CDN节点的状态的方法,包括:

获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于主设备对应的多个从设备中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息;

根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;

当所述综合状态变化信息为变化时,更新所述节点状态信息。

根据本申请的另一个方面,提供了一种在从设备端用于监控CDN节点的状态的方法,包括:

获取从设备检测对应CDN节点所得的状态检测信息;

根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;

向对应主设备发送所述检测状态变化信息。

根据本申请的另一方面,还提供了一种用于监控CDN节点的状态的主设备,包括:

状态变化信息获取模块,用于获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于主设备对应的多个从设备中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息;

决策模块,用于根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;

状态更新模块,用于当所述综合状态变化信息为变化时,更新所述节点状态信息。

根据本申请的另一方面,还提供了一种用于监控CDN节点的状态的从设备,包括:

检测模块,用于获取从设备检测对应CDN节点所得的状态检测信息;

状态变化信息确定模块,用于根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;

发送模块,用于向对应主设备发送所述检测状态变化信息。

根据本申请的再一方面,还提供了一种用于监控CDN节点的状态的系统,该系统包括如前所述的主设备及从设备。

与现有技术相比,本申请通过从设备对CDN节点进行状态检测获取状态检测信息,进而根据所得的状态检测信息,以及CDN节点对应的节 点状态信息,确定CDN节点的检测状态变化信息,然后向对应主设备发送所述检测状态变化信息,主设备端根据获取的一个或多个检测状态变化信息确定CDN节点的综合状态变化信息,当综合状态变化信息为变化时,更新所述节点状态信息;从而有效降低了单点检测的误判对CDN节点状态的影响,提高了CDN节点状态的监控的准确性。而且,本申请还可以将从设备部署在受监控CDN节点所在的网络或网段,从而有效地降低因跨网络域或跨运营商而导致的网络时延或状况抖动对单点检测的准确率的影响。进一步地,本申请还可以监控CDN节点的不同协议层,从而实现对CDN节点状态的更细粒度的监控;而且,本申请还可以利用相关协议层之间的依赖关系,实现对CDN节点状态的更准确的监控。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种用于监控CDN节点的状态的系统设备的结构示意图;

图2示出根据本申请一个方面的一种用于监控CDN节点的状态的系统的结构示意图;

图3示出根据本申请一个优选实施例的一种用于监控CDN节点的状态的主设备中决策模块的示意图;

图4示出根据本申请一个优选实施例的一种用于监控CDN节点的状态的主设备中状态更新模块的示意图;

图5示出根据本申请另一个方面的一种用于监控CDN节点的状态的方法流程示意图;

图6示出根据本申请另一个优选实施例的步骤S13流程示意图;

图7示出根据本申请另一个优选实施例的步骤S15流程示意图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

本申请通过从设备对CDN节点进行状态检测获取状态检测信息,进而根据所得的状态检测信息,以及CDN节点对应的节点状态信息,确定CDN节点的检测状态变化信息,然后向对应主设备发送所述检测状态变化信息,主设备端根据获取的一个或多个检测状态变化信息确定CDN节点的综合状态变化信息,当综合状态变化信息为变化时,更新所述节点状态信息;从而有效降低了单点检测的误判对CDN节点状态的影响,提高了CDN节点状态的监控的准确性。

本领域技术人员应能理解,在具体的方案实施中,所述从设备可包括具有探测功能的Slave(从设备),主要负责探测各个节点机器状况;所述主设备可包括具有决策功能的Master(主设备),主要负责各个Slave探测的结果并作出节点健康状况的决策。为表述方便,我们将在实施例中对主设备与Master、第二网络设备与Slave分别进行互换使用。

图1示出根据本申请一个方面的一种用于监控CDN节点的状态的系统设备的结构示意图。该系统设备包括:CDN节点(如VIP1、VIP2、…VIPx)、Slave(从设备)、Master(主设备)、Slave DB和Master DB。其中,Master可同时与多个Slave交互,Slave与Slave DB部署在相同或不同服务器上;Slave检测CDN节点的即时状态信息并与该CDN节点在Slave DB中所记录的状态信息进行比较,以确定该CDN节点的检测状态变化信息,随后向对应Master报告该检测状态变化信息;Master根据多个Slave分别报告的该CDN节点的检测状态变化信息,综合确定该CDN节点的综合状态变化信息,并据此通过对应的Master DB将当前更新的节点状态信息同步至到节点所对应的各分布式Slave的对应数据库Slave DB中。

本领域技术人员应能理解所述DB(Database)指数据库,是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

图2示出根据本申请一个方面的一种用于监控CDN节点的状态的系统的结构示意图。所述系统包括:至少一个主设备和至少一个从设备。其中,主设备包括状态变化信息获取模块、决策模块和状态更新模块,从设备包括检测模块、状态变化信息确定模块和发送模块。从设备中的检测模块获取从设备检测对应CDN节点所得的状态检测信息;状态变化信息确定模块根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;发送模块向对应主设备发送所述检测状态变化信息;主设备中的状态变化信息获取模块获取CDN节点的一个或多个检测状态变化信息;决策模块根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;当所述综合状态变化信息为变化时,状态更新模块更新所述节点状态信息。

所述Master包括状态变化信息获取模块、决策模块和状态更新模块。

具体地,所述Master中状态变化信息获取模块获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于Master 对应的多个Slave中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息;决策模块根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;当所述综合状态变化信息为变化时,状态更新模块更新所述节点状态信息。

优选地,状态变化信息获取模块获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于Master对应的多个Slave中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息,其中,至少一个Slave与被探测的CDN节点处于同一网段。例如,将Slave接入到不同的ISP服务提供商所提供的网络中进行对CDN节点的探测,其中,至少一个Slave与被探测的CDN节点处于由同一ISP服务提供商所提供的网络接入服务的网段。节点状态信息包括节点地址VIP、检测时间间隔、每次检测的超时时间、本次检测的重试次数、节点当前的健康状况、健康检测端口和类型。若探测HTTP层时,节点状态信息还包括HTTP层的URL信息。在此,节点状态信息可独立存放,也可存放于数据库中;集中存放于主数据库,也可分别存放于各节点对应的分布式数据库。

本邻域技术人员应理解,所述ISP(Internet Service Provider)是指互联网服务提供商,能提供拨号上网服务、网上浏览、下载文件、收发电子邮件等,是网络最终用户进入因特网的入口和桥梁。所述VIP(Virtual IP Address)是指虚拟IP地址,由代理服务器根据internet内部客户机的多少,给定虚拟IP地址的一个范围,并按某种规定分配给每个客户机一个虚拟IP地址,实现客户机与internet的间接相连。所述HTTP(Hyper Text Transfer Protocol)是指超文本传输协议,用于从环球信息网服务器传输超文本到本地浏览器的传输协议。所述URL(Uniform Resource Locator)是指统一资源定位符,表示互联网上得到的资源的位置和访问方法,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL。

接着,决策模块根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息。在此,Master根据接收到的一个或多个检测状态变化信息进行决策,根据设定的决策原则判断是否对节点状态信息进行 修改,若是,则将修改后的节点状态信息确定为综合状态变化信息;若否,则保持当前节点状态信息不变,确定此信息为综合状态变化信息。

随后,当所述综合状态变化信息为变化时,状态更新模块更新所述节点状态信息。当Master进行决策判断当前的节点状态信息需要修改时,修改节点状态信息,此时综合状态变化信息为变化,接着将修改信息写入到数据库中进行更新节点状态信息。

图3示出根据本申请一个优选实施例的一种用于监控CDN节点的状态的Master中决策模块的示意图,其中,决策模块包括数量确定单元和判断单元。

具体地,数量确定单元根据所述一个或多个检测状态变化信息确定所述CDN节点的状态变化通知数量信息;判断单元判断所述状态变化通知数量信息是否超过预定的状态变化数量阈值信息,根据判断结果确定所述CDN节点的综合状态变化信息为变化。

数量确定单元根据所述一个或多个检测状态变化信息确定所述CDN节点的状态变化通知数量信息。例如,假设有100个Slave对某一节点A进行探测,探测后有70个确定的检测状态变化信息,则Master接收到的节点A的状态变化通知数量为70个。

接着,判断单元判断所述状态变化通知数量信息是否超过预定的状态变化数量阈值信息,根据判断结果确定所述CDN节点的综合状态变化信息为变化。例如,假设节点A的状态是可用,在一个探测周期结束后,有60%的Slave探测获取到A的状态为不可用,它们将状态变化通知数量信息发送给Master,此时,Master中的判断单元判断收到的状态变化信息的Slave个数是否超过预定的状态变化数量阈值50%,若是,Master做决策,修改该节点的状态信息为不可用,确定节点A的综合状态变化信息为变化,若否,则节点A的状态仍为可用。

本领域技术人员应能理解上述确定CDN节点的综合状态变化信息为变化的方法仅为举例,其他现有的或今后可能出现的确定CDN节点的综合状态变化信息为变化的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,所述Master还包括数量阈值信息设定模块(未示出),所述数量阈值信息设定模块根据所述Master对应的可用Slave的总数量信息来确定所述状态变化数量阈值信息。例如,对应于Master的可用Slave的总数量为100个,即探测某一节点的探头Slave有100个,设定状态变化数量阈值信息为总探测设备数量的50%,即当Master收到的状态变化信息的Slave个数超过50个,则认为该节点状态发生了变化。

本领域技术人员应能理解上述确定所述状态变化数量阈值信息方法仅为举例,其他现有的或今后可能出现的确定所述状态变化数量阈值信息方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,数量确定单元根据预定的时间阈值信息,从所述一个或多个检测状态变化信息中确定一个或多个可用的检测状态变化信息,其中,每个可用的检测状态变化信息的存续时间低于或等于所述时间阈值信息;接着,根据所述一个或多个可用的检测状态变化信息确定所述CDN节点的状态变化通知数量信息。

在此,每个节点的探测可能是不同步的,从Slave发送到Master,再到Master做决策时都需要时间,故存续时间低于或等于时间阈值信息时,Master做决策时,能够保证检测状态变化信息的实时性。例如,预定的存续时间阈值为30s,在一个或多个检测状态变化信息中,若其中的一个或多个检测状态变化信息的存续时间低于或等于30s,则将此检测状态变化信息标记为可用。接着,根据标记的可用的检测状态变化信息的数量确定对应CDN节点状态变化通知数量信息。

优选地,数量确定单元根据所述一个或多个检测状态变化信息确定所述CDN节点按协议层统计的状态变化通知数量信息。其中,按协议层统计是指各协议层之间是相互独立的,统计时各层是互不影响,统计结果按各自的协议层计算。例如,Slave探测HTTP层和TCP层,统计状态变化通知数量信息时按协议层进行统计,若HTTP层出现状况并不影响TCP层的统计结果,HTTP层统计的变化通知数量信息与该层探测CDN节点的Slave的总数量进行比较,而TCP层统计的变化通知数量信息该层探测 CDN节点的Slave的总数量进行比较。

本领域技术人员应能理解,所述TCP(Transmission Control Protocol)是指传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

接着,判断单元判断所述CDN节点在一协议层的状态变化通知数量信息是否超过预定的状态变化数量阈值信息,根据判断结果确定所述CDN节点在该协议层的综合状态变化信息为变化。例如,进行某一CDN节点A在HTTP层探测时,预定的状态变化数量阈值为探测该协议层的总探测数量的50%,判断模块判断Master在预定的时间内接收到的节点A在HTTP层的状态变化通知数量信息是否超过此设定的50%,若是,则改变该CDN节点的状态,将可用置为不可用,或将不可用置为可用。修改后的CDN节点的状态确定为综合状态变化信息为变化。

本领域技术人员应能理解上述确定所述CDN节点在该协议层的综合状态变化信息为变化的方法仅为举例,其他现有的或今后可能出现的确定所述CDN节点在该协议层的综合状态变化信息为变化的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

更优选地,数量确定单元根据所述一个或多个检测状态变化信息,并将结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息。其中,协议层间的依赖关系是指协议层上下层之间的依赖关系。例如,在网络通信中,传输层的上层为应用层,TCP层为HTTP层提供服务,统计HTTP层时是包括了TCP层的统计结果,若TCP层出现状况则HTTP层也出现状况,若HTTP层出现状况则TCP层的统计结果不受影响,即上层统计结果包含其相对应的下层的统计结果,而下层统计结果不受上层结果的影响。

本领域技术人员还应能理解上述结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息的方法仅为举例,其他现有的或今后可能出现的结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

图4示出根据本申请另一个优选实施例的一种用于监控CDN节点的状态的Master中状态更新模块的示意图,其中,状态更新模块包括状态信息确定单元和节点状态信息写入单元。

具体地,当所述综合状态变化信息为变化时,状态信息确定单元确定所述CDN节点的当前节点状态信息;节点状态信息写入单元根据所述当前节点状态信息更新所述CDN节点在对应数据库中的节点状态信息。

优选地,当所述综合状态变化信息为变化时,状态信息确定单元确定所述CDN节点的当前节点状态信息。例如,假设某一CDN节点A的状态是可用,在一个探测周期结束后,Slave将节点A的可用的检测状态变化信息发送给Master,经过预定的原则做决策,修改该节点的状态信息为不可用,节点A的综合状态变化信息为变化,节点A的当前节点状态信息确定为不可用。

优选地,节点状态信息写入单元根据所述当前节点状态信息更新所述CDN节点在对应数据库中的节点状态信息。例如,假设节点A的当前节点状态信息为不可用,将此当前节点状态信息写入到节点A所对应的Master的本地数据库中,数据库中节点A的状态信息更新为当前节点状态信息不可用,再将此数据库中更新后的节点状态信息同步到对应的Slave的数据库中,完成Slave的数据库中节点A的状态信息的更新。

本领域技术人员应能理解上述更新所述CDN节点在对应数据库中的节点状态信息的方法仅为举例,其他现有的或今后可能出现的更新所述CDN节点在对应数据库中的节点状态信息的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,节点状态信息写入单元根据所述当前节点状态信息更新所述CDN节点在所述Master的对应数据库中的节点状态信息;接着,通过数据库同步的方式将所述当前更新的节点状态信息同步至到所述节点所对应的各分布式Slave的对应数据库中。

在此,将当前节点状态信息写入Master数据库中,更新Master数据库中节点状态信息,通过同步方式进行更新Slave数据库中节点状态信息。即将所述确定的CDN节点的综合性状态信息同步到所述节点所对应的各 分布式Slave数据库中;当监听的Slave数据库中CDN节点的综合性状态信息发生变化时,则所述Slave数据库中的节点地址数据重新加载,进行更新。例如,当Master中某个节点A的状态信息发生变化时,首先将该节点改变的状态信息写入到Master对应的数据库中;接着,使用基于binlog机制的MySQL主从同步方式,能及时在Master与Slave之间同步VIP的状态信息,将该状态信息同步到Slave对应的数据库中。同时,Slave实时监听来自Master的更新信息,之后启动另一个任务根据刚刚接收到的更新信息更新本地数据中的节点A的状态信息。Master端和Slave端都将数据写到对应的本地数据库中,网络连接断开或进程被杀死,都会在连接重建或进程重启后将该数据包含的信息执行完毕;Master数据库中一有数据信息发生变化,会立即同步到Slave的本地数据库中,更新数据库中的数据信息状态。另外,Inotify机制通知Slave的应用进程何时重新加载节点状态信息。节点状态信息存储在数据库中,Slave所属的数据库中的某个节点的状态信息发生变化后,通过使用Inotify机制通知Slave进程重新加载节点状态信息。在实施案例中,节点的状态信息数据存储在数据库中,而数据库中的表都与某个文件一一对应,当数据库中的节点的状态信息数据发生变化时,该文件也会相应地跟着改变,Slave进程向操作系统发起监听节点的状态信息数据对应的文件的更新操作,即节点的状态信息数据发生改变时,操作系统会通知Slave进程,Slave进程此时再重新加载节点的状态信息。使用本地数据库基于binlog的主从同步和Inotify机制保证分布在各地区的Slave和Master之间节点状态的一致性,Master中某一个VIP的状态变化后,最长3s内同步到Slave的数据库中。

本领域技术人员应能理解上述同步方式和监听机制的方法仅为举例,其他现有的或今后可能出现的同步方式和监听机制的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

本领域技术人员还应能理解所述binlog是指二进制日志,用于记录所有更新且提交了数据或者已经潜在更新提交了数据的所有语句,并以二进制的形式保存在磁盘中。所述Inotify是一个网络操作系统的内核特性,是应用进程向操作系统发起监听某文件的更新操作,一旦该文件有更新,操 作系统会通知应用进程,应用进程此时再执行相应的操作。

所述Slave包括检测模块、状态变化信息确定模块和发送模块。

具体地,检测模块获取Slave中检测对应CDN节点所得的状态检测信息;状态变化信息确定模块根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;发送模块向对应Master发送所述检测状态变化信息。

优选地,获取Slave中的检测模块检测对应CDN节点所得的状态检测信息。例如,Slave从本地数据库中读取各CDN节点状态信息,并周期性地做健康检测。其中,Slave不会直接修改本地数据库,只会从本地数据库中读取所需的数据,每个数据元素包括:待检测CDN节点的地址,可根据VIP进行识别不同的CDN节点;检测时间间隔,对节点地址做健康检测的时间周期;每次检测的超时时间,若某次检测超过该时间还未结果响应,则标识该VIP不可用;本轮检测的重试次数,对每个VIP都有若干次重试,若超过该次数此VIP仍然不可达,则标识本轮探测该VIP不可用;每个待检测节点的当前健康状况,标识该VIP当前的健康状况;健康检测端口,可标识该CDN节点提供服务的端口,例如HTTP服务探测端口为80,HTTPS服务探测端口为443;健康检测类型,标识提供服务的协议层的形式,例如HTTP服务探测端口为80,HTTPS服务探测端口为443;健康检测类型,标识提供服务的协议层的形式,例如,TCP层的健康检测还是HTTP层的健康检测。

接着,状态变化信息确定模块根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息。在此,所述状态检测信息是指Slave对CDN节点进行探测时获得的节点状态检测信息,例如,当Slave从本地数据库中读取CDN节点状态信息,将探测获得的状态信息与CDN节点对应的节点状态信息进行比较,若不一致,则探测获得的状态信息确定为检测状态变化信息,若一致,则进行下一次的探测。

随后,发送模块向对应Master发送所述检测状态变化信息。在此,Slave将确定的检测状态变化信息发送给对应的Master。Slave将探测结果 发送给Master时采用私有信息协议格式,其中,私有信息协议格式是指Slave和Master之间的数据传输方式协商一致的方式发送探测结果数据,例如,socket通信或HTTP协议来承载探测结果数据。消息格式是:sec usec vs_addr avail。其中,sec指产生该消息时的本地时钟-秒,usec指产生该消息时的本地时钟-微秒,vs_addr指要通知Master的CDN节点的VIP,avail指探测后的状态。

本领域技术人员应能理解socket通常是一种常见的计算机之间发送和获取信息的技术手段,是指网络上的两个程序通过一个双向的通信连接实现数据的交换中连接的一端。

本领域技术人员还应能理解上述Master备和Slave之间的数据传输的方式仅为举例,其他现有的或今后可能出现的Master备和Slave之间的数据传输的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,Slave中,所述检测状态变化信息对应于所述CDN节点在协议层的节点状态的变化信息。例如,假设CDN节点A的状态为可用,探测节点A在协议层HTTP层的节点状态的变化信息为不可用时,则此Slave探测结果的检测状态变化信息确定为不可用。

图5示出根据本申请一个方面的一种用于监控CDN节点的状态的系统的方法流程示意图。该方法包括步骤S11~步骤S15和步骤S22~S26。其中,在步骤S11中,获取CDN节点的一个或多个检测状态变化信息;在步骤S13中,根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;在步骤S15中,当所述综合状态变化信息为变化时,更新所述节点状态信息;在步骤S22中,获取从设备检测对应CDN节点所得的状态检测信息;在步骤S24中,根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;在步骤S26中,向对应主设备发送所述检测状态变化信息。

本领域技术人员应能理解,在具体的方案实施中,所述从设备可包括具有探测功能的Slave(从设备),主要负责探测各个节点机器状况;所述主设备可包括具有决策功能的Master(主设备),主要负责各个Slave探测 的结果并作出节点健康状况的决策。为表述方便,我们将在实施例中对主设备与Master、从设备与Slave分别进行互换使用。本邻域技术人员应理解,所述检测状态变化信息是指Slave向Master报告的对应CDN节点的节点状态是否变化的信息,例如节点状态变化或不变,检测状态变化信息可包括检测状态变化信息;所述综合状态变化信息是指Master综合多个Slave所报告的检测状态变化信息,而确定的该CDN节点的节点状态是否变化的信息,例如节点状态变化或不变,综合状态变化信息可包括综合状态变化信息。为表述方便,我们将在实施例中对检测状态变化信息与检测状态变化信息、综合状态变化信息与综合状态变化信息分别进行互换使用。

所述在Master端用于监控CDN节点的状态的方法包括步骤S11、步骤S13和步骤S15。

具体地,在步骤S11中,Master获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于Master对应的多个Slave中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息;在步骤S13中,Master根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息;在步骤S15中,Master当所述综合状态变化信息为变化时,更新所述节点状态信息。

优选地,在步骤S11中,Master获取CDN节点的一个或多个检测状态变化信息,其中,每个检测状态变化信息是基于Master对应的多个Slave中之一检测所述CDN节点所得的状态检测信息、所述CDN节点所对应的节点状态信息。其中,至少一个Slave与被探测的CDN节点处于同一网段。例如,将Slave接入到不同的ISP服务提供商所提供的网络中进行对CDN节点的探测,其中,至少一个Slave与被探测的CDN节点处于由同一ISP服务提供商所提供的网络接入服务的网段。节点状态信息包括节点地址VIP、检测时间间隔、每次检测的超时时间、本次检测的重试次数、节点当前的健康状况、健康检测端口和类型。若探测HTTP层时,节点状态信息还包括HTTP层的URL信息。在此,节点状态信息可独立存放,也可存放于数据库中;集中存放于主数据库,也可分别存放于各节点对应的分 布式数据库。

本邻域技术人员应理解,所述ISP(Internet Service Provider)是指互联网服务提供商,能提供拨号上网服务、网上浏览、下载文件、收发电子邮件等,是网络最终用户进入因特网的入口和桥梁。所述VIP(Virtual IP Address)是指虚拟IP地址,由代理服务器根据internet内部客户机的多少,给定虚拟IP地址的一个范围,并按某种规定分配给每个客户机一个虚拟IP地址,实现客户机与internet的间接相连。所述HTTP(Hyper Text Transfer Protocol)是指超文本传输协议,用于从环球信息网服务器传输超文本到本地浏览器的传输协议。所述URL(Uniform Resource Locator)是指统一资源定位符,表示互联网上得到的资源的位置和访问方法,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL。

接着,在步骤S13中,Master根据所述一个或多个检测状态变化信息确定所述CDN节点的综合状态变化信息。在此,Master根据接收到的一个或多个检测状态变化信息进行决策,根据设定的决策原则判断是否对节点状态信息进行修改,若是,则将修改后的节点状态信息确定为综合状态变化信息;若否,则保持当前节点状态信息不变,确定此信息为综合状态变化信息。

随后,在步骤S15中,当所述综合状态变化信息为变化时,更新所述节点状态信息。当Master进行决策判断当前的节点状态信息需要修改时,修改节点状态信息,此时综合状态变化信息为变化,接着将修改信息写入到数据库中进行更新节点状态信息。

图6示出根据本申请另一个优选实施例的步骤S13流程示意图。其中,步骤S13包括步骤S131和步骤S132。

具体地,在步骤S131中,Master根据所述一个或多个检测状态变化信息确定所述CDN节点的状态变化通知数量信息;在步骤S132中,Master中当所述状态变化通知数量信息超过预定的状态变化数量阈值信息,确定所述CDN节点的综合状态变化信息为变化。

在步骤S131中,根据所述一个或多个检测状态变化信息确定所述CDN节点的状态变化通知数量信息。例如,有100个Slave对某一节点A 进行探测,探测后有70个确定的检测状态变化信息,则Master接收到的节点A的状态变化通知数量为70个。

接着,在步骤S132中,判断所述状态变化通知数量信息是否超过预定的状态变化数量阈值信息,确定所述CDN节点的综合状态变化信息为变化。例如,假设节点A的状态是可用,在一个探测周期结束后,有60%的Slave探测获取到A的状态为不可用,它们将状态变化通知数量信息发送给Master,此时,Master判断收到的状态变化信息的Slave个数是否超过预定的状态变化数量阈值50%,若是,Master做决策,修改该节点的状态信息为不可用,确定节点A的综合状态变化信息为变化,若否,则节点A的状态仍为可用。

本领域技术人员应能理解上述确定CDN节点的综合状态变化信息为变化的方法仅为举例,其他现有的或今后可能出现的确定CDN节点的综合状态变化信息为变化的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,Master还包括步骤S17(未示出),在步骤S17中Master根据所述Master对应的可用Slave的总数量信息来确定所述状态变化数量阈值信息。例如,对应于Master的可用Slave的总数量为100个,即探测某一节点的探头Slave有100个,设定状态变化数量阈值信息为总探测设备数量的50%,即当Master收到的状态变化信息的Slave个数超过50个,则认为该节点状态发生了变化。

本领域技术人员应能理解上述确定所述状态变化数量阈值信息方法仅为举例,其他现有的或今后可能出现的确定所述状态变化数量阈值信息方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,在步骤S131中,根据预定的时间阈值信息,从所述一个或多个检测状态变化信息中确定一个或多个可用的检测状态变化信息,其中,每个可用的检测状态变化信息的存续时间低于或等于所述时间阈值信息;接着,根据所述一个或多个可用的检测状态变化信息确定所述CDN节点的状态变化通知数量信息。

在此,每个节点的探测可能是不同步的,从Slave发送到Master,再到Master做决策时都需要时间,故存续时间低于或等于时间阈值信息时,Master做决策时,能够保证检测状态变化信息的实时性。例如,预定的存续时间阈值为30s,在一个或多个检测状态变化信息中,若其中的一个或多个检测状态变化信息的存续时间低于或等于30s,则将此检测状态变化信息标记为可用。接着,根据标记的可用的检测状态变化信息的数量确定对应CDN节点状态变化通知数量信息。

优选地,在步骤S131中,根据所述一个或多个检测状态变化信息确定所述CDN节点按协议层统计的状态变化通知数量信息。其中,按协议层统计是指各协议层之间是相互独立的,统计时各层是互不影响,统计结果按各自的协议层计算。例如,Slave探测HTTP层和TCP层,统计状态变化通知数量信息时按协议层进行统计,若HTTP层出现状况并不影响TCP层的统计结果,HTTP层统计的变化通知数量信息与该层探测CDN节点的Slave的总数量进行比较,而TCP层统计的变化通知数量信息该层探测CDN节点的Slave的总数量进行比较。

本领域技术人员应能理解,所述TCP(Transmission Control Protocol)是指传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

接着,在步骤S132中,判断所述CDN节点在一协议层的状态变化通知数量信息是否超过预定的状态变化数量阈值信息,确定所述CDN节点在该协议层的综合状态变化信息为变化。例如,进行某一CDN节点A在HTTP层探测时,预定的状态变化数量阈值为探测该协议层的总探测数量的50%,当Master在预定的时间内接收到的节点A在HTTP层的状态变化通知数量信息超过此设定的50%时,则改变该CDN节点的状态,将可用置为不可用,或将不可用置为可用。修改后的CDN节点的状态确定为综合状态变化信息为变化。

本领域技术人员应能理解上述确定所述CDN节点在该协议层的综合状态变化信息为变化的方法仅为举例,其他现有的或今后可能出现的确定所述CDN节点在该协议层的综合状态变化信息为变化的方法如可适用于 本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

更优选地,在步骤S131中,根据所述一个或多个检测状态变化信息,并将结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息。其中,协议层间的依赖关系是指协议层上下层之间的依赖关系。例如,在网络通信中,传输层的上层为应用层,TCP层为HTTP层提供服务,统计HTTP层时是包括了TCP层的统计结果,若TCP层出现状况则HTTP层也出现状况,若HTTP层出现状况则TCP层的统计结果不受影响,即上层统计结果包含其相对应的下层的统计结果,而下层统计结果不受上层结果的影响。

本领域技术人员应能理解上述结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息的方法仅为举例,其他现有的或今后可能出现的结合协议层间的依赖关系,确定所述CDN节点按协议层统计的状态变化通知数量信息的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

图7示出根据本申请另一个优选实施例的步骤S15流程示意图。其中,步骤S15包括步骤S151和步骤S152。

具体地,在步骤S151中,当所述综合状态变化信息为变化时,确定所述CDN节点的当前节点状态信息;在步骤S152中,根据所述当前节点状态信息更新所述CDN节点在对应数据库中的节点状态信息。

优选地,在步骤S151中,当所述综合状态变化信息为变化时,确定所述CDN节点的当前节点状态信息。例如,假设某一CDN节点A的状态是可用,在一个探测周期结束后,Slave将节点A的可用的检测状态变化信息发送给Master,经过预定的原则做决策,修改该节点的状态信息为不可用,节点A的综合状态变化信息为变化,节点A的当前节点状态信息确定为不可用。

优选地,在步骤S152中,根据所述当前节点状态信息更新所述CDN节点在对应数据库中的节点状态信息。例如,假设节点A的当前节点状态信息为不可用,将此当前节点状态信息写入到节点A所对应的Master的本地数据库中,数据库中节点A的状态信息更新为当前节点状态信息不可 用,再将此数据库中更新后的节点状态信息同步到对应的Slave的数据库中,完成Slave的数据库中节点A的状态信息的更新。

本领域技术人员应能理解上述更新所述CDN节点在对应数据库中的节点状态信息的方法仅为举例,其他现有的或今后可能出现的更新所述CDN节点在对应数据库中的节点状态信息的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,在步骤S152中,根据所述当前节点状态信息更新所述CDN节点在所述Master的对应数据库中的节点状态信息;接着,通过数据库同步的方式将所述当前更新的节点状态信息同步至到所述节点所对应的各分布式Slave的对应数据库中。

在此,将当前节点状态信息写入Master数据库中,更新Master数据库中节点状态信息,通过同步方式进行更新Slave数据库中节点状态信息。即将所述确定的CDN节点的综合性状态信息同步到所述节点所对应的各分布式Slave数据库中;当监听的Slave数据库中CDN节点的综合性状态信息发生变化时,则所述Slave数据库中的节点地址数据重新加载,进行更新。例如,当Master中某个节点A的状态信息发生变化时,首先将该节点改变的状态信息写入到Master对应的数据库中;接着,使用基于binlog机制的MySQL主从同步方式,能及时在Master与Slave之间同步VIP的状态信息,将该状态信息同步到Slave对应的数据库中。同时,Slave实时监听来自Master的更新信息,之后启动另一个任务根据刚刚接收到的更新信息更新本地数据中的节点A的状态信息。Master端和Slave端都将数据写到对应的本地数据库中,网络连接断开或进程被杀死,都会在连接重建或进程重启后将该数据包含的信息执行完毕;Master数据库中一有数据信息发生变化,会立即同步到Slave的本地数据库中,更新数据库中的数据信息状态。另外,Inotify机制通知Slave的应用进程何时重新加载节点状态信息。节点状态信息存储在数据库中,Slave所属的数据库中的某个节点的状态信息发生变化后,通过使用Inotify机制通知Slave进程重新加载节点状态信息。在实施案例中,节点的状态信息数据存储在数据库中,而数据库中的表都与某个文件一一对应,当数据库中的节点的状态信息数据 发生变化时,该文件也会相应地跟着改变,Slave进程向操作系统发起监听节点的状态信息数据对应的文件的更新操作,即节点的状态信息数据发生改变时,操作系统会通知Slave进程,Slave进程此时再重新加载节点的状态信息。使用本地数据库基于binlog的主从同步和Inotify机制保证分布在各地区的Slave和Master之间节点状态的一致性,Master中某一个VIP的状态变化后,最长3s内同步到Slave的数据库中。

本领域技术人员应能理解上述同步方式和监听机制的方法仅为举例,其他现有的或今后可能出现的同步方式和监听机制的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

本领域技术人员还应能理解所述binlog是指二进制日志,用于记录所有更新且提交了数据或者已经潜在更新提交了数据的所有语句,并以二进制的形式保存在磁盘中。所述Inotify是一个网络操作系统的内核特性,是应用进程向操作系统发起监听某文件的更新操作,一旦该文件有更新,操作系统会通知应用进程,应用进程此时再执行相应的操作。

所述在Slave端用于监控CDN节点的状态的方法包括步骤S22、步骤S24和步骤S26。

具体地,在步骤S22中,获取Slave检测对应CDN节点所得的状态检测信息;在步骤S24中,Slave根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息;在步骤S26中,Slave向对应Master发送所述检测状态变化信息。

优选地,在步骤S22中,获取Slave检测对应CDN节点所得的状态检测信息。例如,Slave从本地数据库中读取各CDN节点状态信息,并周期性地做健康检测。其中,Slave不会直接修改本地数据库,只会从本地数据库中读取所需的数据,每个数据元素包括:待检测CDN节点的地址,可根据VIP进行识别不同的CDN节点;检测时间间隔,对节点地址做健康检测的时间周期;每次检测的超时时间,若某次检测超过该时间还未结果响应,则标识该VIP不可用;本轮检测的重试次数,对每个VIP都有若干次重试,若超过该次数此VIP仍然不可达,则标识本轮探测该VIP不可用;每个待检测节点的当前健康状况,标识该VIP当前的健康状况;健康 检测端口,可标识该CDN节点提供服务的端口,例如HTTP服务探测端口为80,HTTPS服务探测端口为443;健康检测类型,标识提供服务的协议层的形式,例如HTTP服务探测端口为80,HTTPS服务探测端口为443;健康检测类型,标识提供服务的协议层的形式,例如,TCP层的健康检测还是HTTP层的健康检测。

接着,在步骤S24中,根据所述状态检测信息,以及所述CDN节点对应的节点状态信息,确定所述CDN节点的检测状态变化信息。在此,所述状态检测信息是指Slave对CDN节点进行探测时获得的检测信息,例如,当Slave从本地数据库中读取CDN节点状态信息,将探测获得的状态信息与CDN节点对应的节点状态信息进行比较,若不一致,则探测获得的状态信息确定为检测状态变化信息,若一致,则进行下一次的探测。

随后,在步骤S26中,向对应Master发送所述检测状态变化信息。在此,Slave将确定的检测状态变化信息发送给对应的Master。Slave将探测结果发送给Master时采用私有信息协议格式,其中,私有信息协议格式是指Slave和Master之间的数据传输方式协商一致的方式发送探测结果数据,例如,socket通信或HTTP协议来承载探测结果数据。消息格式是:sec usec vs_addr avail。其中,sec指产生该消息时的本地时钟-秒,usec指产生该消息时的本地时钟-微秒,vs_addr指要通知Master的CDN节点的VIP,avail指探测后的状态。

本领域技术人员应能理解socket通常是一种常见的计算机之间发送和获取信息的技术手段,是指网络上的两个程序通过一个双向的通信连接实现数据的交换中连接的一端。

本领域技术人员还应能理解上述Master备和Slave之间的数据传输的方式仅为举例,其他现有的或今后可能出现的Master备和Slave之间的数据传输的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。

优选地,该方法还包括所述检测状态变化信息对应于所述CDN节点在协议层的节点状态的变化信息。例如,假设CDN节点A的状态为可用,探测节点A在协议层HTTP层的节点状态的变化信息为不可用时,则此 Slave探测结果的检测状态变化信息确定为不可用。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1