一种面向联盟链的服务不停机分片增加方法技术

技术编号:24938644 阅读:34 留言:0更新日期:2020-07-17 21:04
本发明专利技术提出了一种服务不停机分片增加方法,包括串行和并行增加;串行化分片增加步骤中,首先获取现有分片的一些信息,随机生成多个哈希键,对包含这些哈希键的分片进行划分,将新划分出来的数据同步到新分片中,新分片对这些数据进行组织整理,构建相应的数据结构;新分片未完成数据同步时,而新分片内的节点对某一交易达成了共识,在执行这一交易时,需要访问或更新还未同步的数据时,新分片内的节点向原数据所在分片请求相关数据来执行交易,并将请求回来的数据构建本地的数据管理的数据结构;并行化分片增加步骤中,新产生的a分片未完成数据同步,当另一个新分片b需要对a进行切分操作时,分片a首先向原数据所在分片请求相关数据来执行分片切分操作,并将切分的情况发送给b分片,a分片和b分片依据切分的情况,通过向原数据所在分片请求数据响应数据查询和数据更新请求。

【技术实现步骤摘要】
一种面向联盟链的服务不停机分片增加方法
本专利技术属于区块链
,涉及到分片内数据的组织管理,具体是一种面向联盟链的分片内数据组织管理方法及分片增加方法。
技术介绍
区块链是一种由互不信任的多方维护的不可篡改的分布式账本,除了具有分布式的特点,同时也支持拜占庭容错。但区块链系统在计算和存储方面的可扩展性较弱,使其不能满足企业级的需求,大大限制了区块链的发展。分片技术被认为是提高区块链可扩展性的解决方法。在基于帐户模型的区块链中,分片技术主要通过将账户数据划分成几个部分,每个部分称为一个分片,每个分片单独执行,从而提高系统吞吐量。分片划分之后,划分到每个分片中的状态数据目前主要通过默克尔树或其变体结合键值对数据库进行管理,比如MPT树结合基于LSM树的键值对数据库。但是,这些结构因为是在键值存储上实现的,会出现明显的读放大情况。在增加分片时,会出现数据的重划分过程,在数据迁移同步的过程中,系统无法对外提供服务,会出现系统服务短暂停机的情况,降低了系统的可用性。作为分片内账户状态数据组织的数据结构,首先要可以作为分片内账户状态的索引结构、生成分片内账户状态的摘要、支持账户状态数据的历史版本溯源,同时还应该满足:保证分片之间的负载均衡、分片划分时快速的数据迁移、数据迁移过程中提供不停机的服务。在现有技术中,账户状态数据组织结构一般被组织为默克尔树或其变体的形式,比如MPT、MBT、默克尔B+树等。但现有的这些技术都不能满足以上这些需求。默克尔桶树(MBT)。MBT由两部分组成:哈希表和默克尔树。哈希表由一系列桶组成,每个桶包含许多账户状态(每个桶内账户是有序的)。桶的哈希值是上层默克尔树的叶子节点,默克尔树的哈希根是所有状态的摘要。由于MBT是一棵大小固定的树,因此它的高度是一定的,并且从根节点到桶的路径上的节点,可以作为账户状态的完整性证明。但是,MBT无法为单独的账户状态提供完整性证明(因为一个桶里面有一批账户状态数据)。默克尔帕特里夏树(MPT)是由帕特里夏树(Patriciatrie)和默克尔树的混合物。该结构除了可以计算摘要外,还可以作为账户状态的索引,并提供完整性证明。此外,MPT通过在每个块上构建全局账户状态的快照来存储账户状态数据的所有版本。但是,MPT不是一棵平衡的树,它的高度可能会随着帐户数量的增长而快速增加,这会导致整体性能下降。同时MPT的结构是在键值存储区上实现的,具有明显的读放大的情况。默克尔B+树,作为一种具有出色的I/O性能的平衡结构,可以处理提供完整性证明的可验证查询。但是,默克尔B+树不支持数据的多版本溯源。因此,上述结构都存在一些缺陷。
技术实现思路
针对上面这些结构的存在的这些缺陷,本专利技术在分片中设计一种用于数据管理的聚集默克尔B+树(AMB-tree),如图12所示,聚集默克尔B+树具有出色的读写性能,并可以生成全局账户状态数据的摘要以及提供查询的完整性证明;每个分片内包含多个互相之间账户地址不连续的子分片,增加分片时,每个分片切分其聚集默克尔B+树,仅需切分其中一个子分片,减少了分片增加时数据的迁移量,同时这种方法保证在进行分片划分时分片之间的负载均衡;聚集默克尔B+树支持快速重建,并且每个分片可以在数据同步(迁移)期间服务不停机。本专利技术对聚集默克尔B+树又做了一些改进(AMB*-tree),本专利技术将AMB-tree的聚集层默克尔树中每个节点设置一个固定大小的缓存区,对数据的更新操作可以先写入缓存区,每个缓存区通过默克尔B+树进行管理。具体细节为:当有对状态数据的更新操作时,将更新操作写入根节点的缓冲区中,当根节点的缓冲区满了之后,将缓冲区的数据切分,切分之后写入子节点的缓冲区中,以此类推,缓冲数据会到达相应的叶子节点,最终将叶子节点内的数据写入索引层中。每个节点的缓冲区通过默克尔B+树进行组织管理,所有的默克尔B+树在主存中维护,当需要查找数据时,首先到缓存区中查找数据;需要对分片进行重新划分时,缓存区中若存在一些对分片中的账户的更新操作,首先需要将这些数据执行写回操作,写回之后执行分片划分操作。通过这种优化手段,大大提高了写的效率,同时根据数据访问的局部性,这种优化手段也提高了读的效率。如图1所示。基于以上,本专利技术提出了一种面向联盟链的分片内数据组织管理方法:在分片内数据组织管理中,将分片内数据分三层管理,聚集层生成分片内所有账户状态数据的摘要,索引层负责对分片内账户状态数据的索引,数据层管理账户状态的历史数据。聚集默克尔B+树支持生成完整性证明,支持数据的多版本溯源,同时可以降低现有技术中存在的读放大情况;每生成一个区块,就对新生成的聚集默克尔B+树生成快照。当对聚集默克尔B+树进行更新时,依据之前生成的快照对外提供服务。具体包括以下步骤:步骤1:利用聚集默克尔B+树组织管理分片内账户地址状态;所述默克尔B+树包括索引层、聚集层、数据层;具体包括以下子步骤:步骤1-1:每个分片负责全部地址空间的一部分地址空间,为了保证分片之间的负载均衡和增加分片时尽可能少的数据迁移,每个分片又分为多个子分片,子分片内部的地址空间是连续的,子分片之间的地址空间是不连续的,每个子分片中的账户状态用默克尔B+树组织管理,该树作为该子分片内账户状态的索引,此部分作为聚集默克尔B+树的索引层;步骤1-2:将分片内所有子分片的默克尔B+树的根节点作为叶子节点,通过默克尔树生成分片内所有账户状态的摘要,此部分作为聚集默克尔B+树的聚集层;步骤1-3:利用可验证只可添加跳表管理单个账户状态的全部历史数据,导致账户状态改变的交易所在区块的区块号作为账户状态的一个版本;为每个账户状态历史版本维护多层链接,链接通过哈希指针指向之前的版本,第0层链接全部版本数据,第0层链表中每隔2n个的版本依次链接成为第n层的链表,此部分作为聚集默克尔B+树的数据层。步骤2:针对所述聚集默克尔B+树,完成带完整性证明的状态查询操作和数据多版本溯源;具体包括以下子步骤:步骤2-1:在所述索引层,将从默克尔B+树顶端出发到满足查找条件的叶子节点的路径上每个节点保存的哈希指针作为所述索引层的完整性证明;所述具体查找办法为从包含查找键的子分片的根节点出发,查找包含查找键的子节点,依次逐层查询,直到叶子节点,查找路径上的所有的节点对应的哈希值即为索引层的完整性证明;步骤2-2:在所述聚集层,将从聚集层根节点出发到指向满足查找条件的子分片的叶子节点的路径上的所有节点的兄弟节点作为所述聚集层的完整性证明;所述查找办法为:从查找键所在的子分片的根节点(该根节点在聚集层作为叶子节点)出发,查找其对应的兄弟节点,之后再查找其父节点的兄弟节点,以此类推,直到根节点,查找到的所有从叶子节点到根节点这条路径上的所有兄弟节点即为聚集层的完整性证明;步骤2-3:在所述数据层,查找指定的账户状态版本时,给定一个账户和区块号,则应返回小于该区块号的最大的状态版本对应的数据;所述查找方法是:针对指定的账户,从当前状态版本出发,查找所有版本号大于等于所本文档来自技高网
...

