· 均衡负载/巨细:如何分别系统状态, a),所有碎片的负载在统计上匀称漫衍;b),分区系统状态的巨细也统计匀称地漫衍在所有碎片上。实现这些是线性标度的要害前提。只要在添加更多的碎片后负载/巨细匀称漫衍,我们就可以或许通过添加更多节点来处理惩罚新的碎片来线性地增加系统容量。请留意,这些刊行版与用户操纵模式高度相关,假如用户操纵模式随时间变革很大,大概会导致负载不匀称(临时或永久)。
系统的全局状态是什么?如何变动系统状态?
在答复上述关于夸克链的问题之前,让我们先先容现有的系统模子和分片的难点。
现有区块链的系统状态和生意业务
我们思量一个基于账户的区块链模子,雷同于,个中系统状态根基上是一个从地点到账户数据的键值映射。地点有两种范例:
另外,去中心化的世界面对更多挑战,因为我们需要成立适当的共鸣,以安详的方法处理惩罚所有碎片中的生意业务。新的切分共鸣打开了新的进攻大概性,因此假如没有对线程模子的全面阐明,切分大概很容易被粉碎,因此整个网络很容易被粉碎。
CRUD操纵的差异组合支持两种范例的生意业务:
除了分区和共鸣的挑战之外,切分的另一个常见问题是切分之间的互操纵性,即跨切分生意业务。底层的逻辑是可用性——用户应该可以或许会见所有资源,包罗智能合约和跨所有分片的其他用户帐户。如何开拓高效、安详的跨切分生意业务是一个要害问题。
账户数据包罗
分区的方法对系统的机能是至关重要的,假如分区的设计不符合,那么系统的机能会很差。要设计分区,,我们需要思量以下几个要害方面:
· 通过挪用和委托更新多个智能契约的余额和存储;
在接下来的文章中,我们将接头夸克链在区块链切分方面的办理方案。另外,我们将较量夸克链与现有的会合式系统,如谷歌的BigTable,并说明其与会合式系统的异同。区块链分片中的挑战
要应用分片,我们需要答复几个要害问题:
· 确保操纵(生意业务)语义:如何分别系统状态以满意操纵语义?一个要害的语义是原子性,假如一个操纵以原子性的方法改变多个碎片中的状态,这样的操纵需要在碎片之间举办适当的协调(譬喻,通过漫衍式锁),这大概是昂贵的。因此,这种操纵的机能很难从分片技能中获益。——有时表示甚至更糟。为了制止这样的问题,大大都现代的分片系统都支持在一个分片中举办原子批处理惩罚操纵,并让上层应用措施处理惩罚巨大的多分片原子性问题。
其顶用户地点的代码和存储为空。
通过度片技能的适当设计,系统的容量可以或许跟着切分和处理惩罚器(节点)数量的增加而增加,换句话说,即线性局限。
· 代码;
· 姑且法子;
· 用户地点;及
· 建设多个用户地点及其帐户数据;
· 储存;
譬喻,在漫衍式键值(KV)存储中(譬喻,BigTable、Cassandra),系统状态是从任意字节(键)到任意字节(值)的映射,而变动系统状态的操纵是:建设、读取、更新和删除(CRUD)。
2、只能条约生意业务,它可以
1、两个用户地点之间的转账生意业务,主要是更新两个地点的余额和发送方的暂存;
· 更新多个用户地点的余额;
· 智能合约地点;
切分的根基思想是将一个全局系统状态分别为多个子状态,并相对独立地处理惩罚每个切分中的生意业务。
与现有的可扩展性办理方案对比,区块链切分带来的挑战是,区块链的系统状态与BigTable和Cassandra平漫衍式KV存储完全沟通;然而,坏动静是,生意业务语义比简朴的CRUD操纵巨大得多–智能契约生意业务大概对系统状态的任何键值对执行任何CRUD操纵。假如将状态分别为差异的子状态(碎片),则要确保跨多个碎片的原子性将很是坚苦(大大都环境下是不行能的)。如何支解区块链分类帐是区块链分片的基础问题。
· 均衡;
· 更新发件人的名称;
如何将系统状态分别为碎片,以便所有操纵都能获得正确有效的处理惩罚?
· 从头切分:如何添加更多的碎片,以及新节点如何可以或许为新碎片处事。添加更多的碎片后,新碎片将由旧碎片中的一些状态构成,这些状态将迁移到新节点。在从头名目化期间的迁移大概需要时间并暂停现有的处事。另外,我们还需要确保所支持的操纵在重塑之前和之后的语义沟通。
在现有的可扩展性办理方案中,切分大概是支持程度可扩展性的最常用办理方案。
· 建设多个智能契约。
另一个例子是漫衍式只追加文件系统(譬喻,Google文件系统)。(GFS),Hadoop漫衍式文件系统(HDFS)),假如系统状态是一组目次和文件,而且操纵是两组:在目次中建设、删除和列表操纵,以及打开、追加、读取和封锁文件的操纵。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。