一种日志回传的选路方法、装置和存储介质转让专利

申请号 : CN202310208655.7

文献号 : CN116095180B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 肖立超马佳骏孟晴晴

申请人 : 天翼云科技有限公司

摘要 :

本申请提供一种日志回传的选路方法、装置和存储介质,属于数据处理的技术领域。所述方法包括:边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的中心集群的接入服务器,所述日志回传请求中包含日志数据;当接收到所述日志回传请求的接入服务器当前处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;当接收到所述日志回传请求的中心集群当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。本申请旨在提高日志回传时的时效性。

权利要求 :

1.一种日志回传的选路方法,其特征在于,所述方法包括:

边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的中心集群的接入服务器,所述日志回传请求中包含日志数据;

当接收到所述日志回传请求的接入服务器当前处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;

当接收到所述日志回传请求的中心集群当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当接收到所述日志回传请求的中心集群当前处于异常状态时,不解析所述日志回传请求,并向转发所述日志回传请求的接入服务器返回表征非健康的状态码;

接收到所述表征非健康的状态码的接入服务器将该中心集群标记为不健康,并将所述日志回传请求退回所述边缘节点。

3.根据权利要求1所述的方法,其特征在于,所述边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求之后,所述方法还包括:当接收到所述日志回传请求的接入服务器当前处于异常状态时,向所述边缘节点返回表征非健康的状态码;

所述边缘节点在接收到所述表征非健康的状态码时,将所述接入服务器标记为不健康,并采用轮询的方式向其他健康的接入服务器发送所述日志回传请求。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

对于任一具有不健康标记的接入服务器,所述边缘节点在标记时刻起的第一预设间隔后,向该接入服务器发送第一健康查询请求;

接收到所述第一健康查询请求的接入服务器确定自身是否处于正常状态,并确定其连接的所有中心集群的健康情况;

当接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康的状态码;

所述边缘节点接收到所述表征健康的状态码后,为该接入服务器添加健康标记。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

对于任一具有不健康标记的中心集群,所述接入服务器在标记时刻起的第二预设间隔后,向该中心集群发送第二健康查询请求;

接收到所述第二健康查询请求的中心集群确定自身是否处于正常状态;

当接收到所述第二健康查询请求的中心集群自身处于正常状态时,该中心集群向所述接入服务器发送表征健康的状态码;

所述接入服务器接收到所述表征健康的状态码后,为该中心集群添加健康标记。

6.根据权利要求4所述的方法,其特征在于,接收到所述第一健康查询请求的接入服务器确定自身是否处于正常状态,包括:当接收到所述第一健康查询请求的接入服务器当前处理的日志消息实例的数量大于0时,所述接入服务器自身处于正常状态。

7.根据权利要求5所述的方法,其特征在于,接收到所述第二健康查询请求的中心集群确定自身是否处于正常状态,包括:当接收到所述第二健康查询请求的中心集群当前处理的日志消息实例的数量大于0,且所述日志消息实例的积压量小于积压阈值时,所述中心集群自身处于正常状态。

8.一种日志回传的选路装置,其特征在于,所述装置包括边缘节点、接入服务器以及中心集群,其中:所述边缘节点,用于向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的中心集群的接入服务器,所述日志回传请求中包含日志数据;

所述接入服务器,用于在接收到所述日志回传请求并处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;

所述中心集群,用于在接收到所述日志回传请求并当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。

9.根据权利要求8所述的装置,其特征在于,所述装置还包括:

第一异常状态模块,用于当接收到所述日志回传请求的中心集群当前处于异常状态时,不解析所述日志回传请求,并向转发所述日志回传请求的接入服务器返回表征非健康的状态码;

第一更新模块,用于在所述接入服务器接收到所述表征非健康的状态码时,将该中心集群标记为不健康,并将所述日志回传请求退回所述边缘节点。

10.根据权利要求8所述的装置,其特征在于,所述装置还包括:第二异常状态模块,用于在接收到所述日志回传请求的接入服务器当前处于异常状态时,向所述边缘节点返回表征非健康的状态码;

第二更新模块,用于在所述边缘节点接收到所述表征非健康的状态码时,将所述接入服务器标记为不健康,并采用轮询的方式向其他健康的接入服务器发送所述日志回传请求。

11.根据权利要求8所述的装置,其特征在于,

所述边缘节点包括第一健康查询模块,所述第一健康查询模块用于对于任一具有不健康标记的接入服务器,在标记时刻起的第一预设间隔后,向该接入服务器发送第一健康查询请求;

所述接入服务器包括第一健康确定模块,所述第一健康确定模块用于确定接收到所述第一健康查询请求的接入服务器自身是否处于正常状态,并确定其连接的所有中心集群的健康情况;并在接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康的状态码;

