区块链技术领域,一种高性能的区块链分布式存储系统及方法
区块链技术是一种去中心化的分布式存储系统,它使用P2P技术组网通信,利用加密算法防止数据篡改,通过共识算法使各节点的存储内容达成一致。如图1所示,区块链文件系统通常由两部分组成,一是记录具体事件的链式文件,二是用来记录系统状态的数据库。比特币、以太坊、超级账本等这些区块链项目使用的加密算法与共识机制虽然不同,但其文件系统并无本质区别,受制于区块链技术的天然特性,目前的区块链分布式存储方式存在以下问题:
1、处理效率低:实用的区块链项目需要支持高并发的业务,这对区块链的处理效率提出了很高的要求,但是根据CAP原理,在保证一致性的前提下,提升效率并不容易,在存储复杂数据的基础上提升效率则更加困难。
2、存储容量低:存储容量低是区块链长期面临的问题,虽然在联盟链中可以通过增加存储服务器的办法来解决,并同时解决数据存储内容单一的问题,但是这种解决方式会进一步拉低区块链处理效率。
3、数据存储与实际需求之间存在矛盾:区块链通常是以键值对形式的数据结构存储交易记录,不支持更加复杂的文件存储,比如图片、音频、视频等等,能够存储的内容比较单一。而在实际的使用场景中,很多业务需要更加复杂的数据作为支撑,这就造成账本数据不能很好的满足实际业务需求,限制了区块链的应用拓展。
问题拆分
区块链分布式存储系统中,反向代理、应用服务、消息队列以及数据存储服务都选择集群的方式进行部署,大大提高了系统的数据处理与读写的效率。并且,由于在前后端以及存储组件上实现了负载均衡,所以对于高并发场景具有良好的支持,实现了系统的高可用。同时,区块链文件系统只需要记录数据的指纹与地址,减少了区块链系统的压力,提高了区块链的处理效率。区块链文件系统与存储组件的分工合作解决了区块链存储容量低的问题,还支持多种存储组件的拓展,实现了对于各种复杂数据的存储支持,满足了多样化的存储需求,同时实现了整体存储的大容量。
问题解决
如图2所示,本发明的优选实施例提供一种高性能的区块链分布式存储系统,包括反向代理集群、应用服务器集群、消息队列集群和数据存储集群,所述反向代理集群用于接收客户端的请求并将其转发至应用服务器集群,所述应用服务器集群包括多台应用服务器、高速缓存池和数据处理模块,所述应用服务器用于提供应用服务,处理并回复所述反向代理集群转发的用户请求,所述高速缓存池用于存储有高度读写需求的数据,所述数据处理模块用于进行数据的预处理、计算数据指纹、区块链文件系统和存储组件的交互,所述消息队列集群用于负责处理多台应用服务器的请求,所述数据存储集群包括用于存储数据指纹和数据地址的区块链文件系统、用于存储各类数据的存储组件;
所述反向代理集群在接收到不同客户端的用户请求和关联数据后按照预设的分配策略将其分配至所述应用服务器集群中的一个应用服务器进行处理,所述应用服务器首先判断用户请求是否需要使用高速缓存池,若需要则将该用户请求及关联数据发送至高速缓存池进行处理,所述高速缓存池根据用户请求返回相应的反馈数据至应用服务器,所述应用服务器将所述高速缓存池返回的反馈数据发送给客户端,所述应用服务器还判断用户请求是否需要使用数据存储集群,若需要将用户请求及关联数据发送给所述数据处理模块进行处理,所述数据处理模块根据用户请求的请求类型通过所述消息队列集群进行区块链文件系统和存储组件之间的交互以实现数据的存储。
可以理解,所述反向代理集群由多台负责反向代理业务的服务器组成,其功能包括接收并转发客户端的请求,为应用服务集群提供代理服务并实现其负载均衡,实现负载均衡采取的分配策略包括轮询策略、指定权重策略、IP绑定策略、最少连接策略、时间优先策略、URL定向策略等中的至少一种。所述反向代理集群可以将任务均衡地分配到集群中的每一台服务器,以最大化优化系统的性能。所述高速缓存池由内存数据库集群构成,比如Redis集群,通过在每个应用服务器集群中使用内存数据库,并令其构成内存数据库集群,实现了读服务和写服务的负载均衡,最终实现高速缓存。所述消息队列集群由多台负责处理应用服务器请求的服务器构成,其功能包括消息分发、应用解耦、流量削峰、异步消息等,所述消息队列集群不仅可以进行消息分发与一致性的达成,还可以实现消息订阅,实现了不同存储组件对不同存储内容的订阅与存储,从而提高了系统性能。其中,所述数据存储集群的数量为至少两个,至少两个数据存储集群采取分片式分配方式,每个数据存储集群均包括一个区块链文件系统和至少一个存储组件,所述存储组件由多种可选的数据存储应用构成,包括HDFS、关系型数据库、NOSQL非关系型数据库、IPFS分布式存储系统中的至少一种,用于存储经过处理的各类数据,同时提高查询服务。另外,所述存储组件还采取分库、分表的方式进行数据存储,实现了数据存储的负载均衡。所述HDFS分布式文件系统支持任务的并发处理,相对于串行化的数据处理,并发处理的效率更高。所述IPFS去中心化分布式存储方式,实现了存储系统中部分数据的点对点传输,而数据存储节点的选择遵循距离最近原则,从而减少了数据传输的延迟,进而提高了存储系统的性能。另外,本发明的高性能的区块链分布式存储系统还使用了非拜占庭容错算法中的Raft共识算法,可以实现数据指纹的快速上链,大大提高了区块链系统的处理效率。
可以理解,本实施例的高性能的区块链分布式存储系统,反向代理、应用服务、消息队列以及数据存储服务都选择集群的方式进行部署,大大提高了系统的数据处理与读写的效率。并且,由于在前后端以及存储组件上实现了负载均衡,所以对于高并发场景具有良好的支持,实现了系统的高可用。同时,区块链文件系统只需要记录数据的指纹与地址,减少了区块链系统的压力,提高了区块链的处理效率。由于区块链具有账本数据难以篡改的特性,本存储系统将区块链文件系统纳入其中,用来保存数据的指纹与存储地址用以检验被存储数据的有效性,防止了存储组件中的数据被恶意篡改。区块链文件系统与存储组件的分工合作解决了区块链存储容量低的问题,还支持多种存储组件的拓展,实现了对于各种复杂数据的存储支持,满足了多样化的存储需求,同时实现了整体存储的大容量。
另外,如图3所示,本发明的另一实施例还提供一种高性能的区块链分布式存储方法,优选采用如上所述的区块链分布式存储系统,所述方法包括以下内容:
步骤S1:客户端发送用户请求及关联数据至反向代理集群;
步骤S2:所述反向代理集群将用户请求分配给应用服务器集群中的一个应用服务器进行处理;
步骤S3:所述应用服务器判断用户请求是否需要使用高速缓存池,若需要则将用户请求及其关联数据发送至高速缓存池进行处理,高速缓存池根据用户请求返回相应的反馈数据至应用服务器,所述应用服务器将该反馈数据发送至客户端;
步骤S4:所述应用服务器判断用户请求是否需要使用数据存储集群,若需要则将用户请求及关联数据发送给数据处理模块进行处理,所述数据处理模块判断用户请求的请求类型,并根据判断结果通过消息队列集群进行区块链文件系统和存储组件之间的交互,以实现数据的存储。
可以理解,本实施例的高性能的区块链分布式存储方法,反向代理、应用服务、消息队列以及数据存储服务都选择集群的方式进行部署,大大提高了系统的数据处理与读写的效率。并且,由于在前后端以及存储组件上实现了负载均衡,所以对于高并发场景具有良好的支持,实现了系统的高可用。同时,区块链文件系统只需要记录数据的指纹与地址,减少了区块链系统的压力,提高了区块链的处理效率。由于区块链具有账本数据难以篡改的特性,本存储系统将区块链文件系统纳入其中,用来保存数据的指纹与存储地址用以检验被存储数据的有效性,防止了存储组件中的数据被恶意篡改。区块链文件系统与存储组件的分工合作解决了区块链存储容量低的问题,还支持多种存储组件的拓展,实现了对于各种复杂数据的存储支持,满足了多样化的存储需求,同时实现了整体存储的大容量。
可以理解,如图4所示,当所述步骤S4中判断出用户请求的请求类型为数据写入请求时,所述步骤S4包括以下内容:
步骤S41a:所述数据处理模块将数据序列化,并通过哈希函数计算得到数据指纹,并将数据写入请求和序列化数据发送至消息队列集群,由所述消息队列集群将数据写入请求和序列化数据发送至存储组件;
步骤S42a:所述数据存储组件将存储地址发送给数据处理模块;
步骤S43a:所述数据处理模块将数据指纹和数据地址打包发送给消息队列集群,由所述消息队列集群将打包好的数据指纹和数据地址发送至区块链文件系统上链。
可以理解,如图5所示,当所述步骤S4中判断出用户请求的请求类型为数据查询请求时,所述步骤S4包括以下内容:
步骤S41b:所述数据处理模块将数据查询请求和数据索引发送至消息队列集群,由所述消息队列集群将数据查询请求和数据索引发送至区块链文件系统;
步骤S42b:所述区块链文件系统根据数据索引将相应的数据指纹和数据地址返回至数据处理模块;
步骤S43b:所述数据处理模块将数据查询请求和数据地址发送给消息队列集群,由所述消息队列集群将数据查询请求和数据地址发送至存储组件;
步骤S44b:所述存储组件根据数据地址将存储的数据返回给数据处理模块;
步骤S45b:所述数据处理模块获得所述存储组件返回的数据后利用hash函数计算数据指纹,若计算得到的数据指纹与在区块链文件系统中获得的数据指纹一致,则证明数据没有被篡改;
步骤S46b:所述数据处理模块将获得的数据发送给应用服务器,由应用服务器将数据发送至客户端。
可以理解,如图6所示,当所述步骤S4中判断出用户请求的请求类型为数据修改请求时,所述步骤S4包括以下内容:
步骤S41c:所述数据处理模块将数据修改请求和数据索引发送至消息队列集群,由所述消息队列集群将数据修改请求和数据索引发送至区块链文件系统;
步骤S42c:所述区块链文件系统根据数据索引将相应的数据指纹和数据地址返回至数据处理模块;
步骤S43c:所述数据处理模块将数据修改请求和数据地址发送给消息队列集群,由所述消息队列集群将数据修改请求和数据地址发送至存储组件;
步骤S44c:所述存储组件根据数据地址将存储的数据返回给数据处理模块;
步骤S45c:所述数据处理模块获得所述存储组件返回的数据后利用hash函数计算数据指纹,若计算得到的数据指纹与在区块链文件系统中获得的数据指纹一致,则证明数据没有被篡改;
步骤S46c:所述数据处理模块对数据进行修改并计算新的数据指纹,并将修改后的数据发送到消息队列集群,由所述消息队列集群将修改后的数据发送到存储组件的原地址进行存储;
步骤S47c:所述数据处理模块将新的数据指纹、原数据地址打包发送到消息队列集群,由所述消息队列集群将打包好的新的数据指纹、原数据地址发送至区块链文件系统上链。
可以理解,如图7所示,当所述步骤S4中判断出用户请求的请求类型为数据删除请求时,所述步骤S4包括以下内容:
步骤S41d:所述数据处理模块将数据删除请求和数据索引发送至消息队列集群,由所述消息队列集群将数据修改请求和数据索引发送至区块链文件系统;
步骤S42d:所述区块链文件系统根据数据索引将相应的数据指纹和数据地址返回至数据处理模块后将其删除;
步骤S43d:所述数据处理模块将数据删除请求和数据地址发送给消息队列集群,由所述消息队列集群将数据删除请求和数据地址发送至存储组件;
步骤S44d:所述存储组件根据数据地址将存储的数据删除。
本发明具有以下效果:
本发明的高性能的区块链分布式存储系统,反向代理、应用服务、消息队列以及数据存储服务都选择集群的方式进行部署,大大提高了系统的数据处理与读写的效率。并且,由于在前后端以及存储组件上实现了负载均衡,所以对于高并发场景具有良好的支持,实现了系统的高可用。同时,区块链文件系统只需要记录数据的指纹与地址,减少了区块链系统的压力,提高了区块链的处理效率。由于区块链具有账本数据难以篡改的特性,本存储系统将区块链文件系统纳入其中,用来保存数据的指纹与存储地址用以检验被存储数据的有效性,防止了存储组件中的数据被恶意篡改。区块链文件系统与存储组件的分工合作解决了区块链存储容量低的问题,还支持多种存储组件的拓展,实现了对于各种复杂数据的存储支持,满足了多样化的存储需求,同时实现了整体存储的大容量。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。