数据推送方法、装置、设备及存储介质
文献发布时间:2023-06-19 11:05:16
技术领域
本发明涉及云技术领域,尤其涉及一种数据推送方法、装置、设备及存储介质。
背景技术
随着大数据及相关技术的飞速发展,信息推送技术已经变得越来越重要,信息推送技术是一种通过一定的技术标准或协议,在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。信息推送技术通过自动传送信息给用户,以减少用户用于搜索的时间,并且它能根据用户的兴趣来搜索、过滤信息,帮助用户高效率地发掘有价值的信息。
一般的,信息推送过程一般通过以下方式实现:发送方的数据源变动后,发送方监控到数据变化后,定时推送MQ数据到指定主题,接收方再通过订阅主题的方式获取在发现推送的数据出问题后,一般通过数据库回滚或重新导入数据源的方式修复。但数据库回滚或重新导入数据源的方式都有各自的弊端,数据库回滚在DBA(数据库管理员,DatabaseAdministrator)恢复数据的过程中可能出现人为的操作失误风险,并且恢复备份数据时是时间段内批量的,可能引起在此时间段内接收方业务修改的正常数据也补恢复,造成期间新的修改数据丢失;重新导入数据源存在问题是过度依赖于推送方,如推送方重新推送的时间不定或过于长久,可能会对接收方的程序造成持续的影响,另外在接收方源数据也被覆盖成错误数据时无法运用此方案。
发明内容
本发明的主要目的在于解决现有的数据推送技术在对推送的数据出现问题进行修复的过程中,由于批量修复导致对修复过程中已修改的正常数据覆盖,造成修复期间新的修改数据丢失的技术问题。
本发明第一方面提供了一种数据推送方法,包括:
获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;
检测所述待推送数据中是否包括文件保存标识;
若是,则根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;
将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;
当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件,其中,所述回滚指令为所述接收方使用待推送数据出现异常需要进行数据回滚时生成的指令;
将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供所述接收方根据所述回滚数据完成数据回滚。
可选的,在本发明第一方面的第一种实现方式中,在所述获取推送方发送的待推送数据之前,还包括:
建立监听服务,其中,所述监听服务用于检测来自所述推送方的连接请求;
通过所述监听服务获取所述推送方的连接请求;
根据所述连接请求建立与所述推送方的长连接。
可选的,在本发明第一方面的第二种实现方式中,所述根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中包括:
根据所述文件保存标识获取接收方的本地原数据;
将所述本地原数据中的字符的频率进行统计,得到哈夫曼编码表;
根据所述哈夫曼编码表对所述本地原数据进行哈夫曼编码,生成加密文件;
将所述加密文件保存至预设数据库中。
可选的,在本发明第一方面的第三种实现方式中,所述根据所述哈夫曼编码表对所述本地原数据进行哈夫曼编码,生成加密文件包括:
根据所述哈夫曼编码表,获得所述本地原数据中的字符的权值;
将所述本地原数据中的各字符种权值最小的两个字符作为哈夫曼树的第一叶子节点,并根据所述叶子节点的权值之和构建第一父节点;
按照权值从小到大的顺序依次提取所述本地原数据中的字符作为所述哈夫曼树的第二叶子节点,并与所述第一父节点作为同层节点,继续构建下一父节点,直至所有本地原数据中的字符构建到哈夫曼树中;
根据所述哈夫曼树,构建所述本地原数据的编码串,并将所述哈夫曼树和所述编码串作为加密文件。
可选的,在本发明第一方面的第四种实现方式中,所述将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方包括:
从所述加密文件中获取对应的哈夫曼树和编码串;
根据哈夫曼算法,将所述加密文件对应的哈夫曼树和编码串还原成本地原数据;
将包含文件保存标识的本地原数据作为回滚数据发送至接收方。
可选的,在本发明第一方面的第五种实现方式中,在所述将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据之前,还包括:
提取所述待推送数据的消息主题;
根据所述消息主题确定存储该主题的集群节点;
将所述待推送数据存储至所述集群节点的消息队列中。
可选的,在本发明第一方面的第六种实现方式中,其特征在于,在所述将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据之前,还包括:
获取接收方的订阅请求,并对所述订阅请求进行安全认证;
当所述安全认证通过时,根据订阅请求的主题从所述消息队列中获取对应消息主题的待推送数据。
本发明第二方面提供了一种数据推送装置,包括:
获取模块,用于获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;
检测模块,用于检测所述待推送数据中是否包括文件保存标识;
加密存储模块,用于当检测到所述待推送数据中包括文件保存标识时,根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;
发送模块,用于将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;
文件获取模块,用于当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件,其中,所述回滚指令为所述接收方使用待推送数据出现异常需要进行数据回滚时生成的指令;
回滚模块,用于将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供所述接收方根据所述回滚数据完成数据回滚。
可选的,在本发明第二方面的第一种实现方式中,所述数据推送装置还包括长连接模块,所述长连接模块具体用于:
建立监听服务,其中,所述监听服务用于检测来自所述推送方的连接请求;
通过所述监听服务获取所述推送方的连接请求;
根据所述连接请求建立与所述推送方的长连接。
可选的,在本发明第二方面的第二种实现方式中,所述加密存储模块包括:
原数据获取单元,用于根据所述文件保存标识获取接收方的本地原数据;
统计单元,用于将所述本地原数据中的字符的频率进行统计,得到哈夫曼编码表;
编码单元,用于根据所述哈夫曼编码表对所述本地原数据进行哈夫曼编码,生成加密文件;
存储单元,用于将所述加密文件保存至预设数据库中。
可选的,在本发明第二方面的第三种实现方式中,所述编码单元具体用于:
根据所述哈夫曼编码表,获得所述本地原数据中的字符的权值;
将所述本地原数据中的各字符种权值最小的两个字符作为哈夫曼树的第一叶子节点,并根据所述叶子节点的权值之和构建第一父节点;
按照权值从小到大的顺序依次提取所述本地原数据中的字符作为所述哈夫曼树的第二叶子节点,并与所述第一父节点作为同层节点,继续构建下一父节点,直至所有本地原数据中的字符构建到哈夫曼树中;
根据所述哈夫曼树,构建所述本地原数据的编码串,并将所述哈夫曼树和所述编码串作为加密文件。
可选的,在本发明第二方面的第四种实现方式中,所述回滚模块具体用于:
从所述加密文件中获取对应的哈夫曼树和编码串;
根据哈夫曼算法,将所述加密文件对应的哈夫曼树和编码串还原成本地原数据;
将包含文件保存标识的本地原数据作为回滚数据发送至接收方。
可选的,在本发明第二方面的第五种实现方式中,所所述数据推送装置还包括消息队列模块,所述消息队列模块具体用于:
提取所述待推送数据的消息主题;
根据所述消息主题确定存储该主题的集群节点;
将所述待推送数据存储至所述集群节点的消息队列中。
可选的,在本发明第二方面的第六种实现方式中,所述数据推送装置还包括安全认证模块,所述安全认证模块具体用于:
获取接收方的订阅请求,并对所述订阅请求进行安全认证;
当所述安全认证通过时,根据订阅请求的主题从所述消息队列中获取对应消息主题的待推送数据。
本发明第三方面提供了一种数据推送设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述数据推送设备执行上述的数据推送方法的步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的数据推送方法的步骤。
本发明的技术方案中,获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;检测所述待推送数据中是否包括文件保存标识;若是,则根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件;将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方。将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间,同时,由于获取到回滚指令后,快速获取加密的本地原数据进行回滚,避免了批量恢复业务数据的情况,进而避免批量恢复业务数据导致的已正常恢复数据的丢失。
附图说明
图1为本发明实施例中数据推送方法的第一个实施例示意图;
图2为本发明实施例中数据推送方法的第二个实施例示意图;
图3为本发明实施例中数据推送方法的第三个实施例示意图;
图4为本发明实施例中数据推送方法的第四个实施例示意图;
图5为本发明实施例中数据推送方法的第五个实施例示意图;
图6为本发明实施例中数据推送装置的一个实施例示意图;
图7为本发明实施例中数据推送装置的另一个实施例示意图;
图8为本发明实施例中数据推送设备的一个实施例示意图。
具体实施方式
本发明的技术方案中,获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;检测所述待推送数据中是否包括文件保存标识;若是,则根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件;将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方。将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间,同时,由于获取到回滚指令后,快速获取加密的本地原数据进行回滚,避免了批量恢复业务数据的情况,进而避免批量恢复业务数据导致的已正常恢复数据的丢失。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中数据推送方法的第一个实施例包括:
101、获取推送方发送的待推送数据,其中,待推送数据包括批次号;
可以理解的是,本发明的执行主体可以为数据推送装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
需要强调的是,为保证数据的私密和安全性,上述待推送数据可以存储于一区块链的节点中。
在实际应用中,在进行数据推送前,接收方或推送方需要先发送连接请求,从预设的MQ服务器集中随机选取处于空闲状态的MQ服务器进行长连接,在长连接完成后,推送方向MQ服务器推送数据,定时推送MQ数据到指定主题,接收方再通过订阅主题的方式获取推送的数据,在本实施例中,推送方推送至MQ服务器的数据中包括了批次号,其中,批次号用于标识当前待推送数据的批次,当接受方获取到MQ服务器推送的待推送数据后,提取其中的批次号,当接受方发现接受的待推送数据出现错误数据需要回滚时,可以根据最新接受到的待推送数据中的批次号生成回滚指令,MQ服务器根据回滚指令中的批次后查找存储的本地原数据。
102、检测待推送数据中是否包括文件保存标识;
在本实施例中,所述待推送数据中除了该待推送数据的批次号外,还可能包括了文件保存标识,所述文件保存标识用于,当待推送数据中包括有文件保存标识则进行本方法中后续的推送步骤,当待推送数据中不包括文件保存标识时,则进行正常的MQ流程,也就是不对接收方的本地原数据进行保存,只是简单的将待推送数据发送至接收方即可。
103、若是,则根据文件保存标识获取接收方的本地原数据,将本地原数据进行加密处理,得到加密文件,并将批次号和加密文件对应保存至预设数据库中;
在本实施例中,当待推送数据中包括有文件保存标识,则需要根据所述文件保存标识获取接收方的本地原数据,以便后续当接收方发现推送的数据出问题后,从MQ服务器保存的本地原数据进行数据回滚。
在本实施例中,所述加密处理用到的加密算法为哈夫曼(huffman)算法对本地原数据进行编码,在计算机数据处理中,哈夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。在实际应用中,还可以选择其他加密方式,本发明不做限定。
在本实施例中,在生成加密文件后,需要将使得本地原数据保存的待推送数据的批次好也同步保存,以便后续在出现异常后,根据所述批次号从数据库中查找需要回滚的本地原数据。
104、将待推送数据发送至接收方,以供接收方使用待推送数据;
在实际应用中,推送方的数据源变动后,推送方监控到数据变化,定时发送待推送数据到MQ服务器中的指定主题,接收方再通过订阅主题的方式获取数据,在本实施例中,所述待推送数据中还包括消息主题,通过待推送数据中的消息主题,将MQ服务器将待推送数据保持至对应消息标签的消息队列中,接受方通过订阅主题的方式获取数据主要是通过发送订阅消息,其中,所述订阅请求也有消息主题,保证获取到的数据为接收方需要使用的数据,将订阅请求中的消息主题与消息队列的消息主题匹配,将匹配成功的消息队列中的待推送数据发送至接收方,以供所述接收方使用所述待推送数据。
105、当接收到接收方的回滚指令时,根据回滚指令中接收方使用待推送数据的批次号,从数据库中获取加密文件;
在本实施例中,接收方在使用待推送数据的过程中,可能出现异常,例如待推送消息本身错误,或对该待处理消息进行处理的消息处理应用异常等问题,导致异常情况的发生,本实施例可以直接中断当前处理的待处理消息,并获取当前得到的相应的异常信息,该异常信息可以包括该异常待处理消息的异常原因及处理次数,其中,该异常原因可以是异常待处理消息的消息内容缺失、消息处理应用运行异常等。在本实施例中,将异常原因及处理次数已经当前待推送数据的批次号生成回滚指令,并将回滚指令发送至MQ服务器中;
在本实施例中,MQ服务器接收到接收方发送的回滚指令,从回滚指令中提取出批次号,由于事先将使得本地原数据保存的待推送数据的批次好也同步保存,所以可以将出现异常时使用的待推送数据的批次号,从数据库中提取出对应的加密文件。
106、将加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供接收方根据回滚数据完成数据回滚。
在本实施例中,所述反编译主要是通过哈夫曼算法,在实际应用中,根据不同的加密算法,在对加密文件进行反编译的过程中,选择对应的反编译算法。
在本实施例中,通过哈夫曼算法将加密文件反编译得到本地原数据后,这些本地原数据中有部分原数据不包含文件保存标识,这部分数据可以不进行回滚,将这部分原数据中包含文件保存标识的原数据发送至接收方,接收方获取到这些原数据后即可实现回滚。
在本实施例中,获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;检测所述待推送数据中是否包括文件保存标识;若是,则根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件;将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方。将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间,同时,由于获取到回滚指令后,快速获取加密的本地原数据进行回滚,避免了批量恢复业务数据的情况,进而避免批量恢复业务数据导致的已正常恢复数据的丢失。此外,本发明还涉及区块链技术,所述待推送数据可存储于区块链中。
请参阅图2,本发明实施例中数据推送方法的第二个实施例包括:
201、建立监听服务,其中,监听服务用于检测来自推送方的连接请求;
202、通过监听服务获取推送方的连接请求;
203、根据连接请求建立与推送方的长连接;
在本实施例中,所述数据推送方法应用在MQ服务器中,在进行所述数据推送方法前,所述MQ服务器接收客户端根据预设消息队列发送的连接请求,并根据所述连接请求建立客户端和MQ服务器之间的长连接,其中,客户端包括推送方和接收方,具体的,当用户通过浏览器访问提供web页面服务的服务器,即客户端向浏览器发起连接请求,此时,服务端MQ服务器集群中随机选取处于空闲状态的MQ服务器进行相应,并建立客户端与MQ服务器的长连接,其中长连接,是指建立连接的两端始终保持连接状态,实现点对点的通讯。与长连接相对的是短连接,短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。由于长连接不需要频繁建立和销毁套接字(socket),因此,对于实时消息推送的服务,使用长连接更加节省资源,效率更高。
204、通过长连接获取推送方发送的待推送数据,其中,待推送数据包括批次号;
205、检测待推送数据中是否包括文件保存标识;
206、若是,则根据文件保存标识获取接收方的本地原数据,将本地原数据进行加密处理,得到加密文件,并将批次号和加密文件对应保存至预设数据库中;
207、将待推送数据发送至接收方,以供接收方使用待推送数据;
208、当接收到接收方的回滚指令时,根据回滚指令中接收方使用待推送数据的批次号,从数据库中获取加密文件;
209、将加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方。
本实施例中的步骤204-209与第一实施例中的步骤101-106相似,此处不再赘述。
本实施例在上一实施例的基础上,增加了分别与接收方和推送方进行连接的过程,通过建立监听服务,其中,监听服务用于检测来自推送方的连接请求;通过监听服务获取推送方的连接请求;根据连接请求建立与推送方的长连接。本方法使用的连接为长连接,由于长连接不需要频繁建立和销毁套接字,因此,对于实时消息推送的服务,使用长连接更加节省资源,效率更高。
请参阅图3,本发明实施例中数据推送方法的第三个实施例包括:
301、获取推送方发送的待推送数据,其中,待推送数据包括批次号;
302、检测待推送数据中是否包括文件保存标识;
本实施例中的步骤301-302与第一实施例中的步骤101-102相似,此处不再赘述。
303、若是,则根据文件保存标识获取接收方的本地原数据;
304、将本地原数据中的字符的频率进行统计,得到哈夫曼编码表;
305、根据哈夫曼编码表,获得本地原数据中的字符的权值;
306、将本地原数据中的各字符种权值最小的两个字符作为哈夫曼树的第一叶子节点,并根据叶子节点的权值之和构建第一父节点;
307、按照权值从小到大的顺序依次提取本地原数据中的字符作为哈夫曼树的第二叶子节点,并与第一父节点作为同层节点,继续构建下一父节点,直至所有本地原数据中的字符构建到哈夫曼树中;
308、根据哈夫曼树,构建本地原数据的编码串,并将哈夫曼树和编码串作为加密文件;
在本实施例中,哈夫曼树构建的过程主要是用待推送数据中的每个字符作为叶子结点生成一棵编码二叉树,为了获得加密文件的最短长度,可将每个字符的出现频率作为字符结点的权值赋予该结点上,显然字使用频率越小权值越小,权值越小叶子就越靠下,于是频率小编码长,频率高编码短,这样就保证了此树的最小带权路径长度效果上就是加密文件。因此,求传送报文的最短长度问题转化为求由字符集中的所有字符作为叶子结点,由字符出现频率作为其权值所产生的哈夫曼树的问题。如“ASCTASCTAAAAACCTTT”,其中A出现次数为7,C出现次数为4,S出现次数为2,T出现次数为5;提取字符S和字符C作为哈夫曼树的叶子节点,分别以其权重值进行标记为2和4,建立权重值为6的父节点,并与其子节点连接,左侧连接标记为0,右侧连接标记为1;再提取字符T,作为哈夫曼树的另一个叶子节点,该叶子节点权重值为5,其与权重值为6的父节点为同层节点,建立权重值为11的父节点,并与其子节点连接,左侧连接标记为0,右侧连接标记为1;再提取字符A,作为哈夫曼树的另一个叶子节点,该叶子节点权重值为7,其余权重值为11的父节点为同层节点,建立权重值为18的父节点,并与其子节点连接,左侧连接标记为0,右侧连接标记为1;哈夫曼树建立完成。字符A的二进制编码表示为0,字符T的二进制编码表示为10,字符C的二进制编码表示为110,字符S的二进制编码表示为111。则“ASCTASCTAAAAACCTTT”的编码串为“01111101001111101000000110110101010”。
309、将加密文件保存至预设数据库中;
310、将待推送数据发送至接收方,以供接收方使用待推送数据;
311、当接收到接收方的回滚指令时,根据回滚指令中接收方使用待推送数据的批次号,从数据库中获取加密文件;
312、从加密文件中获取对应的哈夫曼树和编码串;
313、根据哈夫曼算法,将加密文件对应的哈夫曼树和编码串还原成本地原数据;
314、将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供接收方根据回滚数据完成数据回滚。
本实施例在前实施例的基础上,详细描述了根据所述文件保存标识获取接收方的本地原数据,将本地原数据进行加密处理,得到加密文件,并将批次号和加密文件对应保存至预设数据库中的过程。通过根据所述文件保存标识获取接收方的本地原数据;将本地原数据中的字符的频率进行统计,得到哈夫曼编码表;根据哈夫曼编码表对本地原数据进行哈夫曼编码,生成加密文件;将加密文件保存至预设数据库中,其中,据哈夫曼编码表对本地原数据进行哈夫曼编码,生成加密文件主要是用过根据哈夫曼编码表,获得本地原数据中的字符的权值;将本地原数据中的各字符种权值最小的两个字符作为哈夫曼树的第一叶子节点,并根据叶子节点的权值之和构建第一父节点;按照权值从小到大的顺序依次提取本地原数据中的字符作为哈夫曼树的第二叶子节点,并与第一父节点作为同层节点,继续构建下一父节点,直至所有本地原数据中的字符构建到哈夫曼树中;根据哈夫曼树,构建本地原数据的编码串,并将哈夫曼树和编码串作为加密文件。本方法使用哈夫曼编码,对出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
请参阅图4,本发明实施例中数据推送方法的第四个实施例包括:
401、获取推送方发送的待推送数据,其中,待推送数据包括批次号;
402、检测待推送数据中是否包括文件保存标识;
403、若是,则根据文件保存标识获取接收方的本地原数据,将本地原数据进行加密处理,得到加密文件,并将批次号和加密文件对应保存至预设数据库中;
本实施例中的步骤401-403与第一实施例中的步骤101-103相似,此处不再赘述。
404、提取待推送数据的消息主题;
405、根据消息主题确定存储该主题的集群节点;
406、将待推送数据存储至集群节点的消息队列中;
在本实施例中,消息队列为一个队列,则将待推送数据插入该消息队列即可,例如,插入消息队列的队尾;当然某些消息队列设置有插队接口,也可以根据需要将推送数据插入源消息队列中间或头部等相应位置。
407、获取接收方的订阅请求,并对订阅请求进行安全认证;
408、当安全认证通过时,根据订阅请求的主题从消息队列中获取对应消息主题的待推送数据;
在本实施例中,所述订阅请求包括有所述接收方的身份信息,当MQ服务器接受到接收方的订阅请求后,提取其中的身份信息,根据所述身份信息,获取所述接收方的访问权限,并根据所述用户的访问权限,判断所述接收方是否有从所述MQ服务器中获取所述待推送数据的权限,当判断结果为是时,将待推送数据发送至所述接收方。
在本实施例中,所述订阅请求还包括接收方的消息主题,将接收方的使用主体与消息队列中的消息主题进行对应,当匹配成功时,则将匹配成功的消息队列的消息主题的待推送数据推送至所述接收方。
409、将待推送数据发送至接收方,以供接收方使用待推送数据;
410、当接收到接收方的回滚指令时,根据回滚指令中接收方使用待推送数据的批次号,从数据库中获取加密文件;
411、将加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收。
本实施例中的步骤409-411与第一实施例中的步骤方,以供接收方根据回滚数据完成数据回滚。104-106相似,此处不再赘述。
本实施例在前实施例的基础上,增加了将待推送数据添加至消息队列的过程,通过提取所述待推送数据的消息主题;根据所述消息主题确定存储该主题的集群节点;将所述待推送数据存储至所述集群节点的消息队列中。同时增加接收方发送订阅请求后根据订阅请求获取对应主题的待推送数据的过程,通过获取接收方的订阅请求,并对所述订阅请求进行安全认证;当所述安全认证通过时,根据订阅请求的主题从所述消息队列中获取对应消息主题的待推送数据。通过本方法将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间。
请参阅图5,本发明实施例中数据推送方法的第五个实施例包括:
501、推送方检测到数据源中的数据发生更新,获取更新后的数据作为待推送数据,并将待推送数据发送至MQ服务器;
502、MQ服务器获取推送方发送的待推送数据,并检测待推送数据中是否包括文件保存标识;
503、若是,则MQ服务器根据文件保存标识获取接收方的本地原数据,将本地原数据进行加密处理,得到加密文件,并将批次号和加密文件对应保存至预设数据库中;
504、接收方生成订阅请求,并将订阅请求发送至MQ服务器;
505、MQ服务器根据订阅请求将待推送数据发送至接收方,以供接收方使用待推送数据;
506、当接收方使用待推送数据出现异常时,生成回滚指令,并将回滚指令发送至MQ服务器;
507、MQ服务器根据回滚指令中接收方使用待推送数据的批次号,从数据库中获取加密文件;
508、MQ服务器将加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方;
509、接收方根据回滚数据完成数据回滚。
本实施例中,数据推送方法运用到推送方,接收方和MQ服务器,MQ服务器本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间,在接收方使用数据出现异常时,快速进行数据回滚,避免由于批量修复导致对修复过程中已修改的正常数据覆盖,造成修复期间新的修改数据丢失的问题出现。
上面对本发明实施例中数据推送方法进行了描述,下面对本发明实施例中数据推送装置进行描述,请参阅图6,本发明实施例中数据推送装置一个实施例包括:
获取模块601,用于获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;
检测模块602,用于检测所述待推送数据中是否包括文件保存标识;
加密存储模块603,用于当检测到所述待推送数据中包括文件保存标识时,根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;
发送模块604,用于将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;
文件获取模块605,用于当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件,其中,所述回滚指令为所述接收方使用待推送数据出现异常需要进行数据回滚时生成的指令;
回滚模块606,用于将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供所述接收方根据所述回滚数据完成数据回滚。
需要强调的是,为保证数据的私密和安全性,上述待推送数据可以存储于一区块链的节点中。
本发明实施例中,所述数据推送装置运行上述数据推送方法,所述数据推送方法包括:获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;检测所述待推送数据中是否包括文件保存标识;若是,则根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件;将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方。将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间,同时,由于获取到回滚指令后,快速获取加密的本地原数据进行回滚,避免了批量恢复业务数据的情况,避免批量恢复业务数据导致已正常恢复数据的丢失。此外,本发明还涉及区块链技术,所述待推送数据可存储于区块链中。
请参阅图7,本发明实施例中数据推送装置的第二个实施例包括:
获取模块601,用于获取推送方发送的待推送数据,其中,所述待推送数据包括批次号;
检测模块602,用于检测所述待推送数据中是否包括文件保存标识;
加密存储模块603,用于当检测到所述待推送数据中包括文件保存标识时,根据所述文件保存标识获取接收方的本地原数据,将所述本地原数据进行加密处理,得到加密文件,并将所述批次号和所述加密文件对应保存至预设数据库中;
发送模块604,用于将所述待推送数据发送至所述接收方,以供所述接收方使用所述待推送数据;
文件获取模块605,用于当接收到所述接收方的回滚指令时,根据所述回滚指令中所述接收方使用所述待推送数据的批次号,从所述数据库中获取加密文件,其中,所述回滚指令为所述接收方使用待推送数据出现异常需要进行数据回滚时生成的指令;
回滚模块606,用于将所述加密文件进行解密处理,得到本地原数据,并将包含文件保存标识的本地原数据作为回滚数据发送至接收方,以供所述接收方根据所述回滚数据完成数据回滚。
其中,所述数据推送装置还包括长连接模块607,所述长连接模块607具体用于:
建立监听服务,其中,所述监听服务用于检测来自所述推送方的连接请求;
通过所述监听服务获取所述推送方的连接请求;
根据所述连接请求建立与所述推送方的长连接。
其中,所述加密存储模块603包括:
原数据获取单元6031,用于根据所述文件保存标识获取接收方的本地原数据;
统计单元6032,用于将所述本地原数据中的字符的频率进行统计,得到哈夫曼编码表;
编码单元6033,用于根据所述哈夫曼编码表对所述本地原数据进行哈夫曼编码,生成加密文件;
存储单元6034,用于将所述加密文件保存至预设数据库中。
其中,所述编码单元6033具体用于:
根据所述哈夫曼编码表,获得所述本地原数据中的字符的权值;
将所述本地原数据中的各字符种权值最小的两个字符作为哈夫曼树的第一叶子节点,并根据所述叶子节点的权值之和构建第一父节点;
按照权值从小到大的顺序依次提取所述本地原数据中的字符作为所述哈夫曼树的第二叶子节点,并与所述第一父节点作为同层节点,继续构建下一父节点,直至所有本地原数据中的字符构建到哈夫曼树中;
根据所述哈夫曼树,构建所述本地原数据的编码串,并将所述哈夫曼树和所述编码串作为加密文件。
可选的,所述回滚模块606具体用于:
从所述加密文件中获取对应的哈夫曼树和编码串;
根据哈夫曼算法,将所述加密文件对应的哈夫曼树和编码串还原成本地原数据;
将包含文件保存标识的本地原数据作为回滚数据发送至接收方。
其中,所述数据推送装置还包括消息队列模块608,所述消息队列模块608具体用于:
提取所述待推送数据的消息主题;
根据所述消息主题确定存储该主题的集群节点;
将所述待推送数据存储至所述集群节点的消息队列中。
其中,所述数据推送装置还包括安全认证模块609,所述安全认证模块609具体用于:
获取接收方的订阅请求,并对所述订阅请求进行安全认证;
当所述安全认证通过时,根据订阅请求的主题从所述消息队列中获取对应消息主题的待推送数据。
本实施例在上一实施例的基础上,详细描述了各个模块的具体功能以及部分模块的单元构成,通过本装置,能够将本地原数据进行加密保存,当出现需要进行数据回滚时,进行解密,并根据解密后得到的本地原数据进行数据回滚,快速的解决数据问题并避免人为的过多介入,并减少影响的时间。同时使用哈夫曼编码进行数据加密,对出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
上面图6和图7从模块化功能实体的角度对本发明实施例中的中数据推送装置进行详细描述,下面从硬件处理的角度对本发明实施例中数据推送设备进行详细描述。
图8是本发明实施例提供的一种数据推送设备的结构示意图,该数据推送设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据推送设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在数据推送设备800上执行存储介质830中的一系列指令操作,以实现上述数据推送方法的步骤。
数据推送设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图8示出的数据推送设备结构并不构成对本申请提供的数据推送设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述数据推送方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 数据推送方法、数据推送装置、电子设备及存储介质
- 一种数据推送方法、装置、电子设备及存储介质