支持海量采集终端的分布式内存实时存储装置及方法
技术领域
本发明涉及计算机领域,特别涉及一种支持海量采集终端的分布式内存实时存储装置及方法。
背景技术
当前我国用电信息采集已覆盖全部专变大用户以及部分低压居民用户,并通过与信息化***共享档案数据等信息,实现了欠费停电、预购电控制等功能。通过国家智能电网的建设,预计到“十二五”末基本实现“全覆盖、全采集、全费控”的建设目标,使得居民用电更加智能化、供电服务更加人性化。
随着“全覆盖”进程的不断推进,采集终端数量迅速增长,以山东省为例,实现“全覆盖”后预计终端数量将达到240万。终端数量的急速增长带来了海量的采集数据,如何高效的处理这些数据成为了亟待解决的问题。用电信息采集过程中,采集终端上送的海量报文需经过解析后成为可读的基本业务数据,在业务数据的基础上开展电力业务。电力业务中,单个终端电量的统计是其它业务实现的基础,而这一业务的实现需要将终端采集数据与终端档案一一匹配。
当前终端档案一般存储于磁盘中,在终端档案数据量不大的情况下,可基本满足业务需求。但在海量采集终端时代来临后,由于I/O操作的相对低速,这种存储方式将极大的影响档案存储、更新及查询的实时性。内存的数据读写速度较磁盘高出几个数量级,将终端档案存储在内存中可有效的提升性能。不过,由于终端档案数据量大,若存放在同一个服务器的内存中,势必对服务器的性能要求很高,现有服务器很难满足这种性能需求;即使勉强满足,终端档案的存储也会占用大量内存,影响采集数据任务处理性能;同时,这种存储方式难以适应终端规模的持续增长。为保证用电信息采集***终端档案的读取速度及完整性,本文提出了一种分布式实时内存存储装置。
发明内容
本发明针对现有技术的不足,提供一种支持海量采集终端的分布式内存实时存储装置及方法。
为实现上述目的,本发明采用如下技术方案:
一种支持海量采集终端的分布式内存实时存储装置,包括主控服务器和至少一个数据服务器,所述的主控服务器与数据服务器通讯,
所述的主控服务器,其用于从***数据库中读取终端档案信息表,并将所读取的终端档案信息表分割成多个档案块,并将每个档案块分配到所辖数据服务器,在所述的主控服务器内存中存储记录了终端档案信息表的分割情况及档案块存储情况的档案块元数据,并提供所辖数据服务器当前负载情况查询及比较功能;
所述的数据服务器,用于接收主控服务器分配的档案块,以多个档案块的形式将终端档案信息表存储在内存中,并面向电量计算任务模块提供查询功能,数据服务器数量设置多个并能实现动态增减。
所述主控服务器还包括以下模块:
档案分配模块,用于从***数据库中读取终端档案信息表,将其分割成多个档案块并分配到所辖数据服务器;
档案元数据存储模块,用于存储档案分配模块形成的档案块元数据,提供基于终端编号的档案块位置查询;
负载比较模块,用于查询所辖数据服务器当前的负载情况,在此基础上比较所辖数据服务器的负载大小,得出负载最小的数据服务器。
所述数据服务器还包括以下模块:
档案管理模块,用于接收档案分配模块分配的档案块;
档案存储模块,用于存储档案块的实际数据,并接受档案查询模块的查询;
档案查询模块,用于提供数据服务器的负载信息以及实现终端档案信息表的查询,并面向电量计算任务模块提供查询功能。
所述的每个数据服务器的档案管理模块之间能相互复制。
所述的负载比较模块能查询数据服务器的档案查询模块。
所述的负载比较模块查询到负载最小的服务器后,发送给电量计算任务模块。
一种支持海量采集终端的分布式内存实时存储装置的存储方法,包括以下步骤:
(1)主控服务器的档案分配模块根据终端档案信息表的实际情况配置档案块的大小,从终端档案信息表中按终端编号从小至大的顺序读取档案信息,当读入的终端档案信息达到配置大小时,打包形成一个档案块;因此档案块元数据的档案表分割情况中只需记录第一个及最后一个存入该档案块的终端编号,减小了档案块元数据所占用的内存;
(2)为保证档案数据的高可靠性,为每个档案块设置n(n为自然数,且n≥3)个副本;档案分配模块的分配方式是将一个档案块分配到n个不同的数据服务器进行存储,并保证其n个不同的数据服务器中位于不同的机架上;
(3)将档案块元数据写入档案元数据存储模块,将档案的实际数据写入分配的数据服务器中;
(4)数据服务器中的档案管理模块接收档案分配模块分配的档案块存入档案存储模块,终端档案数据以流水线的方式从档案分配模块写入第一个数据服务器档案存储模块,从第一个复制到第二个,从第二个复制到第三个,依次轮推,直到从第n-1个复制到n个。
所述的步骤(4)中的档案块写入数据服务器的同时,档案分配模块继续接收终端档案信息表中的数据;档案分配模块定期从***数据库中读取采集终端档案信息表,重复以上存储过程,实现档案信息的同步。
在步骤(4)的档案存储完成后,面向电量计算任务模块的档案查询是由电量计算任务模块发起的,包括以下步骤:
(1)首先电量计算任务模块与档案块元数据存储模块通信,查询任务涉及终端所属的档案块及档案块位置;终端编号位于某档案块的编号区间内,则返回这一档案块所处的数据服务器信息;转到步骤(2);
(2)将数据服务器信息输入负载比较模块,通过与数据服务器的档案查询模块通信,查询比较这些数据服务器的负载情况,向电量计算任务模块返回负载最小的数据服务器信息;
(3)电量计算任务模块向该服务器发起查询,档案查询模块接受查询指令,在档案存储模块中进行匹配查询,向电量计算任务模块返回终端档案信息,完成档案查询。
本发明的有益效果是:
1.本发明将终端档案存储在内存中,相比于传统的存储在磁盘中,大大提高了终端档案存储、查询及更新的速度。
2.本发明基于主从式架构构建,可根据需求实现数据服务器的动态增减,提高了装置的可扩展性,方便了档案块的管理。
3.将终端档案按编号顺序打包形成档案块,降低了档案块元数据大小,减少了存储所需的主控服务器内存。
4.本发明对终端档案提供多副本机制,保证存储的可靠性,降低了对硬件的要求。
附图说明
图1为一种针对用电信息采集***终端档案的分布式实时内存存储装置图;
图中1、主控服务器,2、数据服务器,101、档案分配模块,102、档案元数据存储模块,103、负载比较模块,201、档案管理模块,202、档案存储模块,203、档案查询模块。
具体实施方式
下面结合附图和实施例对本发明进行进一步说明:
图1,是基于本发明实现的一种针对用电信息采集***终端档案的分布式实时内存存储装置,该装置应用于大规模用电信息采集与处理平台,提供一种存储机制用以存储终端档案信息,并提供一种查询机制实现终端档案与终端采集数据的快速匹配,可提高档案信息存储的可靠性,加快终端档案查询速度。
该装置包括:主控服务器1与数据服务器2;所述主控服务器1包括档案分配模块101、档案元数据存储模块102和负载比较模块103;所述数据服务器2包括档案管理模块201、档案存储模块202和档案查询模块203。
主控服务器1,用于从***数据库中读取终端档案信息表,将其分割成较小的档案块并分配到所辖数据服务器2,在主控服务器1内存中存储记录了档案表分割情况及档案块存储情况的档案块元数据,并提供所辖数据服务器2当前负载情况查询及比较功能。
数据服务器2,用于接收主控服务器1分配的档案块,以多个档案块的形式将终端档案信息存储在内存中,并面向电量计算任务模块提供查询功能,服务器数量可设置多个并可实现动态增减。
所述主控服务器1的档案分配模块101,用于从***数据库中读取终端档案信息表,将其分割成较小的档案块并分配到所辖数据服务器2。档案分配模块定期(可配置)从***数据库中读取采集终端档案信息表,实现档案信息的同步。根据终端档案信息的实际情况可配置档案块的大小。从终端档案信息表中按终端编号顺序读取档案信息,当读入的终端档案信息达到配置大小时,打包形成一个档案块。为保证档案数据的高可靠性,每个档案块设置三个副本。档案分配模块的分配机制是将一个档案块分配到三个不同的数据服务器2进行存储,并保证其中两个服务器位于同一个机架而第三个位于不同的机架上。将记录档案表分割情况及档案块存储情况的终端档案元数据写入档案元数据存储模块,将终端档案实际数据写入分配的数据服务器2中。在该档案块写入数据服务器2的同时,档案分配模块继续接收终端档案信息表中的数据。
档案元数据存储模块102,用于存储档案分配模块形成的档案块元数据,提供基于终端编号的匹配查询。档案存储时,由于档案块中档案的存储特性,只需记录第一个及最后一个存入该档案块的终端编号,减小了档案元数据所占用的内存。档案查询时,若终端编号位于某档案块的编号区间内,则返回这一档案块所处的数据服务器2信息。
负载比较模块103,用于查询所辖数据服务器2当前的负载情况,在此基础上比较得出负载较轻的服务器。档案查询时,从档案元数据存储模块获得档案块所处数据服务器2信息,查询比较这些数据服务器2的负载情况,返回负载最小的服务器信息。
所述数据服务器2的档案管理模块201,用于接收档案分配模块分配的档案块。档案存储时,终端档案数据以流水线的方式从档案分配模块写入第一个数据服务器2档案存储模块,从第一个复制到第二个,从第二个复制到第三个。
档案存储模块202,用于存储档案块实际数据,并接受档案查询模块203的查询。档案查询时,接受档案查询模块203的查询,返回电量计算任务模块终端档案信息。
档案查询模块203,用于提供数据服务器2的负载信息,实现终端档案的查询。接受负载比较模块103的查询,返回本数据服务器2的负载情况。接收电量计算任务模块的查询指令,在档案存储模块202中进行匹配查询。
一种支持海量采集终端的分布式内存实时存储装置的存储方法,包括以下步骤:
(1)主控服务器1的档案分配模块101根据终端档案信息表的实际情况配置档案块的大小,从终端档案信息表中按终端编号从小至大的顺序读取档案信息,当读入的终端档案信息达到配置大小时,打包形成一个档案块;因此档案块元数据的档案表分割情况中只需记录第一个及最后一个存入该档案块的终端编号,减小了档案块元数据所占用的内存;
(2)为保证档案数据的高可靠性,为每个档案块设置n个副本;档案分配模块的分配方式是将一个档案块分配到n个不同的数据服务器2进行存储,并保证其n个不同的数据服务器2中位于不同的机架上,其中n为自然数,且n≥3;
(3)将档案块元数据写入档案元数据存储模块102,将档案的实际数据写入分配的数据服务器2中;
(4)数据服务器2中的档案管理模块接收档案分配模块分配的档案块存入档案存储模块202,终端档案数据以流水线的方式从档案分配模块写入第一个数据服务器2档案存储模块202,从第一个复制到第二个,从第二个复制到第三个,依次轮推,直到从第n-1个复制到n个。
所述的步骤(4)中的档案块写入数据服务器2的同时,档案分配模块101继续接收终端档案信息表中的数据;档案分配模块101定期从***数据库中读取采集终端档案信息表,重复以上存储过程,实现档案信息的同步。
在步骤(4)的档案存储完成后,面向电量计算任务模块的档案查询是由电量计算任务模块发起的,包括以下步骤:
(1)首先电量计算任务模块与档案块元数据存储模块通信,查询任务涉及终端所属的档案块及档案块位置;终端编号位于某档案块的编号区间内,则返回这一档案块所处的数据服务器2信息;转到步骤(2);
(2)将数据服务器2信息输入负载比较模块103,通过与数据服务器2的档案查询模块203通信,查询比较这些数据服务器2的负载情况,向电量计算任务模块返回负载最小的数据服务器2信息;
(3)电量计算任务模块向该服务器发起查询,档案查询模块203接受查询指令,在档案存储模块202中进行匹配查询,向电量计算任务模块返回终端档案信息,完成档案查询。