支持目标集群动态探测的高性能网络日志消息分发方法与流程

文档序号:17535759发布日期:2019-04-29 13:58阅读:184来源:国知局
支持目标集群动态探测的高性能网络日志消息分发方法与流程

本发明属于网络管理领域,具体涉及支持目标集群动态探测的高性能网络日志消息分发方法。



背景技术:

会话(session)本义是指有始有终的一系列动作/消息,当会话与网络协议相关联时,又包含了“面向连接”和“保持状态”两种含义。网络设备或软件,会根据实际业务的需要生成会话日志。随着网络技术的飞速发展,实时高性能地处理网络流量,并将生成的同一个会话的日志消息向同一个特定集群进行汇聚分发已成为当前研究的重要内容,特别是在众多的应用研究领域。例如:网络监控、电子商务等重要领域。在处理网络会话日志过程中,并以会话连接为单位对消息进行分发时,接收主机的保活探测是消息分发正确性的基础。消息的分发汇聚需要获取所有正常状态的节点,并将负载在各个状态正常的业务处理节点之间进行合理分配和调度,使各个节点尽量均衡地承担网络日志处理的任务。消息分发节点根据处理业务的类型对接收主机进行分组,也就是根据业务类型进行分组形成接收集群。所以,需要分发节点通过动态保活机制监测各个接收主机是否处于正常工作状态,将异常节点从活跃接收主机对象列表中删除,避免给故障节点分配负载任务,并将故障节点的负载任务分发给其他正常节点承担。现有技术主要采用由消息分发节点各自独立完成对接收主机状态探测的方案,然而,对于处理跨地域消息分发时,同一分发节点或者不同地区的多个分发节点,向同一接收主机集群发送消息的情况,如果各分发节点对集群内某个接收主机的状态判定不一致,则会直接导致不同分发节点将相同连接的消息分发到不同的接收主机上,从而导致日志消息分发失败;同时,由于在日志消息转发过程中,需要多次访问不同的内存空间获取接收主机的地址及端口信息,消耗了大量内存资源。



技术实现要素:

有鉴于此,本发明提供了支持目标集群动态探测的高性能网络日志消息分发方法,通过采取分布式探测、状态统一发布的保活动态探测策略,能够确保各分发节点上接收主机状态的一致性,同时,通过在日志消息分发过程采用加权负载均衡,避免了大量内存访问。

本发明提供的支持目标集群动态探测的高性能网络日志消息分发方法,具体包括如下步骤;

步骤1、探测节点对业务集群内的接收主机进行探测,获得接收主机的状态信息,并将该状态信息与保存在本地的接收主机历史状态数据进行比较,判断此时接收主机的状态,接收主机的状态包括:活跃状态、失效状态及恢复状态,其中,恢复状态为当接收主机的历史数据为失效状态而当前状态为活跃状态时接收主机所处的状态;如果接收主机的当前状态与其历史状态数据保持一致,则立即将接收主机的当前状态信息发送给分发管理中心;如果接收主机的当前状态为失效状态,则立即将接收主机的当前状态信息即失效状态发送给分发管理中心;如果接收主机的当前状态为恢复状态,则延迟发送该主机的状态信息,等待进一步确认;

对于处于恢复状态的接收主机,探测节点按照固定的时间间隔继续连续对其进行n次探测,若连续n次探测的结果都是活跃状态,则说明该节点已恢复功能且状态稳定,则将该节点的状态设定为活跃状态,并立即将当前状态信息发送给分发管理中心;

步骤2、分发管理中心接收到来自于探测节点的状态信息后,统一发布到所有的消息分发节点;

步骤3、消息分发节点根据处理业务的类型对接收主机进行分组,并根据接收主机的处理能力为接收主机的每个端口赋权值,再根据端口的权值建立该组接收主机的消息分发映射表,分发映射表中以主机端口为单元进行存储,每个主机端口具有多条记录,记录的条数与该端口的权值相等,每条记录都与一个固定的序号与之相对应;