所述边缘节点还包括第一健康标记模块,所述第一健康标记模块用于在接收到所述表征健康的状态码后,为该接入服务器添加健康标记。

12.根据权利要求8所述的装置,其特征在于,

所述接入服务器包括第二健康查询模块,所述第二健康查询模块用于对于任一具有不健康标记的中心集群,在标记时刻起的第二预设间隔后,向该中心集群发送第二健康查询请求;

所述中心集群包括第二健康确定模块,所述第二健康确定模块用于确定接收到所述第二健康查询请求的中心集群自身是否处于正常状态;并在接收到所述第二健康查询请求的中心集群自身处于正常状态时,该中心集群向所述接入服务器发送表征健康的状态码;

所述接入服务器包括第二健康标记模块,所述第二健康标记模块用于在接收到所述表征健康的状态码后,为该中心集群添加健康标记。

13.根据权利要求11所述的装置,其特征在于,所述第一健康确定模块包括:第一健康确定单元,用于在接收到所述第一健康查询请求的接入服务器当前处理的日志消息实例的数量大于0时,确定该接入服务器自身处于正常状态。

14.根据权利要求12所述的装置,其特征在于,所述第二健康确定模块包括:第二健康确定单元,用于在接收到所述第二健康查询请求的中心集群当前处理的日志消息实例的数量大于0,且所述日志消息实例的积压量小于积压阈值时,确定该中心集群自身处于正常状态。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的日志回传的选路方法。

说明书 :

一种日志回传的选路方法、装置和存储介质

技术领域

[0001] 本申请实施例涉及数据处理的技术领域,具体而言,涉及一种日志回传的选路方法、装置和存储介质。

背景技术

[0002] 日志为计算机系统响应特定输入时,记录响应行为与请求信息的数据,可用于统计分析、定位异常以及计费等领域;日志的产生、采集以及检索为计算机系统领域的传统需求。
[0003] 目前针对日志的产生、采集以及检索过程,已经存在很多通用解决方案,如基于三个得到广泛应用的开源项目的集合(Elasticsearch、Logstash以及Kibana)构造的采集系统,其中,Logstash用于采集日志,Elasticsearch用于存储并检索日志,Kibana用于可视化统计分析的结果。
[0004] 另外,在一些性能要求更高的细分领域,由于日志采集基于多样的网络条件,因此需要接入选路或应用加速业务,通常采用调度中心进行选路,即利用调度中心对服务器进行质量检测,并打分筛选出可用服务器,从而为客户端下发调用链路,可以规避服务器和网络链路的单点故障。
[0005] 但是采用单个调度中心进行选路时,存在中心单点故障隐患,为了规避中心单点故障隐患,通常采用的是引入多个调度中心,并通过分布式共识算法使得多个调度中心的
结果一致,因此若一个调度中心出现故障时,多个调度中心之间需要协商,导致故障时恢复时间较长,从而导致日志回传的时效性较差。

发明内容

