Fabric中Channel的设计

Fabric的数据存储结构被设计成多账本体系,每一个账本在Fabric中被称为Channel,加入Channel中的每个Peer节点都是对等的,也就是说同一个Channel中的所有Peer节点都保存一份相同的数据。但是Fabric目前并没有提供分布式存储的解决方案,这导致了加入了同一Channel的Peer节点服务器中都会重复存储相同的数据。这种存储结构在数据量非常大的时候会影响Peer节点读取数据的性能。

基于Fabric这样的存储特性,在设计Fabric系统的时候需要对Channel存储方式进行相关的设计。Fabric对Channel的存储方式进行设计的内容主要是:首先对Channel的大小进行评估,如果单个Channel的数据量或者数据的存储空间都非常大,那么可以将一个非常大的Channel拆分成若干个相对比较小的Channel。

我们通过一个例子来说明如何拆分Channel。假设在Fabric系统中我们有这样一个Channel,该Channel中包含的数据可能超过10亿条,数据文件的大小可能超过500G。如果按照Fabric现有的设计方式,Channel和节点的分布如图9-2所示:

Fabric大Channel分布示意图

图9-2 Fabric大Channel分布示意图

根据图9-2所示,以后的Peer节点都要存在大约500G的数据,这显然对单个Peer节点造成了比较大的压力。这个时候我们可以采取对Channel进行分割,我们将每个Channel的数据限制在2000万条,经过分割之后的Channel结构如图9-3所示:

Fabric大Channel分布示意图

通过图9-3可见,经过分割处理之后的Channel体积缩小到原来的三分之一。对Channel进行分割处理还有一个好处就是,如果数据继续增长只需要增加一个新的Channel即可,这样理论上可以应对数据的无限增长。

868区块链学习网为您整理《Fabric中Channel的设计》仅供参考。