消息分发节点根据接收到的来自于分发管理中心的状态信息,更新本地存储的接收主机状态及消息分发映射表,即如果某个接收主机处于失效状态,则消息分发节点将其从相应的消息分发映射表中剔除,消息分发映射表中的序号自动更新;

步骤4、当消息分发节点接收到会话消息时,根据该会话请求的业务类型,确定其采用的接收主机分组,从而确定对应的消息分发映射表;

消息分发节点确定会话消息数据包的五元组,即源地址、源端口、目的地址、目的端口、协议,并计算该五元组的哈希值,以该哈希值作为消息分发映射表中的序号,找到对应的接收主机端口,消息分发节点将该会话消息数据包转发至该接收主机端口。

进一步地,所述分发管理中心采用zookeeper实现。

有益效果:

本发明通过采用分布式动态探测、状态统一分布等方法,确保接收主机的活跃性;考虑到同一集群内的不同性能的业务处理机的性能,采用加权负载均衡算法,将网络日志消息更加均衡地分布到集群环境下的接收主机上;同时,采用哈希函数计算会话数据包中所包含的五元组(源地址、目的地址、源端口、目的端口、协议)的哈希值,逐包确定接收主机端口的方法,有效的降低了接收主机失效带来的影响。

附图说明

图1为本发明提供的支持目标集群动态探测的高性能网络日志消息分发方法部署图。

图2为本发明提供的支持目标集群动态探测的高性能网络日志消息分发方法消息分发映射表示意图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了支持目标集群动态探测的高性能网络日志消息分发方法,其基本思想是:通过在不同地域部署探测节点,实现对消息接收主机状态的实时动态探测,同时将探测结果向分发管理中心汇聚,再由分发管理中心将处理后的接收主机状态消息同步分发到各分发节点上,再根据建立的接收主机权值相关的消息分发映射表进行日志消息分发加强负载均衡,最终完成日志消息的有效分发,提高了日志消息分发的效率和可靠性。

本发明提供的支持目标集群动态探测的高性能网络日志消息分发方法,消息分发节点、状态探测节点、消息接收主机及分发管理中心的部署图,如图1所示。其中,消息分发节点分别部署在不同的地域,负责消息的分发;状态探测节点分别部署在每个接收节点集群内部,负责所部署区域内的接收主机的状态探测,并将探测结果发送给分发管理中心;消息接收主机为不同地域的业务接收主机,负责接收消息处理业务;分发管理中心支持分布式部署,能够满足整个消息分发-业务处理机群规模的扩展需求,且发布的消息具有严格的一致性,从而确保整个消息分发体系具备跨地域的同源同宿负载均衡能力。

本发明提供的支持目标集群动态探测的高性能网络日志消息分发方法,具体包括如下步骤:

步骤1、探测节点对业务集群内的接收主机进行探测,获得接收主机的状态信息,并将该状态信息与保存在本地的接收主机历史状态数据进行比较,判断此时接收主机的状态,接收主机的状态包括:活跃状态、失效状态及恢复状态,如果接收主机的当前状态与其历史数据保持一致,则立即将接收主机的当前状态信息发送给分发管理中心;如果接收主机的当前状态为失效状态,则立即将接收主机的当前状态信息即失效状态发送给分发管理中心;如果接收主机的当前状态为活跃状态,而其历史数据为失效状态,则认为该接收主机的状态为恢复状态,延迟发送该主机的状态信息,等待进一步确认;

对于处于恢复状态的接收主机,探测节点按照固定的时间间隔继续连续对其进行3次探测,若连续3次探测的结果都是活跃状态,则说明该节点已恢复功能且状态稳定,则将该节点的状态设定为活跃状态,并立即将当前状态信息发送给分发管理中心;

步骤2、分发管理中心接收到来自于探测节点的状态信息后,统一发布到所有的消息分发节点;

