欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于HashMap数据结构的分布式比较方法独创技术28833字

一种基于HashMap数据结构的分布式比较方法

2021-03-11 10:23:04

一种基于HashMap数据结构的分布式比较方法

  技术领域

  本发明涉及数据处理技术领域,特别涉及一种基于HashMap数据结构的分布式比较方法。

  背景技术

  目前,在金融行业软件中,经常需要对比业务数据的一致性,获取数据的比较结果,比较结果为一致、更新、新增、删除四种状态,并将获取的比较结果供业务模块处理。而金融数据的特点是数据量大、数据元素关系和属性复杂(存在一对多,多对多的关系,元素属性通常超过30个),使用传统的线性表、哈希表或数据库比对的方式无法满足性能要求。

  HashMap(哈希映射)在存储元素时,如果出现哈希值取余冲突,元素会存入到链表中,在大数据量存储时,索引的计算时间会变长,同时链表中的数据量会非常大,严重影响HashMap查找效率,在比对新增、修改、一致性的元素比较时,因可以采用正向比较(即遍历目标数据的方法,通过KEY在原始数据中进行查找)方法进行比较,所消耗的时间较长,但需要查找目标元素在原始数据中是否删除时,传统方法需要再反向查找一次(即遍历原始数据,在目标数据中进行查找,如果找不到该元素,则标记为删除),使得消耗的时间进一步加长。

  因此,急需一种基于HashMap数据结构的分布式比较方法。

  发明内容

  为解决上述技术问题,本发明提供一种基于HashMap数据结构的分布式比较方法,用以提高对元素的比较效率。

  本发明实施例中提供了一种基于HashMap数据结构的分布式比较方法,所述方法包括:

  获取原始数据和目标数据;

  采用多节点共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较;

  将所述原始数据中与所述目标数据中标号相同的元素进行比较,当比较一致时,则将所述元素标记为一致元素,并将所述一致元素向结果集传输;并将所述原始数据中的与所述目标数据中的所述一致元素删除;

  当所述原始数据中与所述目标数据中的标号相同的元素比较不一致时,则将所述原始数据中的所述元素与所述目标数据中的所述元素标记为更新元素,并将所述更新元素向所述结果集传输;并将所述原始数据中的所述更新元素和所述目标数据中的所述更新元素删除;

  当所述原始数据中存在有所述目标数据中不包含的元素时,则将所述元素标记为删除元素,并将所述删除元素向所述结果集传输;并将所述原始数据中的所述删除元素删除;

  当所述目标数据中存在有所述原始数据中不包含的元素时,则将所述元素标记为新增元素,并将所述新增元素向所述结果集传输;并将所述目标数据中的所述新增元素删除;

  将所述结果集向数据接收端传输。

  在一个实施例中,将所述结果集向数据接收端传输之前还包括:

  根据所述元素的标号,对所述结果集中的元素进行排序处理。

  在一个实施例中,采用多节点共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较之后,还包括:

  获取多节点共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较所耗费的时间;具体包括:

  获取单节点共享计算池的模型,计算所述单节点共享计算池对所述原始数据中的元素与所述目标数据中的元素进行比较所耗费的时间;具体包括

  设m为HashMap中某个链表的大小,O(1)为选中所述链表所耗费的时间,O(m-1)/m-1表示所述链表的平均比较次数;N为要比较的所述元素的个数,i为HashMap中所述元素的索引,H为两个所述元素比较所需的时间,可设定为时间常数;P为所述单节点共享计算池对所述原始数据中的元素与所述目标数据中的元素进行比较所耗费的时间;

  

  采用所述多节点共享计算池时,采用加速比S(N)来进行度量,所述加速比公式定义为:

  

  采用多节点共享计算池时进行数据比较所需的平均时间K为:

  

  将上述两个公式推广到所述基于HashMap数据结构的分布式比较方法中,可以得到下述修正后的加速比公式:

  

  在一个实施例中,采用多节点共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较的过程中,还包括:

  采用水平负载均衡器选择所述共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较;具体包括:

  通过与所述共享计算池一一对应的检测节点,对所述共享计算池的工作状态信息进行检测;

  所述检测节点,用于检测所述共享计算池的当前工作状态信息和预设时间周期内的工作量信息,并将所述当前工作状态信息和所述工作量信息向所述水平负载均衡器传输;

  所述水平负载均衡器,用于对所述当前工作状态信息赋予第一权重信息、对所述工作量信息赋予第二权重信息;并通过所述当前工作状态信息以及与所述当前工作状态信息对应的第一权重信息、所述工作量信息以及与所述工作量信息对应的第二权重信息,获取所述共享计算池的工作状态值;所述水平负载均衡器,还用于根据各所述多节点共享计算池的所述工作状态值,选择所述共享计算池,对所述原始数据中的元素与所述目标数据中的元素进行比较。

  在一个实施例中,所述水平负载均衡器,还用于当所述多节点共享计算池的所述工作状态值达到第一上限值时,则停止对所述原始数据中的元素与所述目标数据中的元素的比较;

  当所述多节点共享计算池的所述工作状态值低于所述第一上限值时,通过所述检测节点于检测所述共享计算池的配置信息,并将所述配置信息向所述水平均衡负载器传输;所述水平均衡负载器,还用于根据所述共享计算池的配置信息、所述当前工作状态信息和所述工作量信息,获取所述共享计算池的第二上限值;当所述共享计算池的所述工作状态值高于所述第二上限值时,则停止将所述原始数据中的元素与所述目标数据中的元素向所述共享计算池传输进行比较;当所述共享计算池的所述工作状态值低于所述第二上限值时,则将所述原始数据中的元素与所述目标数据中的元素向所述共享计算池传输进行比较。

  在一个实施例中,所述检测节点,还用于在空闲时对所述共享计算池的数据处理能力进行检测;具体包括:获取所述检测节点内预设的标准元素比较对;将所述标准元素比较对向所述共享计算池传输;获取所述共享计算池的输出结果和元素处理时间;分别对所述输出结果和所述元素处理时间进行检测;

  当所述输出结果与所述检测节点内预设的所述标准元素比较对相对应的标准比较结果不一致时,则将所述共享计算池停用,并向工作人员传输所述共享计算池的标识信息,以提醒工作人员所述共享计算池发生故障;

  当所述输出结果与所述检测节点内预设的所述标准元素比较对相对应的标准比较结果一致时,检测所述共享计算池空闲时的冗余信息,并根据所述冗余信息和所述配置信息,对所述共享计算池的数据处理能力进行评估;根据评估获取的所述共享计算池的数据处理信息,判断所述元素处理时间是否异常,当判断存在异常时,对所述共享计算池的冗余信息进行智能清理,重复上述步骤,进行重新检测,再次判断所述元素处理时间是否异常,当判断存在异常时,则将所述共享计算池停用,向工作人员传输所述共享计算池的标识信息,以提醒工作人员所述共享计算池发生故障。

  在一个实施例中,对所述共享计算池的冗余信息进行智能清理的过程中,具体包括:

  扫描所述共享计算池的注册列表,识别所述冗余信息;具体包括:

  获取所述共享计算池内的信息的标识位;当所述标识位为冗余值时,所述标识位对应的所述信息为所述冗余信息,并将所述冗余信息删除;当所述标识位不是所述冗余值时,所述信息包括所述冗余信息的关联信息和存储地址信息;根据所述冗余信息的所述关联信息和所述存储地址信息,获取所述冗余信息,并将所述冗余信息删除。

  在一个实施例中,将所述共享计算池停用,向工作人员传输所述共享计算池的标识信息,以提醒工作人员所述共享计算池发生故障之后,还包括:

  将所述共享计算池的标识信息向所述水平负载均衡器传输;

  所述水平负载均衡器将不再选择所述标识信息对应的所述共享计算池对所述原始数据中的元素与所述目标数据中的元素进行比较;

  工作人员对所述共享计算池进行重新配置后,将所述共享计算池加载用于对所述原始数据中的元素与所述目标数据中的元素的比较。

  在一个实施例中,工作人员对所述共享计算池进行重新配置后,将所述共享计算池加载用于对所述原始数据中的元素与所述目标数据中的元素的比较的过程中,具体包括:

  所述水平负载均衡器,用于对新加载的所述共享计算池分配所述检测节点;所述检测节点通过将所述标准元素比较对向所述共享计算池传输;获取所述共享计算池的输出结果和元素处理时间;并分别对所述输出结果和所述元素处理时间进行检测;当检测合格后,将所述共享计算池的所述标识信息向所述水平负载均衡器传输;所述水平负载均衡器接收到所述标识信息后,将所述标识信息对应的所述共享计算池用于对所述原始数据中的元素与所述目标数据中的元素进行比较。

  本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

  下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

  附图说明

  图1为本发明所提供一种基于HashMap数据结构的分布式比较方法的结构示意图。

  具体实施方式

  以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

  本发明实施例提供了一种基于HashMap数据结构的分布式比较方法,如图1所示,方法包括:

  获取原始数据和目标数据;

  采用多节点共享计算池,对原始数据中的元素与目标数据中的元素进行比较;

  将原始数据中与目标数据中标号相同的元素进行比较,当比较一致时,则将元素标记为一致元素,并将一致元素向结果集传输;并将原始数据中的与目标数据中的一致元素删除;

  当原始数据中与目标数据中的标号相同的元素比较不一致时,则将原始数据中的元素与目标数据中的元素标记为更新元素,并将更新元素向结果集传输;并将原始数据中的更新元素和目标数据中的更新元素删除;

  当原始数据中存在有目标数据中不包含的元素时,则将元素标记为删除元素,并将删除元素向结果集传输;并将原始数据中的删除元素删除;

  当目标数据中存在有原始数据中不包含的元素时,则将元素标记为新增元素,并将新增元素向结果集传输;并将目标数据中的新增元素删除;

  将结果集向数据接收端传输。

  上述方法的工作原理在于:获取原始数据和目标数据;采用多节点共享计算池,对原始数据中的元素与目标数据中的元素进行比较;将原始数据中与目标数据中标号相同的元素进行比较,当比较一致时,则将元素标记为一致元素,并将一致元素向结果集传输;并将原始数据中的与目标数据中的一致元素删除;当原始数据中与目标数据中的标号相同的元素比较不一致时,则将原始数据中的元素与目标数据中的元素标记为更新元素,并将更新元素向结果集传输;并将原始数据中的更新元素和目标数据中的更新元素删除;当原始数据中存在有目标数据中不包含的元素时,则将元素标记为删除元素,并将删除元素向结果集传输;并将原始数据中的删除元素删除;当目标数据中存在有原始数据中不包含的元素时,则将元素标记为新增元素,并将新增元素向结果集传输;并将目标数据中的新增元素删除;最后将结果集向数据接收端传输。

  上述方法的有益效果在于:通过采用多节点共享计算池,将原始数据中的元素与目标数据中的元素进行比较,将元素分发到共享计算池中进行处理,有效地提高了对原始数据中的元素与目标数据中的元素进行比较的效率;并且在原始数据中的元素与目标数据中的元素比较一致时,则将元素标记为一致元素,并将一致元素向结果集传输;并将原始数据中的与目标数据中的一致元素删除;当原始数据中与目标数据中的标号相同的元素比较不一致时,则将原始数据中的元素与目标数据中的元素标记为更新元素,并将更新元素向结果集传输;并将原始数据中的更新元素和目标数据中的更新元素删除;当原始数据中存在有目标数据中不包含的元素时,则将元素标记为删除元素,并将删除元素向结果集传输;并将原始数据中的删除元素删除;当目标数据中存在有原始数据中不包含的元素时,则将元素标记为新增元素,并将新增元素向结果集传输;并将目标数据中的新增元素删除;通过上述步骤实现了对元素比较结果一致、更新、新增、删除四种状态的判断;与传统技术相比,在元素比较完成之后,便将相比较的元素从原始数据和目标数据中删除,降低了链表的平均比较次数;并且通过对元素的比较,原始数据和目标数据中的元素逐步减少,同时也使得对原始数据和目标数据中的元素查找所耗费的时间成本逐步降低,最后将结果集传输给数据接收端,从而实现原始数据中的元素和目标数据中的元素的比较,进一步地提高了对原始数据和目标数据中的元素的比较效率。

  在一个实施例中,上述方法是一个基于Java的ConcurrentHashMap(线程安全的哈希表)数据结构的分布式比较框架,相比于传统的数据比较算法性能有较大提升,并可应用于多个金融系统中。

  在一个实施例中,将结果集向数据接收端传输之前还包括:

  根据元素的标号,对结果集中的元素进行排序处理。上述技术方案中将结果集中的元素,根据元素的标号进行排序,从而实现了对结果集中的元素的整理,进一步方便了数据接收端对结果集中元素的接收。

  在一个实施例中,采用多节点共享计算池,对原始数据中的元素与目标数据中的元素进行比较之后,还包括:

  获取多节点共享计算池,对原始数据中的元素与目标数据中的元素进行比较所耗费的时间;具体包括:

  获取单节点共享计算池的模型,计算单节点共享计算池对原始数据中的元素与目标数据中的元素进行比较所耗费的时间;具体包括

  设m为HashMap中某个链表的大小,O(1)为选中链表所耗费的时间,O(m-1)/m-1表示链表的平均比较次数;N为要比较的元素的个数,i为HashMap中元素的索引,H为两个元素比较所需的时间,可设定为时间常数;P为单节点共享计算池对原始数据中的元素与目标数据中的元素进行比较所耗费的时间;

  

  采用多节点共享计算池时,采用加速比S(N)来进行度量,加速比公式定义为:

  

  采用多节点共享计算池时进行数据比较所需的平均时间K为:

  

  将上述两个公式推广到基于HashMap数据结构的分布式比较方法中,可以得到下述修正后的加速比公式:

  

  上述技术方案中通过建立单节点共享计算池的模型,实现了对单节点共享计算池对原始数据中的元素与目标数据中的元素进行比较所耗费的时间的获取;并通过加速比公式和获取的单节点共享计算池对元素处理所耗费的时间,实现了采用多节点共享计算池对原始数据中的元素与目标数据中的元素进行比较所耗费的时间的获取。

  在一个实施例中,采用多节点共享计算池,对原始数据中的元素与目标数据中的元素进行比较过程中,还包括:

  采用水平负载均衡器选择共享计算池,对原始数据中的元素与目标数据中的元素进行比较;具体包括:

  通过与共享计算池一一对应的检测节点,对共享计算池的工作状态信息进行检测;

  检测节点,用于检测共享计算池的当前工作状态信息和预设时间周期内的工作量信息,并将当前工作状态信息和工作量信息向水平负载均衡器传输;

  水平负载均衡器,用于对当前工作状态信息赋予第一权重信息、对工作量信息赋予第二权重信息;并通过当前工作状态信息以及与当前工作状态信息对应的第一权重信息、工作量信息以及与工作量信息对应的第二权重信息,获取共享计算池的工作状态值;水平负载均衡器,还用于根据多节点共享计算池的工作状态值,选择共享计算池,对原始数据中的元素与目标数据中的元素进行比较。上述技术方案中通过检测节点,实现了对共享计算池的当前工作状态信息和预设时间周期内的工作量信息的检测,并向水平负载均衡器传输;水平负载均衡器通过对当前工作状态信息赋予第一权重信息、对工作量信息赋予第二权重信息,实现了对共享计算池的工作状态值的获取;进一步地,水平负载均衡器根据多节点共享计算池的工作状态值,选择共享计算池,对原始数据中的元素与目标数据中的元素进行比较。

  在一个实施例中,水平负载均衡器,还用于当多节点共享计算池的工作状态值达到第一上限值时,则停止对原始数据中的元素与目标数据中的元素的比较;

  当多节点共享计算池的工作状态值低于第一上限值时,通过检测节点检测共享计算池的配置信息,并将配置信息向水平均衡负载器传输;水平均衡负载器,还用于根据共享计算池的配置信息、当前工作状态信息和工作量信息,获取共享计算池的第二上限值;当共享计算池的工作状态值高于第二上限值时,则停止将原始数据中的元素与目标数据中的元素向共享计算池传输进行比较;当共享计算池的工作状态值低于第二上限值时,则将原始数据中的元素与目标数据中的元素向共享计算池传输进行比较。上述技术方案中通过水平负载均衡器在判断多节点共享计算池的工作状态值达到第一上限值时,判断多节点共享计算池为满负荷工作状态,则停止对原始数据中的元素与目标数据中的元素的比较,避免共享计算池处理的元素任务过多,影响正常运行;当多节点共享计算池的工作状态值低于第一上限值时,通过检测节点检测共享计算池的配置信息,并将配置信息向水平均衡负载器传输;水平均衡负载器根据共享计算池的配置信息、当前工作状态信息和工作量信息,获取共享计算池的第二上限值;当共享计算池的工作状态值高于第二上限值时,则判断该共享计算池为满负荷工作状态,停止将原始数据中的元素与目标数据中的元素向该共享计算池传输进行比较;当共享计算池的工作状态值低于第二上限值时,则将原始数据中的元素与目标数据中的元素向共享计算池传输进行比较;从而通过上述技术方案实现了水平负载均衡器根据共享计算池的工作状态值,对是否向共享计算池传输原始数据中的元素与目标数据中的元素向共享计算池传输进行比较的判断。

  在一个实施例中,检测节点,还用于在空闲时对共享计算池的数据处理能力进行检测;具体包括:获取检测节点内预设的标准元素比较对;将标准元素比较对向共享计算池传输;获取共享计算池的输出结果和元素处理时间;分别对输出结果和元素处理时间进行检测;

  当输出结果与检测节点内预设的标准元素比较对相对应的标准比较结果不一致时,则将共享计算池停用,并向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障;

  当输出结果与检测节点内预设的标准元素比较对相对应的标准比较结果一致时,检测共享计算池空闲时的冗余信息,并根据冗余信息和配置信息,对共享计算池的数据处理能力进行评估;根据评估获取的共享计算池的数据处理信息,判断元素处理时间是否异常,当判断存在异常时,对共享计算池的冗余信息进行智能清理,重复上述步骤,进行重新检测,再次判断元素处理时间是否异常,当判断存在异常时,则将共享计算池停用,向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障。上述技术方案中通过检测节点,实现了空闲时对共享计算池的数据处理能力的检测;检测节点将预设的标准元素比较对向共享计算池传输,共享计算池处理后,获取输出结果和元素处理时间,并分别对输出结果和元素处理时间进行检测;当输出结果与检测节点内预设的标准元素比较对相对应的标准比较结果不一致时,则判断共享计算池元素比对错误,将共享计算池停用,并向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障;当输出结果与检测节点内预设的标准元素比较对相对应的标准比较结果一致时,检测共享计算池空闲时的冗余信息,并根据冗余信息和配置信息,对共享计算池的数据处理能力进行评估;根据评估获取的共享计算池的数据处理信息,判断元素处理时间是否异常,当判断存在异常时,对共享计算池的冗余信息进行智能清理,重复上述步骤,进行重新检测,再次判断元素处理时间是否异常,当判断存在异常时,则将共享计算池停用,向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障,从而通过上述技术方案中的检测节点实现了在空闲时对共享计算池的检测,并在检测异常时,将共享计算池停用,向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障。

  在一个实施例中,对共享计算池的冗余信息进行智能清理的过程中,具体包括:

  扫描共享计算池的注册列表,识别冗余信息;具体包括:

  获取共享计算池内的信息的标识位;当标识位为冗余值时,标识位对应的信息为冗余信息,并将冗余信息删除;当标识位不是冗余值时,信息包括冗余信息的关联信息和存储地址信息;根据冗余信息的关联信息和存储地址信息,获取冗余信息,并将冗余信息删除。上述技术方案中通过判断共享计算池内的信息的标识位是否为冗余值,实现了对标识位对应的信息是否为冗余信息的判断,当标识位为冗余值时,则将标识位对应的冗余信息删除;当标识位不是冗余值时,根据冗余信息的关联信息和存储地址信息,获取冗余信息,并将冗余信息删除;从而通过上述技术方案实现了对共享计算池内的冗余信息的智能清理。

  在一个实施例中,将共享计算池停用,向工作人员传输共享计算池的标识信息,以提醒工作人员共享计算池发生故障之后,还包括:

  将共享计算池的标识信息向水平负载均衡器传输;

  水平负载均衡器将不再选择标识信息对应的共享计算池对原始数据中的元素与目标数据中的元素进行比较;

  工作人员对共享计算池进行重新配置后,将共享计算池加载用于对原始数据中的元素与目标数据中的元素的比较。上述技术方案中在共享计算池发生故障后,将发生故障的共享计算池的标识信息向水平负载均衡器传输,水平负载均衡器根据传输的标识信息,将不再选择标识信息对应的共享计算池对原始数据中的元素与目标数据中的元素进行比较,从而实现了在共享计算池发生故障后不再对共享计算池分配元素比较任务的功能;并且在工作人员对共享计算池进行重新配置后,将共享计算池加载用于对原始数据中的元素与目标数据中的元素的比较,实现了对共享计算池的重新加载工作。

  在一个实施例中,工作人员对共享计算池进行重新配置后,将共享计算池加载用于对原始数据中的元素与目标数据中的元素的比较的过程中,具体包括:

  水平负载均衡器,用于对新加载的共享计算池分配检测节点;检测节点通过将标准元素比较对向共享计算池传输;获取共享计算池的输出结果和元素处理时间;并分别对输出结果和元素处理时间进行检测;当检测合格后,将共享计算池的标识信息向水平负载均衡器传输;水平负载均衡器接收到标识信息后,将标识信息对应的共享计算池用于对原始数据中的元素与目标数据中的元素进行比较。上述技术方案中在工作人员对共享计算池进行重新配置后,水平负载均衡器对新加载的共享计算池分配检测节点;检测节点通过将标准元素比较对向共享计算池传输,获取共享计算池的输出结果和元素处理时间;并分别对输出结果和元素处理时间进行检测;当检测合格后,将共享计算池的标识信息向水平负载均衡器传输;水平负载均衡器接收到标识信息后,将标识信息对应的共享计算池用于对原始数据中的元素与目标数据中的元素进行比较,从而通过上述技术方案实现了工作人员对共享计算池进行重新配置后,通过水平负载均衡器分配的检测节点,实现了对重新配置后的共享计算池的检测,并在检测合格后,将共享计算池的标识信息向水平负载均衡器传输;水平负载均衡器根据传输的标识信息,将重新配置后的共享计算池用于对原始数据中的元素与目标数据中的元素进行比较,进一步实现了对上述方法中共享计算池节点的增加。

  显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

《一种基于HashMap数据结构的分布式比较方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)