[0006] 本申请实施例提供一种日志回传的选路方法、装置和存储介质,旨在提高日志回传时的时效性。
[0007] 第一方面,本申请实施例提供一种日志回传的选路方法,所述方法包括:
[0008] 边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的
中心集群的接入服务器,所述日志回传请求中包含日志数据;
[0009] 当接收到所述日志回传请求的接入服务器当前处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;
[0010] 当接收到所述日志回传请求的中心集群当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。
[0011] 可选地,所述方法还包括:
[0012] 当接收到所述日志回传请求的中心集群当前处于异常状态时,不解析所述日志回传请求,并向转发所述日志回传请求的接入服务器返回表征非健康的状态码;
[0013] 接收到所述表征非健康的状态码的接入服务器将该中心集群标记为不健康,并将所述日志回传请求退回所述边缘节点。
[0014] 可选地,所述边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求之后,所述方法还包括:
[0015] 当接收到所述日志回传请求的接入服务器当前处于异常状态时,向所述边缘节点返回表征非健康的状态码;
[0016] 所述边缘节点在接收到所述表征非健康的状态码时,将所述接入服务器标记为不健康,并采用轮询的方式向其他健康的接入服务器发送所述日志回传请求。
[0017] 可选地,所述方法还包括:
[0018] 对于任一具有不健康标记的接入服务器,所述边缘节点在标记时刻起的第一预设间隔后,向该接入服务器发送第一健康查询请求;
[0019] 接收到所述第一健康查询请求的接入服务器确定自身是否处于正常状态,并确定其连接的所有中心集群的健康情况;
[0020] 当接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康的状态
码;
[0021] 所述边缘节点接收到所述表征健康的状态码后,为该接入服务器添加健康标记。
[0022] 可选地,所述方法还包括:
[0023] 对于任一具有不健康标记的中心集群,所述接入服务器在标记时刻起的第二预设间隔后,向该中心集群发送第二健康查询请求;
[0024] 接收到所述第二健康查询请求的中心集群确定自身是否处于正常状态;
[0025] 当接收到所述第二健康查询请求的中心集群自身处于正常状态时,该中心集群向所述接入服务器发送表征健康的状态码;
[0026] 所述接入服务器接收到所述表征健康的状态码后,为该中心集群添加健康标记。
[0027] 可选地,接收到所述第一健康查询请求的接入服务器确定自身是否处于正常状态,包括:
[0028] 当接收到所述第一健康查询请求的接入服务器当前处理的日志消息实例的数量大于0时,所述接入服务器自身处于正常状态。
[0029] 可选地,接收到所述第二健康查询请求的中心集群确定自身是否处于正常状态,包括:
[0030] 当接收到所述第二健康查询请求的中心集群当前处理的日志消息实例的数量大于0,且所述日志消息实例的积压量小于积压阈值时,所述中心集群自身处于正常状态。
[0031] 第二方面,本申请实施例提供一种日志回传的选路装置,所述装置包括边缘节点、接入服务器以及中心集群,其中:
[0032] 所述边缘节点,用于向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的中心集群的接入服务器,所述日志回传请求中包含日志数据;
[0033] 所述接入服务器,用于在接收到所述日志回传请求并处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;
[0034] 所述中心集群,用于在接收到所述日志回传请求并当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。
[0035] 可选地,所述装置还包括:
[0036] 第一异常状态模块,用于当接收到所述日志回传请求的中心集群当前处于异常状态时,不解析所述日志回传请求,并向转发所述日志回传请求的接入服务器返回表征非健
康的状态码;
[0037] 第一更新模块,用于在所述接入服务器接收到所述表征非健康的状态码时,将该中心集群标记为不健康,并将所述日志回传请求退回所述边缘节点。
[0038] 可选地,所述装置还包括:
[0039] 第二异常状态模块,用于在接收到所述日志回传请求的接入服务器当前处于异常状态时,向所述边缘节点返回表征非健康的状态码;
[0040] 第二更新模块,用于在所述边缘节点接收到所述表征非健康的状态码时,将所述接入服务器标记为不健康,并采用轮询的方式向其他健康的接入服务器发送所述日志回传
请求。
[0041] 可选地,所述边缘节点包括第一健康查询模块,所述第一健康查询模块用于对于任一具有不健康标记的接入服务器,在标记时刻起的第一预设间隔后,向该接入服务器发
送第一健康查询请求;
[0042] 所述接入服务器包括第一健康确定模块,所述第一健康确定模块用于确定接收到所述第一健康查询请求的接入服务器自身是否处于正常状态,并确定其连接的所有中心集
群的健康情况;并在接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其
至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康
的状态码;
[0043] 所述边缘节点还包括第一健康标记模块,所述第一健康标记模块用于在接收到所述表征健康的状态码后,为该接入服务器添加健康标记。
[0044] 可选地,所述接入服务器包括第二健康查询模块,所述第二健康查询模块用于对于任一具有不健康标记的中心集群,在标记时刻起的第二预设间隔后,向该中心集群发送
第二健康查询请求;
[0045] 所述中心集群包括第二健康确定模块,所述第二健康确定模块用于确定接收到所述第二健康查询请求的中心集群自身是否处于正常状态;并在接收到所述第二健康查询请
求的中心集群自身处于正常状态时,该中心集群向所述接入服务器发送表征健康的状态
码;
[0046] 所述接入服务器包括第二健康标记模块,所述第二健康标记模块用于在接收到所述表征健康的状态码后,为该中心集群添加健康标记。
[0047] 可选地,所述第一健康确定模块包括:
[0048] 第一健康确定单元,用于在接收到所述第一健康查询请求的接入服务器当前处理的日志消息实例的数量大于0时,确定该接入服务器自身处于正常状态。
[0049] 可选地,所述第二健康确定模块包括:
[0050] 第二健康确定单元,用于在接收到所述第二健康查询请求的中心集群当前处理的日志消息实例的数量大于0,且所述日志消息实例的积压量小于积压阈值时,确定该中心集群自身处于正常状态。
[0051] 第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例第一方面所述的日志
回传的选路方法。
[0052] 有益效果:
[0053] 本方法中,需要进行日志回传时,由边缘节点自身选择发送日志回传请求的接入服务器,由接入服务器选择转发日志回传请求的中心集群,且边缘节点选择的接入服务器
是具有健康标记的接入服务器,具有健康标记的接入服务器连接有至少一个具有健康标记
的中心集群,因此在边缘节点、具有健康标记的接入服务器与中心集群之间至少存在一条
路径,可以使得日志回传请求到达中心集群,若接收到日志回传请求的中心集群当前仍处
于正常状态,则可以解析日志回传请求中包含的日志数据,从而形成一个日志回传路径。
[0054] 通过采用在边缘节点和接入服务器两个层级各自自主选择消息发送的对象,可以有效避免现有方法采用调度中心时的重大开销;并且相比于单调度中心存在的单点故障问
题,以及多调度中心的调度结果一致性难以保证的问题,本方法中边缘节点掌握了全局的
健康情况,可以对出现故障的接入服务器或中心集群进行规避,并不存在单点故障问题,且也不会出现像多调度中心可能出现的多个中心同时下发不同决策的情况。
[0055] 同时,故障位置的恢复过程并不影响其他正常的边缘节点、接入服务器与中心集群形成其他的日志回传路径,可以有效提高日志回传时的时效性。

