作者:soseast9975 | 来源:互联网 | 2024-10-11 19:26
功能介绍Data-Stash可为区块链底层平台提供节点数据扩容、备份、裁剪和高效同步的能力,具有断点续传、可信验证、易于使用等优点。用户可基于Binlog协议同步区块链底层节点全量
功能介绍
Data-Stash可为区块链底层平台提供节点数据扩容、备份、裁剪和高效同步的能力,具有断点续传、可信验证、易于使用等优点。用户可基于Binlog协议同步区块链底层节点全量数据,进而实现全量数据备份、冷热数据分离、节点快速同步,适合节点有海量数据等运维场景。
节点通过数据裁剪实现冷热数据分离,链上仅保留热数据,冷数据则通过全量备份获取,以此节省节点空间。冷热数据分离后,交易的验证、执行仅依赖于链上热数据,从而提升交易执行性能。
对于新节点加入网络后数据的同步,只需要从全量备份拉取数据,实现数据高效同步,其间不占用区块链网络带宽,免去冗长的同步过程,减少节点数据同步的等待时间,使得节点可以快速加入区块链网络并正常工作。
特性
节点账本全量备份
Data-Stash通过解析节点生成的Binlog,可以在节点外生成链上数据的全量备份。随后,节点运维人员可对链上数据进行裁剪,达到节省空间、提升性能的效果。对于裁剪后缺失的冷数据,节点会通过amdb从全量备份读取。节点还可以通过fisco-sync工具,将数据重新导回到节点,恢复完整的节点,而不必从区块链网络拉取数据。
多维度账本校验
据仓库组件在读取某节点日志后,会进行多重校验,以防出现节点账本信息被损害、被篡改、共识系统异常等情况。
校验是多维度的,整体可分为对比校验和区块链校验。对比校验是指Data-Stash会拉取多个节点的账本进行对比,确认账本内容一致后才可以入库;区块链校验是指验证区块链本身,包括哈希检查、签名检查、状态根检查等。
备份数据可信存储
Data-Stash每处理完一个区块,都会为此时的全量备份生成一个哈希值作为检查点。该检查点会为存储增信,适用于全量备份库之间的校验等场景。
例如,不同机构生成了各自的全量备份,现在想比对各自备份数据是否一致,各机构只需要提取出最新区块高度的检查点进行比对,如一致,则表示备份内容完全相同。
断点续传
在实际运行中,FISCO BCOS会生成许多Binlog,这些Binlog无论是体积、数目,都具有相当规模,如果每一次运行都重复下载、解析,会造成性能浪费。为此,我们设计了断点续传机制,组件会持续记录解析的进度,每次运行时都会从上一次断点处运行,而不会重新开始。
易于使用
Data-Stash以jar包的形式提供服务,用户可通过jar包或bash脚本运行。开发者只需要做最少化配置,默认情况下,只需要配置nginx地址、全量数据库地址,程序即可运行。
此外,Data-Stash还允许用户进行更高级的配置设置,例如修改批插入次数、轮询间隔等。
架构
1)下载服务Fetcher Server
下载服务会持续轮询nginx端口,下载最新Binlog日志到本地目录中。
2)解析服务Binlog Parser
解析服务持续读取Binlog日志,并对Binlog中的区块信息进行解析。
3)校验服务Binlog verifier
校验服务用于保证数据的可信性。校验服务会从其他节点拉取Binlog进行对比,保证内容的一致性,并对数据本身进行校验,例如对于区块哈希校验、区块签名校验、交易根校验等。
4)存储服务Data Storage
存储服务按照Binlog的变动,会将其内容应用到数据库中,该数据库会包含系统表、合约表等,结构上与节点保持一致,数据量上则包含节点运行至今的所有区块链数据。表结构可分为如下几类:
- 系统表_sys_包含区块链信息,例如区块数据(sys_hash_2_block)、共识状态(sys_consensus)、cns(sys_cns)等
- 合约表c_或cp_记录合约信息,包括nonce值、合约代码、代码哈希等
- 用户表_u_调用CRUD合约创建的表
5)检查点服务Checkpoint Handler
每一个区块数据的入库存储,都会生成一个检查点数据,该检查点包含了前置所有区块数据的哈希,用于额外对存储进行增信。