本发明属于网络数据管理技术领域,更具体地,涉及一种流式同步网管配置全量数据和增量数据的方法及电子设备。
背景技术:
随着网络规模越来越大,网络产生的数据也向海量巨量发展。而现在网管系统对设备和管控系统的数据存储和数据提供等能力已经突显短板。随着网络人工智能、网络数字化洞察分析、网络数字仿真等应用的出现,对网络大数据无论是体量还和数据质量,还是对数据的存储以及数据的完整性等方面都提出了更高、更苛刻的技术需求,这些都是目前网管系统难以解决的,尤其在数据质量、数据完整性和一致性方面。在此背景下,需要一个可以扩展扩充网络数据量的方法和系统,来解决目前网管数据不够全面的等一系列问题。基于此基础下,去实现网管智能化运维等方面的突破。
网管配置数据(业务配置,topo配置等)只有当前快照数据,没有变更历史记录。如果在某一时刻删除了网管某些配置,可能导致该时刻之前的历史性能或历史告警关联的业务不存在或不匹配,从而使得历史性能数据或历史告警数据的价值变低。
为了存储和记录历史配置变更记录,需要做配置数据历史拉链表,所以需要获取网管配置变更记录。但是网管又会在某些时候通过配置文件导入的方式初始化配置,所以又需要把网管配置的全量(存量)数据同步到拉链表。那么变更记录和全量配置这两种数据和处理逻辑都是相对独立的,因此就不能保证处理数据先后顺序。另外由于网络配置可能比较大,所以生成全量配置的时间比较长,它是一个持续生成的过程,需要在后台异步处理。在异步生成全量配置过程中,网络的配置可能又有变化,因此需要对全量配置数据和增量变更记录数据的各种复杂场景做数据同步处理。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种流式同步网管配置全量数据和增量数据的方案,保证网管配置变更的历史记录和网管实时操作变更的一致性。
为实现上述目的,按照本发明的一个方面,提供了一种流式同步网管配置全量数据和增量数据的方法,包括:
s1:增量数据处理任务开始接收增量消息并处理;
s2:增量消息处理过程中监听是否有全量数据需要同步处理,如果有则转步骤s4,如果没有则转步骤s3;
s3:增量消息依次入库;
s4:在增量消息处理过程中如果监听到有全量数据需要处理,立即暂停并阻塞增量数据处理任务;
s5:开启全量数据同步处理任务;
s6:全量数据同步处理结束后,全量数据入库;
s7:全量数据入库后,解阻塞增量数据处理任务,重新跳转到s1。
本发明的一个实施例中,用于保存全量数据和增量数据的网管日志遵循统一的格式约束,每条日志需要有该条日志的真实事件发生时间,还需要有该条日志的数据操作类型。
本发明的一个实施例中,所述数据操作类型包括新增、更新和删除。
本发明的一个实施例中,所述网管日志产生采用多线程模式,全量数据的日志和增量数据的日志分别使用独立线程处理。
本发明的一个实施例中,在全量数据同步的开始加入一个开始标记,在全量数据同步的结束加入一个结束标记m2,并且在增量数据中也加入一个全量开始标记m3。
本发明的一个实施例中,在全量同步开始的时候向增量数据的日志中打入一个标记并记录时间,同时在全量数据的日志中也打入一个开始标记并记录标记时间,在全量同步日志输出结束时再向全量数据的日志末尾同样打入一个结束标记并记录时间,并且开始标记和结束标记需要有相同的时间戳,目的是保证每次的全量数据的完整性。
本发明的一个实施例中,所述全量数据同步处理任务包括:
s11:从全量队列读取全量数据;
s12:判断读取数据是否超时,如果未超时则转步骤s13;否则转步骤s14;
s13:判断读取的数据是否是全量结束标记,如果读取的数据不是全量结束标记,则返回步骤s11继续读取数据;否则转步骤s15;
s14:如果在读取全量数据处理时超时,说明读取的数据是脏数据,直接丢弃并结束本次任务;
s15:如果读取到是结束标记,那么将本次读取到所有数据加载到磁盘,再将全量数据批量入库;
s16:记录最后一次全量同步时间,并结束全量数据同步处理任务。
本发明的一个实施例中,所述增量数据处理任务包括:
s21:开启增量数据处理任务,读取最新的一条增量数据;
s22:判断该条数据是否为全量开始标记;如果是则转步骤s23,如果不是继续执行步骤s24;
s23:如果是全量开始标记,则阻塞增量数据处理任务,开启全量处理任务处理流程;
s24:如果不是全量开始标记,则获取最后一次全量同步时间,该时间在全量任务处理完成后记录保存;
s25:比较当前数据时间和最后一次全量同步时间大小;如果当前数据时间大于最后全量同步时间,则转步骤s26;否则进入增量处理和全量同步重复数据任务步骤s27;
s26:数据入库;
s27:增量处理和全量同步重复数据任务处理。
本发明的一个实施例中,所述增量处理和全量同步重复数据任务包括:
s31:判断数据的操作类型是否为新增;如果是新增,跳转步骤s32;否则进行下一种条件判断转步骤s35;
s32:再判断数据库中是否已经有该条数据;如果有则跳转步骤s33;否则跳转步骤s34;
s33:无效数据直接丢弃;
s34:增量数据直接入库;
s35:判断数据的操作类型是否为更新,如果是更新,跳转步骤s36;否则进行下一种条件判断转步骤s37;
s36:再判断当前记录修改时间是否小于数据库最新记录时间;如果当前记录修改时间小于数据库最新记录时间,跳转步骤s33;否则跳转步骤s34;
s37:判断数据的操作类型是否为删除,如果是删除,可直接执行步骤s34删除数据;否者跳转步骤s33丢弃数据。
按照本发明的另一方面,还提供了一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述流式同步网管配置全量数据和增量数据的方法方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
(1)通过本发明,可以实现网络配置数据的历史拉链记录,提供查询任意时刻的网络配置,从而提升历史性能和告警等数据的实际意义,提供给其他系统或应用展示或分析使用;
(2)本发明提供了一种网管处理全量配置数据和增量数据的日志数据同步数据内容一致性的一种方案,通过该方案可以使得网管在同时处理增量数据和全量数据时产生的结果是真实有效的;
(3)本发明提供了一种网管历史快照数据的回溯方案,通过该方案可以使得网管能够回溯任意历史时刻的网络配置快照;
(4)通过本发明,可以完善网管数据的完整性,提供任意时刻网络配置拓扑结构和业务配置,基于以上特性,可以提供更多更丰富的业务能力,拓展其他业务等。
附图说明
图1为本发明实施例中待解决的业务数据模型;
图2为本发明实施例中全量和增量同步结果模型图;
图3为本发明实施例中另一种全量和增量同步结果模型图;
图4为本发明实施例中流式同步网管配置全量数据和增量数据的方法的流程示意图;
图5为本发明实施例中全量数据同步处理流程图;
图6为本发明实施例中增量数据处理任务流程图;
图7为本发明实施例中增量处理和全量同步重复数据任务的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明主要阐述基于网管配置的全量基线数据和增量变更数据的同步,基于一种数据一致性算法从而保证网管配置变更的历史记录和网管实时操作变更的一致性。
如图1所示为本发明待解决的业务数据模型,在图1中,假设全量数据同步发生在10:06分,一直持续到10:08分结束,共需同步4条配置数据(如上图竖线填充圆圈表示)。增量数据持续从10:00开始产生,并且在全量数据同步的时间段内依然有增量数据产生并被消费。在这种业务模型下,需要保证全量数据和增量数据的完整性以及最终数据一致性,主要需要解决10:06~10:08分这段时间内的全量数据和增量数据的处理逻辑。
第一种情况是需要解决增量数据已经处理到10:06分之后的数据(比如增量已经处理到10:09分)才处理10:06~10:08分的全量数据,导致后处理的全量数据把10:06分之后的增量数据冲掉,从而导致数据不一致。
第二种情况是需要解决增量由于网络或其他原因导致的数据延迟到达情况下,比如增量才处理到10:02分时就已经收到全量同步数据请求。全量数据提前处理后,数据出现断层和不一致的问题。
第三种情况是需要解决增量数据正处理到全量同步时间区间内的部分数据时,比如增量处理到10:07分数据时收到全量同步请求,此时增量已经把10:06分的数据处理,但是10:07分的数据还没处理,数据结果的最终一致性问题。
如图2所示为同步处理后的效果模型,在图2中经过同步处理后,在10:06~10:08分的数据可能的结果是全量数据中的部分数据同步到结果集合中,比如全量数据共4条中有3条被同步(图中竖线填充圆圈表示)。这段时间的增量数据也有部分被同步到结果集合中,比如两条增量数据中的一条被同步(图中横线填充圆圈表示)。后续的增量数据依然没有被影响(图中横竖交叉线条填充圆圈表示)。
除了上述可能的结果模型,还有其他结果模型,比如全量数据都是无效数据、增量数据都被包含在全量数据中等等。
如图3所示为本发明的实现原理,在全量数据同步的开始加入一个开始标记m1,在全量数据同步的结束加入一个结束标记m2(图中斜线交叉圆圈),并且在增量数据中也加入一个全量开始标记m3(图中斜线交叉圆圈)。
通过加入标记,在处理增量数据时可以防止增量数据处理任务过度。在处理全量数据时,可以知道数据处理是否结束。从而保证增量数据和全量数据处理的结果一致。
功能实现详细说明:
网管配置日志产生
首先网管日志需要遵循统一的格式约束,每天日志需要有该条记录的真实事件发生时间,还需要有该条日志的数据操作类型,目前主要的数据操作类型分别是新增、更新和删除。除此之外,日志数据的其他内容是该日志的其他信息。
其次,网管日志产生采用多线程模式,全量数据的日志和增量数据的日志分别使用独立线程处理。但为了保证全量数据和增量数据顺序消费处理,需要在全量同步开始的时候向增量数据的日志中打入一个标记并记录时间,同时在全量数据的日志中也打入一个开始标记并记录标记时间。在全量同步日志输出结束时再向全量数据的日志末尾同样打入一个结束标记并记录时间。并且开始标记和结束标记需要有相同的时间戳(版本标记),目的是保证每次的全量数据的完整性。
全量标记阻塞增量处理并开启全量处理任务
在处理增量数据时,采用流式处理方式,一旦发现了数据流内容中有全量开始标记,就暂停处理增量数据,并且启动全量处理任务。全量数据处理任务开始从全量队列获取数据并且进行数据处理,直到所有全量数据处理完成后,通知增量数据处理任务继续处理增量数据。增量数据处理任务在收到继续全量处理完成通知后恢复处理流程。
在全量数据拉取的过程中,可能由于异常等问题,导致数据拉取超时,此种情况需要丢弃不完整数据。另外需要在全量数据拉取结束时,判断拉取的数据是否属于同一批次数据,可以通过全量开始标记和全量结束标记的时间戳是否匹配判断,如果不属于同一批次,同样需要丢弃此批次数据,因为可能数据中混合有脏数据。
全量同步结束恢复增量处理
在收到全量结束通知后,解除之前对增量数据处理任务的阻塞,继续消费增量数据。再次消费增量数据时,此时依然会监听(观察)增量数据中是否有全量开始标记,一旦发现全量开始标记就重复全量处理流程。
增量处理和全量同步时间重合部分
在恢复增量数据处理任务的过程时,由于增量任务被阻塞一段时间,所以在阻塞的这段时间内可能有新的增量数据产生但是未被消费,同时这段时间处的全量数据可能已经把未被消费的增量数据包含在内。因此增量任务刚恢复的一段时间内,增量消费和和全量消费可能有数据重合的部分。对于这部分数据,经过处理后,可以保证即使有重合部分也不会导致数据异常。
具体处理重复数据的逻辑如下:
1、首先在内存中缓存上次全量同步结束时间戳;
2、获取一条增量流数据,并且比较该条数据的时间戳和上次全量同步结束的时间戳,如果当前数据时间戳大于上次全量同步结束时间戳,那么可以直接处理该条增量数据。如果当前数据时间戳小于上次全量同步结束时间戳,需要继续判断当前数据操作类型;
3、当前数据时间戳小于上次全量同步结束时间戳,表示此部分数据可能有重合,再次判断当前增量数据的操作类型。如果是删除操作,可以直接执行,因为删除操作是幂等的,即使在数据库层面多次执行结果也是相同的。如果是新增操作,需要判断数据库中是否已经有该条数据记录,如果没有就可以直接执行新增,如果已经有相同记录,则放弃该条数据执行。如果是更新操作,需要比较当前数据的操作时间和数据库已有记录的最后更新时间,如果当前数据的更新时间大于已有记录的最新时间,需要把当前数据的更新操作执行到数据库层,否则直接丢弃该条数据;
4、继续获取下一条增量流数据,并且重复步骤2。
如图4所示为本发明实施例中数据处理逻辑总体流程图,详细步骤包括:
s1:增量数据处理任务开始接收增量消息并处理;
s2:增量消息处理过程中监听是否有全量数据需要同步处理,如果有则转步骤s4,如果没有则转步骤s3;
s3:增量消息依次入库;
s4:在增量消息处理过程中如果监听到有全量数据需要处理,立即暂停并阻塞增量数据处理任务;
s5:开启全量数据同步处理任务;
s6:全量数据同步处理结束后,全量数据入库;
s7:全量数据入库后,解阻塞增量数据处理任务,重新跳转到s1。
全量数据同步处理任务流程
如图5所示为本发明实施例中全量数据同步处理任务流程图,详细步骤包括:
s11:从全量队列读取全量数据;
s12:判断读取数据是否超时,如果未超时则转步骤s13;否则转步骤s14;
s13:判断读取的数据是否是全量结束标记,如果读取的数据不是全量结束标记,则返回步骤s11继续读取数据;否则转步骤s15;
s14:如果在读取全量数据处理时超时,说明读取的数据是脏数据,直接丢弃并结束本次任务;
s15:如果读取到是结束标记,那么将本次读取到所有数据加载到磁盘,再将全量数据批量入库;
s16:记录最后一次全量同步时间,并结束全量数据同步处理任务。
增量数据处理任务流程
如图6所示为本发明实施例中增量数据处理任务流程图,详细步骤包括:
s21:开启增量数据处理任务,读取最新的一条增量数据;
在前面的全量数据同步处理任务时,增量数据处理任务被阻塞,之前的旧数据会积压在消息队列中;因此当开启增量数据处理任务后,是从阻塞的位置开始,先接收旧数据后接收新数据,在增量数据处理任务中数据的读取过程是先进先出。
s22:判断该条数据是否为全量开始标记;如果是则转步骤s23,如果不是继续执行步骤s24;
s23:如果是全量开始标记,阻塞增量数据处理任务,开启全量处理任务处理流程;
s24:如果不是全量开始标记,获取最后一次全量同步时间,该时间在全量任务处理完成后记录保存;
s25:比较当前数据时间和最后一次全量同步时间大小;如果当前数据时间大于最后全量同步时间,则转步骤s26;否则进入增量处理和全量同步重复数据任务s27;
s26:数据入库;
s27:增量处理和全量同步重复数据任务处理。
增量处理和全量同步重复数据任务流程
如图7所示为本发明实施例中增量处理和全量同步重复数据任务图,详细步骤包括:
s31:判断数据的操作类型是否为新增;如果是新增,跳转步骤s32;否则进行下一种条件判断转步骤s35;
s32:再判断数据库中是否已经有该条数据;如果有则跳转步骤s33;否则跳转步骤s34;
s33:无效数据直接丢弃;
s34:增量数据直接入库;
s35:判断数据的操作类型是否为更新,如果是更新,跳转步骤s36;否则进行下一种条件判断转步骤s37;
s36:再判断当前记录修改时间是否小于数据库最新记录时间;如果当前记录修改时间小于数据库最新记录时间,跳转步骤s33;否则跳转步骤s34;
s37:判断数据的操作类型是否为删除,如果是删除,可直接执行步骤s34删除数据;否者跳转步骤s33丢弃数据。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种流式同步网管配置全量数据和增量数据的方法,其特征在于,包括:
s1:增量数据处理任务开始接收增量消息并处理;
s2:增量消息处理过程中监听是否有全量数据需要同步处理,如果有则转步骤s4,如果没有则转步骤s3;
s3:增量消息依次入库;
s4:在增量消息处理过程中如果监听到有全量数据需要处理,立即暂停并阻塞增量数据处理任务;
s5:开启全量数据同步处理任务;
s6:全量数据同步处理结束后,全量数据入库;
s7:全量数据入库后,解阻塞增量数据处理任务,重新跳转到s1。
2.如权利要求1所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,用于保存全量数据和增量数据的网管日志遵循统一的格式约束,每条日志需要有该条日志的真实事件发生时间,还需要有该条日志的数据操作类型。
3.如权利要求2所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,所述数据操作类型包括新增、更新和删除。
4.如权利要求2所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,所述网管日志产生采用多线程模式,全量数据的日志和增量数据的日志分别使用独立线程处理。
5.如权利要求1或2所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,在全量数据同步的开始加入一个开始标记,在全量数据同步的结束加入一个结束标记m2,并且在增量数据中也加入一个全量开始标记m3。
6.如权利要求5所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,在全量同步开始的时候向增量数据的日志中打入一个标记并记录时间,同时在全量数据的日志中也打入一个开始标记并记录标记时间,在全量同步日志输出结束时再向全量数据的日志末尾同样打入一个结束标记并记录时间,并且开始标记和结束标记需要有相同的时间戳,目的是保证每次的全量数据的完整性。
7.如权利要求1或2所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,所述全量数据同步处理任务包括:
s11:从全量队列读取全量数据;
s12:判断读取数据是否超时,如果未超时则转步骤s13;否则转步骤s14;
s13:判断读取的数据是否是全量结束标记,如果读取的数据不是全量结束标记,则返回步骤s11继续读取数据;否则转步骤s15;
s14:如果在读取全量数据处理时超时,说明读取的数据是脏数据,直接丢弃并结束本次任务;
s15:如果读取到是结束标记,那么将本次读取到所有数据加载到磁盘,再将全量数据批量入库;
s16:记录最后一次全量同步时间,并结束全量数据同步处理任务。
8.如权利要求1或2所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,所述增量数据处理任务包括:
s21:开启增量数据处理任务,读取最新的一条增量数据;
s22:判断该条数据是否为全量开始标记;如果是则转步骤s23,如果不是继续执行步骤s24;
s23:如果是全量开始标记,则阻塞增量数据处理任务,开启全量处理任务处理流程;
s24:如果不是全量开始标记,则获取最后一次全量同步时间,该时间在全量任务处理完成后记录保存;
s25:比较当前数据时间和最后一次全量同步时间大小;如果当前数据时间大于最后全量同步时间,则转步骤s26;否则进入增量处理和全量同步重复数据任务步骤s27;
s26:数据入库;
s27:增量处理和全量同步重复数据任务处理。
9.如权利要求8所述的流式同步网管配置全量数据和增量数据的方法,其特征在于,所述增量处理和全量同步重复数据任务包括:
s31:判断数据的操作类型是否为新增;如果是新增,跳转步骤s32;否则进行下一种条件判断转步骤s35;
s32:再判断数据库中是否已经有该条数据;如果有则跳转步骤s33;否则跳转步骤s34;
s33:无效数据直接丢弃;
s34:增量数据直接入库;
s35:判断数据的操作类型是否为更新,如果是更新,跳转步骤s36;否则进行下一种条件判断转步骤s37;
s36:再判断当前记录修改时间是否小于数据库最新记录时间;如果当前记录修改时间小于数据库最新记录时间,跳转步骤s33;否则跳转步骤s34;
s37:判断数据的操作类型是否为删除,如果是删除,可直接执行步骤s34删除数据;否者跳转步骤s33丢弃数据。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9任一项所述的方法。
技术总结