附图说明

[0056] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0057] 图1是本申请一实施例提出的日志回传的选路方法的步骤流程图;
[0058] 图2是本申请一实施例提出的针对接入服务器的健康查询的步骤流程图;
[0059] 图3是本申请一实施例提供的针对中心集群的健康查询的步骤流程图;
[0060] 图4是本申请一实施例提供的日志回传的选路装置的结构示意图。

具体实施方式

[0061] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本申请保护的范围。
[0062] 在一些性能要求更高的细分领域,日志采集的通用解决方案并不满足性能要求,例如在大规模计费日志的领域中,计费日志不仅来源范围更广,且由于涉及计费不允许出
现大量重传与漏传、同时要求高实时性,因此需要接入选路,目前的选路依赖于传统的调度系统,包括单个调度中心与多个调度中心两种。
[0063] 其中,单个调度中心容易出现单点故障隐患,为了避免单点故障隐患,通过引入多个调度中心,并且多个调度中心通过分布式共识算法确定唯一的结果,但是在多个调度中心的模式下,一个调度中心出现故障,在故障恢复时其他多个调度中心之间需要进行协商,导致故障恢复时间过长,失败率更高,从而导致日志回传的时效性较差。
[0064] 为了解决这个问题,本申请实施例提供一种日志回传的选路方法,不依赖于中心调度与决策,实现了去中心的选路决策,可以有效提高日志回传的时效性。
[0065] 参照图1,示出了本申请实施例中的一种日志回传的选路方法的步骤流程图,所述方法应用的装置架构包括边缘节点、接入服务器和中心集群,其中,边缘节点为业务节点,分布在全球各地,需要将业务产生的回传到中心进行处理;接入服务器分布于全国各枢纽
节点,提供跨网跨运营商的接入服务和鉴权,可以将边缘节点发送的请求转发到中心集群,而中心集群则负责数据处理;所述方法具体可以包括以下步骤:
[0066] S101:边缘节点向其连接的任一具有健康标记的接入服务器发送日志回传请求。
[0067] 任一个边缘节点可以连接多个接入服务器,边缘节点与接入服务器之间的连接可以是预先设置的,也可以是不断更新的,即边缘节点可以通过解析固定列表仅连接固定的
几个接入服务器,边缘节点也可以定时解析新的接入服务器列表,从而连接新添加的接入
服务器。
[0068] 当有日志回传需求时,边缘节点会选择具有健康标记的接入服务器发送日志回传请求,具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记
的中心集群的接入服务器,即通过具有健康标记的接入服务器,至少存在一条路径可以成
功地将日志回传请求发送至一个具有健康标记的中心集群。
[0069] 在实际实施的过程中,在初始阶段,每个接入服务器可以监听其连接的每个中心集群的健康情况,并为每个中心集群添加初始的健康标记,然后边缘节点监听其连接的每
个接入服务器自身的健康情况和连接的中心集群的健康标记,并为每个接入服务器添加初
始的健康标记。
[0070] 之后边缘服务器也可以定时监听每个接入服务器的健康情况,因为接入服务器的健康情况不仅涉及自身是否处于正常状态,还涉及其连接的所有中心集群的健康状态,因
此每个接入服务器也需要定时监听中心集群的健康状态。
[0071] S102:当接收到所述日志回传请求的接入服务器当前处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群。
[0072] 虽然接收到日志回传请求的接入服务器被添加健康标记,但是可能当边缘节点的日志回传请求发送至该接入服务器时,该接入服务器可能会突发故障,因此需要判断接收
到日志回传请求的接入服务器自身当前的状态。
[0073] 当接收到日志回传请求的接入服务器当前处于正常状态时,可以对日志回传请求进行下一步处理,由于具有健康标记的接入服务器至少成功连接了一个具有健康标记的中
心集群,进而可以向其连接的任一个健康的中心集群转发志回传请求。
[0074] 当接收到日志回传请求的接入服务器当前处于异常状态时,无法转发日志回传请求,接入服务器可以向边缘节点返回表征非健康的状态码,表征非健康的状态码的响应体
内还可以包含返回的具体原因;边缘节点在接收到表征非健康的状态码时,将该接入服务
器标记为不健康,并采用轮询的方式向其他健康的接入服务器日志回传请求。
[0075] S103:当接收到所述日志回传请求的中心集群当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。
[0076] 若接入服务器处于正常状态时,接入服务器可以自主选择其连接的任一具有健康标记的中心集群转发日志回传请求,任一具有健康标记的中心集群在接收到接入服务器转
发的日志回传请求后,也需要判断当前自身是否处于正常状态。
[0077] 若该中心集群处于正常状态时,可以对日志回传请求进行正常处理,解析日志回传请求的请求体中包含的日志数据,从而完成日志数据的回传,形成了一个完整的日志回
传路径。
[0078] 若该中心集群在接收到接入服务器转发的日志回传请求后,自身处于异常状态,则中心集群无法解析日志回传请求,并向转发日志回传请求的接入服务器返回表征非健康
的状态码,该表征非健康的状态码的响应体中可以包含具体原因;接收到中心集群返回的
表征非健康的状态码的接入服务器,将该中心集群标记为不健康,并将日志回传请求退回
边缘节点,边缘节点可以轮询其他具有健康标记的接入服务器发送日志回传请求。
[0079] 边缘节点轮询其他具有健康标记的接入服务器时,可以采用随机遍历其余所有健康的接入服务器的方式,也可以按照列表顺序遍历其余所有健康的接入服务器的方式,本
实施例并不做限制。
[0080] 通过上述过程可以发现,在每次日志回传请求传送的过程中,涉及到的接入服务器和中心集群若处于异常状态时,均会返回表征不健康的状态码,即通知上一层级自身的
健康状态,因此在本实施例中,为了节约边缘节点监听其连接的所有接入服务器的健康情
况,以及接入服务器监听其连接的所有中心集群的健康情况时的数据传输资源,可以在每
次日志回传请求传送的过程中,单独获取当前日志回传请求涉及的接入服务器与中心集群
的健康情况,并不用实时监听每个接入服务器与每个中心集群的健康情况,可以节约大量
的数据资源。
[0081] 示例地,当接收到日志回传请求的接入服务器当前处于正常状态,并成功转发日志回传请求,且接收到日志回传请求的中心集群成功解析到日志回传请求中的日志数据
时,中心集群可以向当前日志回传路径中的接入服务器返回表征健康的状态码,甚至可以
向连接该中心集群的所有接入服务器返回表征健康的状态码,以使得当前日志回传路径中
的接入服务器或所有接入服务器知晓该中心集群处于正常状态,保持该中心集群的健康标
记。
[0082] 当前日志回传路径中的接入服务器接收到该中心集群返回的表征健康的状态码后,该接入服务器满足自身处于正常状态,且至少连接有一个具有健康标记的中心集群的
条件,因此该接入服务器还可以向当前日志回传路径中的边缘节点,甚至向与其连接的所
有边缘节点返回表征健康的状态码,以使得当前日志回传路径中的边缘节点或所有的边缘
节点保持该接入服务器的健康标记。
[0083] 对于在日志回传请求传送过程中处于异常状态的接入服务器或者中心集群,由于各自向上一层级返回了表征非健康的状态码,因此被添加了不健康标记,例如接入服务器
因为自身处于异常状态,不满足添加健康标记的条件,因此其上一层级的边缘节点接收到
表征非健康的状态码时,为该接入服务器添加不健康标记;中心集群因为自身处于异常状
态,因此上一层级的接入服务器接收到表征非健康的状态码时,为该中心集群添加不健康
标记。
[0084] 同理,在实际实施的过程中,接入服务器或中心集群可以只向当前日志回传请求传送过程中涉及的上一层级返回表征非健康的状态码,也可以向其连接的所有上一层级返
回表征非健康的状态码。
[0085] 例如,边缘节点包括A1、A2与A3,接入服务器包括B1与B2,中心集群包括B1与C3,则边缘节点‑接入服务器‑中心集群潜在的日志回传路径可以包括:A1‑B1‑C1、A1‑B1‑C2、A1‑B2‑C1、A1‑B2‑C2、A2‑B1‑C1、A2‑B1‑C2、A2‑B2‑C1、A2‑B2‑C2、A3‑B1‑C1、A3‑B1‑C2、A3‑B2‑C1以及A3‑B2‑C2。
[0086] 若当前日志回传请求的传送过程中,边缘节点A1自主选择了接入服务器B1发送日志回传请求,而接入服务器B1处于异常状态时,接入服务器B1可以只向边缘节点A1返回表
征非健康的状态码,也可以同时向其连接所有上一层级的边缘节点A1、A2与A3均返回表征
非健康的状态码;中心集群同理。
[0087] 若当前日志回传请求的传送过程中,成功形成了一个日志回传路径,即有中心集群成功解析到了日志回传请求中的日志数据,假设日志回传路径为A2‑B2‑C2,则中心集群C2可以只向接入服务器B2返回表征健康的状态码,也可以向其连接所有上一层级的接入服
务器B1与B2同时返回表征健康的状态码;由于当前日志回传路径中的接入服务器B2能够成
功转发日志回传请求,因此接入服务器B2自身处于正常状态,且至少连接了一个具有健康
标记的中心集群C2,因此接入服务器B2可以只向当前日志回传路径中的边缘节点A2返回表
征健康的状态码,也可以向其连接所有上一层级的边缘节点A1、A2与A3均返回表征健康的
状态码。
[0088] 通过每次日志回传请求的传送过程更新接入服务器或中心集群的健康标记,可以节省大量的数据资源,但对于添加了不健康标记的接入服务器或中心集群,需要查询其健
康情况,知晓其是否恢复了健康状态,从而更新不健康的标记。
[0089] 参照图2,示出了本申请实施例提供的针对接入服务器的健康查询的步骤流程图,如图2,在一种可行的实施方式中,边缘节点对于具有不健康标记的接入服务器的健康查询包括以下步骤:
[0090] A1:对于任一具有不健康标记的接入服务器,所述边缘节点在标记时刻起的第一预设间隔后,向该接入服务器发送第一健康查询请求。
[0091] 当一个边缘节点为一个接入服务器添加不健康标记时,记录当前不健康标记的时间戳,在第一预设间隔后,向该接入服务器发送第一健康查询请求以查询该接入服务器是
否恢复了健康。
[0092] A2:接收到所述第一健康查询请求的接入服务器确定自身是否处于正常状态,并确定其连接的所有中心集群的健康情况。
[0093] 接入服务器自身的健康检测规则可以是:当前处理的日志消息实例的数量大于0时,该接入服务器自身处于正常状态;接入服务器可以自身进行健康检测,也可以通过第三方进行健康检测。
[0094] 同时,接入服务器查询其连接的所有中心集群的健康状态,获取具有健康标记的中心集群的数量,还可以对具有不健康标记的中心集群进行健康查询。
[0095] A3:接收到所述第一健康查询请求的接入服务器确定返回的状态码。
[0096] 当接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康的状态
码;当接收到所述第一健康查询请求的接入服务器自身处于异常状态,和/或未至少连接一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征非健康的状态码。
[0097] A4:所述边缘节点根据接收到的状态码,更新该接入服务器的健康标记。
[0098] 其中,当边缘节点接收到所述表征健康的状态码后,为该接入服务器添加健康标记;当边缘节点接收到所述表征非健康的状态码后,保持该接入服务器的不健康标记,并更新记录当前不健康标记的时间戳,在第一预设间隔后,再次向该接入服务器发送第一健康
查询请求以查询该接入服务器是否恢复了健康。
[0099] 参照图3,示出了本申请实施例提供的针对中心集群的健康查询的步骤流程图,如图3,在一种可行的实施方式中,接入服务器对于具有不健康标记的中心集群的健康查询包括以下步骤:
[0100] B1:对于任一具有不健康标记的中心集群,所述接入服务器在标记时刻起的第二预设间隔后,向该中心集群发送第二健康查询请求。
[0101] 当一个接入服务器为一个中心集群添加不健康标记时,记录当前不健康标记的时间戳,在第二预设间隔后,接入服务器向该中心集群发送第二健康查询请求,查看该中心集群是否恢复正常。
[0102] B2:接收到所述第二健康查询请求的中心集群确定自身是否处于正常状态。
[0103] 中心集群的健康检测规则可以是:当前处理的日志消息实例的数量大于0,且日志消息实例的积压量小于积压阈值时,中心集群自身处于正常状态;中心集群可以自身进行
健康检测,也可以通过第三方进行健康检测。
[0104] B3:接收到所述第二健康查询请求的中心集群确定返回的状态码。
[0105] 当接收到第二健康查询请求的中心集群自身处于正常状态时,该中心集群向接入服务器发送表征健康的状态码;当接收到第二健康查询请求的中心集群自身仍处于异常状
态时,向接入服务器发送表征非健康的状态码。
[0106] B4:所述接入服务器根据接收到的状态码,更新该中心集群的健康标记。
[0107] 其中,当接入服务器接收到表征健康的状态码后,为该中心集群添加健康标记;当接入服务器接收到表征非健康的状态码后,保持该中心集群的不健康标记,并更新记录当前不健康标记的时间戳,在第二预设间隔后,再次向该中心集群发送第二健康查询请求以
查询该中心是否恢复了健康。
[0108] 在对接入服务器或中心集群进行健康查询的过程中,若在标定时间内未收到任何状态码或任何响应时,则可能出现接入服务器或中心集群连接失败的可能,上一层级可以
对接入服务器或中心集群添加不健康标记,本实施例中的表征健康的状态码可以是HTTP状
态码200,表征非健康的状态码可以是HTTP状态码500、502、或503。
[0109] 示例地,接入服务器对中心集群的健康监听可以采用以下逻辑:
[0110] 接入服务器记录连接的每个中心集群的健康标记与不健康标记,例如维护一个Map,其中,key为中心集群,value为中心集群的健康标记,若该中心集群为健康标记时,value的值为0;当中心集群返回表征非健康的状态码时,或者由于底层TCP连接失败导致未接收到任何状态码时,则认为该中心集群不健康,将value设置为当前Unix时间戳;并由后端线程定时检查该Map,若发现有value非0的中心集群,且当前Unix时间戳大于value的值
超过预设阈值,则再次进行健康查询;若中心集群返回的是表征健康的状态态码时,则认为该中心集群恢复可用,将value设置为0;若返回的是表征非健康的状态码或仍未收到任何
状态码时,则认为中心集群仍然存在异常,value更新为当前Unix时间戳。
[0111] 若一个接入服务器同时被上一层级的多个边缘节点添加不健康标记时,可以由上一层级的任一个边缘节点进行健康查询,然后被查询的接入服务器可以将本次查询的状态
码同步至上一层级的所有边缘节点;同理,若一个中心集群同时被上一层级的多个接入服
务器添加不健康标记时,可以由上一层级的任一个接入服务器进行健康查询,然后被查询
的中心集群可以将本次查询的状态码同步至上一层级的所有接入服务器,进一步节省健康
查询过程中的数据传输资源。
[0112] 本实施例提供的中心集群和接入服务器的健康检测规则可以有效覆盖以下故障场景:
[0113] 1)单中心集群故障,受中心集群内部服务器故障或内部互联网络故障,该中心集群处理能力下降,则中心集群的处理的日志消息实例为0,或者日志消息实例的积压量大于等于积压阈值,因此该中心集群是不健康的,该中心集群向接入服务器返回表征非健康的
状态码,进而接入服务器不向该中心集群发送日志回传请求。
[0114] 2)单中心集群入网故障,受中心集群园区防火墙或公网割接操作影响,单中心集群入网可能中断或丢包,此时接入服务器无法访问该中心集群,即该中心集群并不能收到
第二健康查询请求,接入服务器在标定时间内接收不到任何状态码,则认为该中心集群不
健康,为其添加不健康标记,不向该中心集群发送日志回传请求。
[0115] 3)单接入服务器入网故障,由于接入服务器分布在不同区域,使用不同运营商的网络,在机房或某区域运营商实施割接时,容易出现单接入服务器入网故障的现象;此时边缘节点到该接入服务器网络中断或超时,边缘节点接收不到该接入服务器返回的任何状态
码,认为该接入服务器不健康,为其添加不健康标记,不向该接入服务器发送日志回传请
求。
[0116] 4)单接入服务器故障,在服务器因某些硬件或软件原因故障时,自身实例无法启动,或健康检查失败,此时边缘节点的接收到接入服务器返回的表征非健康的状态码,为其添加不健康标记,边缘节点不向该接入服务器发送日志回传请求。
[0117] 5)单接入服务器出网故障,受区域运营商防火墙等影响,常见单接入服务器无法访问所有的中心集群,此时该接入服务器因对所有中心集群的健康检查失败,即并不存在
连接至少一个具有健康标记的中心集群,因此该接入服务器不满足添加健康标记的条件,
边缘节点不向该接入服务器发送日志回传请求。
[0118] 本方法中,相比于调度中心参与的日志回传选路方法,实现了去中心化,日志回传过程的选路选择权在上一层级,即通过采用在边缘节点和接入服务器两个层级各自自主选择消息发送的对象,可以有效避免现有方法采用调度中心时的重大开销。
[0119] 而接入服务器与中心集群的可用性可以逐级通知到边缘节点,边缘节点掌握了全局的健康情况后,可以向哪个接入服务器发送日志回传请求,由边缘节点自主决策进行选
路,相较于采用多个调度中心的选路方式,可以及时对出现故障的接入服务器或中心集群
进行规避,不存在单点故障问题,保障了日志回传过程中数据的完整性和到达率,且也不会出现像多调度中心可能出现的多个中心同时下发不同决策的情况。
[0120] 并且在本方法中,在恢复故障位置时并不影响其他正常的边缘节点、接入服务器与中心集群形成其他的日志回传路径,可以有效提高日志回传时的时效性。
[0121] 参照图4,示出了本申请实施例提供一种日志回传的选路装置的结构示意图,所述装置包括边缘节点、接入服务器以及中心集群,其中:
[0122] 所述边缘节点,用于向其连接的任一具有健康标记的接入服务器发送日志回传请求,其中,所述具有健康标记的接入服务器为自身处于正常状态,且至少连接有一个具有健康标记的中心集群的接入服务器,所述日志回传请求中包含日志数据;
[0123] 所述接入服务器,用于在接收到所述日志回传请求并处于正常状态时,将所述日志回传请求转发至其连接的任一个具有健康标记的中心集群;
[0124] 所述中心集群,用于在接收到所述日志回传请求并当前处于正常状态时,解析所述日志回传请求中的所述日志数据,以形成日志回传的路径。
[0125] 可选地,所述装置还包括:
[0126] 第一异常状态模块,用于当接收到所述日志回传请求的中心集群当前处于异常状态时,不解析所述日志回传请求,并向转发所述日志回传请求的接入服务器返回表征非健
康的状态码;
[0127] 第一更新模块,用于在所述接入服务器接收到所述表征非健康的状态码时,将该中心集群标记为不健康,并将所述日志回传请求退回所述边缘节点。
[0128] 可选地,所述装置还包括:
[0129] 第二异常状态模块,用于在接收到所述日志回传请求的接入服务器当前处于异常状态时,向所述边缘节点返回表征非健康的状态码;
[0130] 第二更新模块,用于在所述边缘节点接收到所述表征非健康的状态码时,将所述接入服务器标记为不健康,并采用轮询的方式向其他健康的接入服务器发送所述日志回传
请求。
[0131] 可选地,所述边缘节点包括第一健康查询模块,所述第一健康查询模块用于对于任一具有不健康标记的接入服务器,在标记时刻起的第一预设间隔后,向该接入服务器发
送第一健康查询请求;
[0132] 所述接入服务器包括第一健康确定模块,所述第一健康确定模块用于确定接收到所述第一健康查询请求的接入服务器自身是否处于正常状态,并确定其连接的所有中心集
群的健康情况;并在接收到所述第一健康查询请求的接入服务器自身处于正常状态,且其
至少连接有一个具有健康标记的中心集群时,该接入服务器向所述边缘节点发送表征健康
的状态码;
[0133] 所述边缘节点还包括第一健康标记模块,所述第一健康标记模块用于在接收到所述表征健康的状态码后,为该接入服务器添加健康标记。
[0134] 可选地,所述接入服务器包括第二健康查询模块,所述第二健康查询模块用于对于任一具有不健康标记的中心集群,在标记时刻起的第二预设间隔后,向该中心集群发送
第二健康查询请求;
[0135] 所述中心集群包括第二健康确定模块,所述第二健康确定模块用于确定接收到所述第二健康查询请求的中心集群自身是否处于正常状态;并在接收到所述第二健康查询请
求的中心集群自身处于正常状态时,该中心集群向所述接入服务器发送表征健康的状态
码;
[0136] 所述接入服务器包括第二健康标记模块,所述第二健康标记模块用于在接收到所述表征健康的状态码后,为该中心集群添加健康标记。
[0137] 可选地,所述第一健康确定模块包括:
[0138] 第一健康确定单元,用于在接收到所述第一健康查询请求的接入服务器当前处理的日志消息实例的数量大于0时,确定该接入服务器自身处于正常状态。
[0139] 可选地,所述第二健康确定模块包括:
[0140] 第二健康确定单元,用于在接收到所述第二健康查询请求的中心集群当前处理的日志消息实例的数量大于0,且所述日志消息实例的积压量小于积压阈值时,确定该中心集群自身处于正常状态。
[0141] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例所述的日志回传的选路方法。
[0142] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0143] 本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0144] 本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图
中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设
备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执
行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的装置。
[0145] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包
括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能。
[0146] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在
计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程
和/或方框图一个方框或多个方框中指定的功能的步骤。
[0147] 尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
[0148] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0149] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。