步骤3、消息分发节点根据处理业务的类型对接收主机进行分组,并根据接收主机的处理能力为接收主机的每个端口赋权值,再根据端口的权值建立该组接收主机的消息分发映射表,如图2所示,分发映射表中以主机端口为单元进行存储,每个主机端口具有多条记录,记录的条数与该端口的权值相等,每条记录都与一个固定的序号与之相对应;例如,接收主机的地址为ip1,其port11端口,表示为ip1:port11,该端口的权值为w11,w11的值为2,则ip1:port11在消息分发映射表中有两条记录,记录的序号分别为0和1;

消息分发节点根据接收到的来自于分发管理中心的状态信息,更新本地存储的接收主机状态及消息分发映射表,即如果某个接收主机处于失效状态,则消息分发节点需要将其从相应的消息分发映射表中剔除,原消息分发映射表中的序号自动更新;

步骤4、当消息分发节点接收到会话消息时,根据该会话请求的业务类型,确定其采用的接收主机组,从而确定对应的消息分发映射表;

消息分发节点以会话消息数据包为单元进行逐包分发处理,首先确定会话消息数据包的五元组,即源地址、源端口、目的地址、目的端口、协议,并计算该五元组的哈希值,以该哈希值作为消息分发映射表中的序号,找到对应的接收主机端口,消息分发节点将该会话消息数据包转发至该接收主机端口。

实施例一:

本实施例中选择采用zookeeper作为分发管理中心。

步骤1、探测节点对区域内的接收主机进行探测,获得接收主机的状态信息,并将该状态信息与保存在本地的接收主机历史状态数据进行比较,判断此时接收主机的状态,接收主机的状态包括:活跃状态、失效状态及恢复状态,如果接收主机的当前状态与其历史数据保持一致,则立即将接收主机的当前状态信息发送给zookeeper;如果接收主机的当前状态为失效状态,则立即将接收主机的当前状态信息即失效状态发送给zookeeper;如果接收主机的当前状态为活跃状态,而其历史数据为失效状态,则认为该接收主机的状态为恢复状态,延迟发送该主机的状态信息,等待进一步确认;

对于处于恢复状态的接收主机,探测节点按照固定的时间间隔继续连续对其进行3次探测,若连续3次探测的结果都是活跃状态,则说明该节点已恢复功能且状态稳定,则将该节点的状态设定为活跃状态,并立即将当前状态信息发送给zookeeper;

步骤2、zookeeper接收到来自于探测节点的状态信息后,同步更新所有其他zookeeper节点,然后统一发布到所有的消息分发节点;

步骤3、消息分发节点根据处理业务的类型对接收主机进行分组,并根据接收主机的处理能力为接收主机的每个端口赋权值,再根据端口的权值建立该组接收主机的消息分发映射表,如图2所示,分发映射表中以主机端口为单元进行存储,每个主机端口具有多条记录,记录的条数与该端口的权值相等,每条记录都与一个固定的序号与之相对应;

消息分发节点根据接收到的来自于分发管理中心的状态信息,更新本地存储的接收主机状态及消息分发映射表,即如果某个接收主机处于失效状态,则消息分发节点需要将其从相应的消息分发映射表中剔除,原消息分发映射表中的序号自动更新;

步骤4、当消息分发节点接收到会话消息时,根据该会话请求的业务类型,确定其采用的接收主机组,即确定对应的消息分发映射表;

消息分发节点以会话消息数据包为单元进行逐包分发处理,首先确定会话消息数据包的五元组,即源地址、源端口、目的地址、目的端口、协议,并计算该五元组的哈希值,以该哈希值作为消息分发映射表中的序号,找到对应的接收主机端口,消息分发节点将该会话消息数据包转发至该接收主机端口。

采用本发明提供的加权负载均衡方法,当某个接收节点失效时,通过消息分发映射表可以及时切换至活跃节点上,保持了日志消息分发的连接性及完整性,避免出现连接大迁移的情况,此外,由于接收主机间的切换过程中不需要多次访问内存,从而达到了访存优化的目的。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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