一种高并发海量数据的采集、处理和存储的方法及系统
技术领域
本发明属于节能技术领域,尤其涉及一种高并发海量数据的采集、处理和存储的方法及系统。
背景技术
建筑能耗管理工作,已经为国家至地方政府各职能主管部门高度重视,各项法规、标准、导则相继出台。2008年6月24日,住房和城乡建设部印发国家机关办公建筑和大型公共建筑能耗监测系统建设相关技术导则的通知,以“分项计量”作为能源管理工作的指导原则。
目前的建筑能耗管理软件系统都是将能耗设备进行分类或分项计量,对计量数据自动采集,通过计算机技术实现各计量点、区域实现能耗在线动态监测、能耗数据汇总统计、能耗指标总和考评、历史数据记录查询、能耗报表自动生成,其获取的能耗数据能够为管理者提供决策依据。然而,目前的建筑能耗管理软件系统存在以下问题:1)系统采用的数据传输解决方案存在有诸多的局限性,数据传输过程繁琐,不适用于多元数据的传输,不能支持万级并发数据接收;2)随着业务的开展,能耗数量增多,每年要存储PB级的数据量,并且要保存数据十年以上,由于数据结构的多样化,包括结构化数据和非结构化数据,这些数据类型缺乏单一性,使得系统采用的标准存储技术无法对大数据进行有效的存储;3)系统采用的数据库性能较低,不能够横向扩展,数据容易丢失或损坏,并且无法实现对亿条级数据进行快速处理。
发明内容
本发明实施例的目的在于提供一种高并发海量数据的采集、处理和存储的方法及系统,旨在解决上述建筑能耗管理软件系统存在不能支持万级并发数据接收、无法对大数据进行有效的存储、数据库性能较低以及无法实现对亿条级数据进行快速处理的问题。
本发明实施例是这样实现的,一种高并发海量数据的采集、处理和存储的方法,包括:
接收客户端发送的会话请求;
通过链接通道中注册的选择器分配线程处理所述会话请求以建立与所述客户端的会话,并判断所述会话是否合法,若合法,则接收所述客户端监测到的负载数据;
通过数据处理通道中注册的选择器分配线程将所述负载数据缓存至多个数据块中,并将所述多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中;
通过数据存储通道中注册的选择器分配线程接收多个数据块发送的所述负载数据,并将所述负载数据写入主数据库。
在本发明实施例所述的高并发海量数据的采集、处理和存储的方法中,通过所述链接通道中注册的选择器分配线程处理所述会话请求以建立与所述客户端的会话,并判断所述会话是否合法,若合法,则接收所述客户端监测到的负载数据具体包括:
通过链接通道中注册的选择器分配线程处理所述会话请求,以建立与所述客户端的会话;
通过所述会话与所述客户端进行双向AES和MD5加密验证;
判断所述双向AES和MD5加密验证是否通过;
若验证通过,则接收所述客户端监测到的负载数据;若验证未通过,则预警并断开所述会话,清空所述会话。
在本发明实施例所述的高并发海量数据的采集、处理和存储的方法中,通过所述数据处理通道中注册的选择器分配线程将所述负载数据缓存至多个数据块中,并将所述多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中具体包括:
通过数据处理通道中注册的选择器选择空闲的数据处理线程将所述会话中的负载数据缓存至多个数据块中;
判断缓存至各个数据块中的负载数据是否为明文;
若不是明文,则读取并解析所述负载数据的报文头以获取所述报文头中指定的消息主体的长度,并根据所述消息主体的长度判断各个数据块中的负载数据是否为一条完整的消息;若为一条完整的消息,则对所述负载数据进行解码,并判断解码后的负载数据是否正常,若正常,则将解码后的负载数据发送至数据存储通道并且同步至其他节点数据库,若异常,则进行数据异常报警;
若是明文,则直接判断所述负载数据是否正常,若正常,则将所述负载数据发送至所述数据存储通道并且同步至其他节点数据库,若异常,则进行数据异常报警;
释放对所述会话中的负载数据进行缓存处理的数据处理线程。
在本发明实施例所述的高并发海量数据的采集、处理和存储的方法中,所述主数据库包括关系型数据库和非关系型数据库,通过所述数据存储通道中注册的选择器分配线程接收多个数据块发送的所述负载数据,并将所述负载数据写入主数据库具体包括:
通过数据存储通道中注册的选择器选择空闲的数据存储线程接收各个数据块发送的负载数据;
将所述负载数据写入所述非关系型数据库中;
在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述关系型数据库中对应的局部数据存储区域。
在本发明实施例所述的高并发海量数据的采集、处理和存储的方法中,所述关系型数据库包括写数据库和读数据库,在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述关系型数据库中的局部数据存储区域具体包括:
在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述写数据库中对应的局部数据存储区域并且同步至所述读数据库中对应的局部数据存储区域。
本发明实施例的另一目的在于提供一种高并发海量数据的采集、处理和存储的系统,包括:
会话请求监听模块,用于接收客户端发送的会话请求;
通讯链接处理模块,用于通过链接通道中注册的选择器分配线程处理所述会话请求以建立与所述客户端的会话,并判断所述会话是否合法,若合法,则接收所述客户端监测到的负载数据;
多线程缓存数据处理模块,用于通过数据处理通道中注册的选择器分配线程将所述负载数据缓存至多个数据块中,并将所述多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中;
数据存储模块,用于通过数据存储通道中注册的选择器分配线程接收多个数据块发送的所述负载数据,并将所述负载数据写入主数据库。
在本发明实施例所述的高并发海量数据的采集、处理和存储的系统中,通讯链接处理模块包括:
会话创建单元,用于通过链接通道中注册的选择器分配线程处理所述会话请求,以建立与所述客户端的会话;
加密验证单元,用于通过所述会话与所述客户端进行双向AES和MD5加密验证;
第一判断单元,用于判断所述双向AES和MD5加密验证是否通过;
数据读取单元,用于若验证通过,则接收所述客户端监测到的负载数据;
第一预警单元,用于若验证未通过,则预警并断开所述会话,清空所述会话。
在本发明实施例所述的高并发海量数据的采集、处理和存储的系统中,所述多线程缓存数据处理模块包括:
数据缓存解码线程池,用于通过数据处理通道中注册的选择器选择空闲的数据处理线程将所述会话中的负载数据缓存至多个数据块中;
第二判断单元,用于判断各个数据块中的负载数据是否为明文;
报文头解析单元,用于若不是明文,则读取并解析所述负载数据的报文头以获取所述报文头中指定的消息主体的长度,并根据所述消息主体的长度判断当前所述数据块中的负载数据是否为一条完整的消息;
解码单元,用于若为一条完整的消息,则对所述负载数据进行解码;
第三判断单元,用于判断解码后的负载数据是否正常;还用于若当前所述数据块中的负载数据是明文,则直接判断所述负载数据是否正常;
数据同步处理单元,用于若所述负载数据正常,则将负载数据发送至数据存储通道并同步至其他节点数据库,然后释放对所述会话中的负载数据进行缓存处理的数据处理线程;
第二预警单元,用于若所述负载数据异常,则进行数据异常报警,然后释放对所述会话中的负载数据进行缓存处理的数据处理线程。
在本发明实施例所述的高并发海量数据的采集、处理和存储的系统中,所述主数据库包括关系型数据库和非关系型数据库,所述数据存储模块包括:
数据入库线程池,用于通过数据存储通道中注册的选择器选择空闲的数据存储线程接收多个数据块发送的负载数据,并将所述负载数据写入所述非关系型数据库中;
数据分析统计单元,用于在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述关系型数据库中对应的局部数据存储区域。
在本发明实施例所述的高并发海量数据的采集、处理和存储的系统中,所述关系型数据库包括写数据库和读数据库,所述数据分析统计单元具体用于:
在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述写数据库中对应的局部数据存储区域并且同步至所述读数据库中对应的局部数据存储区域。
实施本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法及系统具有以下有益效果:
本发明实施例由于采用链接通道中注册的选择器分配线程处理接收到的客户端发送的会话请求以建立与所述客户端的会话,从而能够达到异步非阻塞事件的回调,实现多路复用,适用于多元数据的传输,能够支持万级并发数据接收;由于通过数据处理通道中注册的选择器分配线程将所述会话中的负载数据缓存至多个数据块中,并将多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中,从而能够实现高效缓存及横向扩展,拥有实时同步的副本,当主数据库面临灾难时,可以在短时间内通过故障转移的方式保证数据库的可用性;由于将原始能耗数据先写入非关系型数据库中进行分析统计,然后对分析统计后的负载数据进行分片和分配处理,再将分片和分配处理后的数据写入关系型数据库中的局部数据存储区域中,并采用数据分离技术对关系型数据库中的写操作和读操作进行分离,从而能够减轻数据库的压力,提高数据库的性能,使得数据库可以对数据进行有效存储以及对亿条级数据进行快速处理。
附图说明
图1是本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法的具体实现流程图;
图2是本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法中步骤S102的具体实现流程图;
图3是本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法中步骤S103的具体实现流程图;
图4是本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法中步骤S104的具体实现流程图;
图5是本发明实施例提供的一种高并发海量数据的采集、处理和存储的系统的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法的具体实现流程。参见图1所示,本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法的实现流程具体详述如下:
在S101中,接收客户端发送的会话请求。
在本发明实施例中,高并发海量数据的采集、处理和存储系统可同时接收万级节点处客户端发送的会话请求,其中所述客户端包括但不限于位于各节点处的电表、水表、流量传感器、温湿度传感器、压力传感器以及冷热量监测装置等用于采集建筑能耗系统中各个节点处负载数据的装置,所述负载数据包括能耗数据和温度、湿度、压力、流量等运行参数。
在S102中,通过链接通道中注册的选择器分配线程处理所述会话请求以建立与所述客户端的会话,并判断所述会话是否合法,若合法,则接收所述客户端监测到的负载数据。
作为一具体实现示例,图2示出了S102的具体实现流程,参见图2所示,S102具体包括:
在S201中,通过链接通道中注册的选择器分配线程处理所述会话请求,以建立与所述客户端的会话;
在S202中,通过所述会话与所述客户端进行双向AES和MD5加密验证;
在S203中,判断所述双向AES和MD5加密验证是否通过,若验证通过,则进入步骤S204,否则跳转至步骤S205;
在S204中,接收所述客户端监测到的负载数据;
在S205中,预警并断开所述会话连接,清空所述会话。
在本发明实施例中,由于采用链接通道中注册的选择器分配线程处理客户端发送的链接请求,并根据所述链接请求创建的会话请求,以建立与所述客户端的会话,并在处理完成后释放处理所述链接请求的线程,以便后续链接通道中的选择器能够继续将其他客户端发送的链接请求分配给该线程处理,从而能够实现多路复用,适用于多元数据的传输,能够支持万级并发数据接收。
在S103中,通过数据处理通道中注册的选择器分配线程将所述负载数据缓存至多个数据块中,并将所述多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中。
作为一具体实现示例,图3示出了S103的具体实现流程,参见图3所示,S103具体包括:
在S301中,通过数据处理通道中注册的选择器选择空闲的数据处理线程将所述会话中的负载数据缓存至多个数据块中;
在S302中,判断当前所述数据块中的负载数据是否为明文,若不是明文,则进入步骤S303;若是明文,则跳转至步骤S305;
在S303中,读取并解析所述负载数据的报文头以获取所述报文头中指定的消息主体的长度;
在S304中,根据所述消息主体的长度判断当前所述数据块中的负载数据是否为一条完整的消息,若为一条完整的消息,则对所述负载数据进行解码,以获取明文的负载数据;
在S305中,判断明文的负载数据是否正常,若正常,则进入步骤S306;否则,进入步骤S307;
在S306中,将负载数据发送至数据存储通道并且同步至其他节点数据库;
在S307中,进行数据异常报警;
在S308中,释放对所述会话中的负载数据进行缓存处理的数据处理线程。
在本发明实施例中,由于通过数据处理通道中注册的选择器分配线程将所述会话发送的负载数据缓存至多个数据块中,并将各个数据块中缓存的负载数据发送至数据存储通道并且同步至其他节点数据库中,从而能够通过高效缓存实现数据库的横向扩展,使得系统拥有实时同步的副本,当主数据库面临灾难时,可以在短时间内通过故障转移的方式保证数据库的可用性;此外,当数据丢失或损坏时,也能够使系统通过上述实时同步的副本实现数据的零损失。
在S104中,通过数据存储通道中注册的选择器分配线程接收多个数据块发送的所述负载数据,并将所述负载数据写入所述主数据库。
在本发明实施例中,所述主数据库包括关系型数据库和非关系型数据库,参见图4所示,S104的具体实现流程详述如下:
在S401中,通过数据存储通道中注册的选择器选择空闲的数据存储线程接收多个数据块发送的负载数据;
在S402中,将所述负载数据写入所述非关系型数据库中;
在S403中,在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述关系型数据库中对应的局部数据存储区域。
在本发明实施例中,所述关系型数据库包括写数据库和读数据库,S403中具体包括:在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述写数据库中对应的局部数据存储区域并且同步至所述读数据库中对应的局部数据存储区域。进一步的,所述写数据库和所述读数据库均包括分类分项数据存储区域、时区数据存储区域以及空间数据存储区域等局部存储区域。
本发明实施例中由于将原始负载数据先写入非关系型数据库中进行分析统计处理后,然后对分析统计后的负载数据进行分片和分配处理,再将分片和分配处理后的数据写入关系型数据库中的局部数据存储区域中,这样实现了第一步分离,然后又采用数据分离技术对关系型数据库中的写操作和读操作进行分离,这样实现了第二部分离,从而能有效的减轻数据库的压力,提高数据库的性能,使得数据库能够实现数据的有效存储以及对亿条级数据进行快速处理。
以上可以看出,本发明实施例提供的一种高并发海量数据的采集、处理和存储的方法由于采用链接通道中注册的选择器分配线程处理监听到的客户端发送的会话请求以建立与所述客户端的会话,从而能够达到异步非阻塞事件的回调,实现多路复用,适用于多元数据的传输,能够支持万级并发数据接收;由于通过数据处理通道中注册的选择器分配线程将所述会话中的负载数据缓存至多个数据块中,并将数据块中缓存后的负载数据发送至数据存储通道并且同步至其他节点数据库中,从而能够通过高效缓存实现横向扩展,拥有实时同步的副本,当主数据库面临灾难时,可以在短时间内通过故障转移的方式保证数据库的可用性;由于将原始能耗数据先写入非关系型数据库中进行分析统计,然后对分析统计后的负载数据进行分片和分配处理,再将分片和分配处理后的数据写入关系型数据库中的局部数据存储区域中,并采用数据分离技术对关系型数据库中的写操作和读操作进行分离,从而能够减轻数据库的压力,提高数据库的性能,使得数据库可以对数据进行有效存储以及对亿条级数据进行快速处理。
图5示出了本发明实施例提供的一种高并发海量数据的采集、处理和存储的系统的结构框图,该系统用于运行图1~图4所示实施例提供的方法。为了便于说明,仅仅示出了与本实施例相关的部分。
参见图5所示,本实施例提供的一种高并发海量数据的采集、处理和存储的系统,包括:
会话请求监听模块1,用于接收客户端发送的会话请求;
通讯链接处理模块2,用于通过链接通道中注册的选择器分配线程处理所述会话请求以建立与所述客户端的会话,并判断所述会话是否合法,若合法,则接收所述客户端监测到的负载数据;
多线程缓存数据处理模块3,用于通过数据处理通道中注册的选择器分配线程将所述负载数据缓存至多个数据块中,并将所述多个数据块中的负载数据发送至数据存储通道并同步至其他节点数据库中;
数据存储模块4,用于通过数据存储通道中注册的选择器分配线程接收多个数据块发送的所述负载数据,并将所述负载数据写入主数据库。
可选的,通讯链接处理模块2包括:
会话创建单元21,用于通过链接通道中注册的选择器分配线程处理所述会话请求,以建立与所述客户端的会话连接;
加密验证单元22,用于通过所述会话与所述客户端进行双向AES和MD5加密验证;
第一判断单元23,用于判断所述双向AES和MD5加密验证是否通过;
数据读取单元24,用于若验证通过,则接收所述客户端监测到的负载数据;
第一预警单元25,用于若验证未通过,则预警并断开所述会话,清空所述会话。
可选的,所述多线程缓存数据处理模块3包括:
数据缓存解码线程池31,用于通过数据处理通道中注册的选择器选择空闲的数据处理线程将所述会话中的负载数据缓存至多个数据块中;
第二判断单元32,用于判断各个数据块中的负载数据是否为明文;
报文头解析单元33,用于若不是明文,则读取并解析所述负载数据的报文头以获取所述报文头中指定的消息主体的长度,并根据所述消息主体的长度判断当前所述数据块中的负载数据是否为一条完整的消息;
解码单元34,用于若为一条完整的消息,则对所述负载数据进行解码;
第三判断单元35,用于判断解码后的负载数据是否正常;还用于若当前所述数据块中的负载数据是明文,则直接判断所述负载数据是否正常;
数据同步处理单元36,用于若所述负载数据正常,则将负载数据发送至数据存储通道并且同步至其他节点数据库,然后释放对所述会话中的负载数据进行缓存处理的数据处理线程;
第二预警单元37,用于若所述负载数据异常,则进行数据异常报警,然后释放对所述会话中的负载数据进行缓存处理的数据处理线程。
可选的,所述主数据库包括关系型数据库和非关系型数据库,所述数据存储模块4包括:
数据入库线程池41,用于通过数据存储通道中注册的选择器选择空闲的数据存储线程接收多个数据块发送的负载数据,并将所述负载数据写入所述非关系型数据库中;
数据分析统计单元42,用于在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述关系型数据库中对应的局部数据存储区域。
可选的,所述关系型数据库包括写数据库和读数据库,所述数据分析统计单元42具体用于:
在所述非关系型数据库中对所述负载数据进行分析统计,并对分析统计后的负载数据进行分片和分配处理,将分片和分配处理后的负载数据写入所述写数据库中对应的局部数据存储区域并且同步至所述读数据库中对应的局部数据存储区域。
需要说明的是,本发明实施例提供的上述系统中各个模块,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
因此,可以看出本发明实施例提供的一种高并发海量数据的采集、处理和存储的系统同样由于采用链接通道中注册的选择器分配线程处理监听到的客户端发送的会话请求以建立与所述客户端的会话,从而能够达到异步非阻塞事件的回调,实现多路复用,适用于多元数据的传输,能够支持万级并发数据接收;由于通过数据处理通道中注册的选择器分配线程将所述会话中的负载数据缓存至多个数据块中,并将数据块中缓存后的负载数据发送至主数据库并且同步至其他节点数据库中,从而能够实现高效缓存以及数据库的横向扩展,拥有实时同步的副本,当主数据库面临灾难时,可以在短时间内通过故障转移的方式保证数据库的可用性;由于将原始能耗数据先写入非关系型数据库中进行分析统计,然后对分析统计后的负载数据进行分片和分配处理,再将分片和分配处理后的数据写入关系型数据库中的局部数据存储区域中,并采用数据分离技术对关系型数据库中的写操作和读操作进行分离,从而能够减轻数据库的压力,提高数据库的性能,使得数据库可以对数据进行有效存储以及对亿条级数据进行快速处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。