【技术保护点】
1.一种服务不停机分片增加方法,其特征在于,包括以下具体步骤:/n步骤1:串行化增加分片;/n步骤2:并行化增加分片;/n步骤3:分片增加过程中服务不停机的查询处理。/n

【技术特征摘要】
1.一种服务不停机分片增加方法,其特征在于,包括以下具体步骤:
步骤1:串行化增加分片;
步骤2:并行化增加分片;
步骤3:分片增加过程中服务不停机的查询处理。


2.根据权利要求1所述的服务不停机分片增加方法,其特征在于,所述步骤1具体包括:
步骤1-1:获取所有现有的分片信息,获取的信息包括每个分片负责的部分账户空间;
步骤1-2:随机生成多个哈希键,查找包含该哈希键的分片,利用该哈希键对包含此哈希键的分片的子区域进行切分;
步骤1-3:分片划分之后但新分片未完成数据同步时,若新分片内的节点收到数据请求,节点首先响应请求,仅当分片内的节点空闲时,将数据同步到新分片中;
步骤1-4:数据同步完成之后,利用默克尔B+树管理每个子区域的数据,利用默克尔树生成分片数据的摘要,新分片根据自身的数据对外提供服务。


3.根据权利要求2所述的服务不停机分片增加方法,其特征在于,所述步骤1-2包括:
步骤1-2-1:给定一棵子区域的默克尔B+树和生成的相应的哈希键,利用哈希键从默克尔B+树根节点到叶子节点向下遍历,将当前所处节点包含哈希键的子节点进行切分,生成两棵子树;
步骤1-2-2:将两棵子树进行调整,去除无效节点,将其调整为满足要求的子树;
步骤1-2-3:调整之后,根据映射规则将两棵子树分别替代原树或划分到新生成的分片里。


4.根据权利要求2所述的服务不停机分片增加方法,其特征在于,步骤1-4具体包括:
步骤1-4-1:获取每个子区域的默克尔B+树的根节点作为数据项;
步...

【专利技术属性】
技术研发人员:佟兴戚晓冬张召金澈清
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1