啥是分片技术? 什么是IP分片技术

作者&投稿:福农 (若有异议请与网页底部的电邮联系)

写在文前:视频版本和文字版本略有不同,想要看我深情并茂演绎,请看视频版本 (喵懂区块链22期|分片(Sharding):以太坊太慢,“盘”他!),思维逻辑怪,请看文案加长版。

最近以太坊由于君士坦丁堡升级(Constantinople)而出现了压倒性的积极走势,而以太坊的升级之路则犹如升级打怪一般,落入了rabbit hole,谁也不知道这洞有多深。既然是“路漫漫其修远兮”,则把脚下的每一步走好走准,则成了至关重要的点。攻破这一难点之后,以太坊的下一技术难点---Sharding分片,则又被摆到了台面上。本期《喵懂区块链》会带大家走进让以太坊快起来的法宝--- Sharding分片。

什么是sharding分片?

分片技术其实并不是什么新概念,起初是针对大型中心数据库提出的优化方案,具体来说就是将大型数据库中的数据划按照某种规则分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。

我们举一个通俗的小例子:

比如我们平时经常使用的美团,滴滴打车等软件,就可以按照“城市”来进行分片,由于不同城市的数据不需要互通,就可以将不同城市的数据存放在不同数据库中,这样既可以把数据库服务器部署到离对应城市最近的节点上,还可以提高访问速度,何乐而不为呢?!

从上面的例子中,我大家应该对分片的概念有了初步了解,那么对应到区块链场景中来说,分片又是怎么样的呢?

以以太坊分片为例,在原有的单链系统中,公链整体的性能取决于单个节点的性能,进行分片之后,每个节点只需要承当全网部分工作,各个分片并行工作,按照Vitalik的话来说,each shard is like a separate galaxy每个分片都像是独立的小宇宙,这样效率自然噌噌噌提升!原本以太坊链全网TPS约为20,现在若增加到100个分片,那么全网TPS可以提升至2000,同理,全网容量也将提升至原来的100倍。

“每个节点只需要承担全网部分工作”,这就会引出几大问题,1.怎么确定这个节点是负责哪个分片的工作?2.哪些交易应该归类到哪些分片当中去?3.每个节点是否只需要储存自己所在分片的交易信息(账本)?

根据以上问题的实现与否,我们可以将分片依次分为三种类型:网络分片,交易分片,状态分片。

网络分片:如何将全网节点划分到不同分片当中去。

交易分片:如何将全网交易划分到不同分片当中去。

状态分片:如何让各个节点只维护各自分片内的账本,但又不影响整个系统的安全性。

主链和分片链的区别和联系?

分片的类型我们已经明白了,那么主链(Main chain)和分片链(shard chain)有什么不同呢?

向左转|向右转

在主链中,我们知道记账的人叫做矿工,账本是存在区块当中,对应到分片链当中,则是Collator校对人和Collation校对块。

类似于区块的构成,Collation校对块也包含Collation header校对头和tansaction list具体的交易信息。

向左转|向右转

对比下来,主链和分片链本身来说,还是大同小异,但是一但要把他们联系起来,问题就变得复杂了,这里我们举个通俗的小例子类比一下:

假设,

以太坊主链=温州银行

每个分片=温州银行分行

比如:

shard1(分片1)=温州银行(杭州分行)

Shard2(分片2)=温州银行(宁波分行)

……

在这个系统中,我们就会清晰看到几大问题:1.各大分行的账本如何汇总到总行里去?2.各大分行的账本如何互联?

对应到主链和分片链系统当中来,则变成了1.分片链和主链如何实现跨链链接?2.分片之间怎么互联?甚至分叉的场景要怎么办?

分片链和主链如何实现跨链链接?

为了将分片链加入到主链中,在主链上需要有一个叫做验证人管理员合约(Validator Manager Contract)VMC的特殊合约。VMC具体是这样的:

向左转|向右转

所有的验证人把它们的保证金(stake)存入 VMC当中,这些验证人就会被收录在VMC的common validator pool验证人备选池中。系统将会“隔一段时间”根据stake权益的多少随机为每个分片抽取一名验证人,将各个分片的collation header校对头信息同步到主链中去。

这里的“隔一段时间”,我们需要额外解释一下:“时间”,也叫period周期,这到底是怎么确定的呢?答案是主要看开发人员在最终代码中的实现为准,比如说我们把周期定为5个区块,那么就意味着主链出5个区块,所有分片链分别出一个collation校对块,这就间接决定了分片链的出块时间。

这种随机的形式,使得验证者无法提前预测他们何时会成为验证者,也无法预测会成为哪个分片的验证人,从而预防作恶的可能性。

如果一旦发现我们的分片验证人作恶了,他的stake权益就会被剥夺。

跨分片通信(cross-shard communication)怎么办?

比如说一个转账方小A在分片M中,收款方小B在分片N中,小A可以通过主链这个桥梁,完成扣款操作,并创建一个带有ID的 receipt收据,代表着“自己已经完成了扣款操作”,收款方小B可以根据这个 receipt ID 创建一个receipt-consuming收据消费交易,“消费”成功了之后,收款也就成功了。

向左转|向右转

分片链分叉了怎么办?(fork choice rule)

在以往的分叉情况中,都是“以最长链为主链”,在分片当中,分叉规则是“以最长主链里面的最长分片链为有效分片链(the longest valid shard chain within the longest valid main chain)”。

什么意思呢?我们举个例子:

一条主链出现了分叉,一条分叉连续跟了两个区块,同时也跟了两个Collation校对块,另一条则是一个区块和一个校对块,那么很明显,第一条是有效链。

向左转|向右转

接下来,第二条链又加了一个区块,变成两个区块和一个Collation校对块,依然很明显,第一条链仍然是有效链:

向左转|向右转

接下来,第一条链上又加了一个区块,虽然这条链上只有一个Collation校对块,但是它的主链长度已经超过了第一条,那么第二条则成为了现在的有效链,这就是分片场景下的分叉规则,首先比较主链长度,再比较分片链长度!

向左转|向右转

以太坊分片的实现是一个漫长的过程,就连Vitalik自己也说将会分阶段来逐步实现,分片到底能不能从理论走向实践,我们还是小小期待一下吧。

参考资料:

https://github.com/ethereum/sharding/blob/develop/docs/doc.md

https://www.8btc.com/article/348469

https://ethfans.org/posts/ethereum-sharding-and-finality

http://www.qukuaiwang.com.cn/news/11390.html



分片技术其实并不是什么新概念,起初是针对大型中心数据库提出的优化方案,具体来说就是将大型数据库中的数据划按照某种规则分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。

这个文章里面讲的很详细,可以参考:分片(Sharding):以太坊太慢,“盘”他!喵懂区块链还是很靠谱的科普视频,可以看看

我们举一个通俗的小例子:

比如我们平时经常使用的美团,滴滴打车等软件,就可以按照“城市”来进行分片,由于不同城市的数据不需要互通,就可以将不同城市的数据存放在不同数据库中,这样既可以把数据库服务器部署到离对应城市最近的节点上,还可以提高访问速度,何乐而不为呢?!

从上面的例子中,我大家应该对分片的概念有了初步了解,那么对应到区块链场景中来说,分片又是怎么样的呢?

以以太坊分片为例,在原有的单链系统中,公链整体的性能取决于单个节点的性能,进行分片之后,每个节点只需要承当全网部分工作,各个分片并行工作,按照Vitalik的话来说,each shard is like a separate galaxy每个分片都像是独立的小宇宙,这样效率自然噌噌噌提升!原本以太坊链全网TPS约为20,现在若增加到100个分片,那么全网TPS可以提升至2000,同理,全网容量也将提升至原来的100倍。

“每个节点只需要承担全网部分工作”,这就会引出几大问题,1.怎么确定这个节点是负责哪个分片的工作?2.哪些交易应该归类到哪些分片当中去?3.每个节点是否只需要储存自己所在分片的交易信息(账本)?

根据以上问题的实现与否,我们可以将分片依次分为三种类型:网络分片,交易分片,状态分片。

网络分片:如何将全网节点划分到不同分片当中去。

交易分片:如何将全网交易划分到不同分片当中去。

状态分片:如何让各个节点只维护各自分片内的账本,但又不影响整个系统的安全性。



分片技术:
互联网协议允许IP分片,这样的话,当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输。RFC 1191描述了“路径MTU发现”,该技术用于确定两台IP主机间的路径MTU,这样就可以避免IP分片。在Internet协议IPv4版本和较新的IPv6版本中,分片机制的细节和分片机制的整体框架是有所不同的。
链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。[1]
详细介绍
分片(sharding)是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。碎片这个词意思就是整体的一小部分。
Jason Tee表示:“简言之,分片(sharding)数据库需要将数据库(database)分成多个没有共同点的小型数据库,且它们可以跨多台服务器传播。”
技术上来说,分片(sharding)是水平分区的同义词。在实际操作中,这个术语常用来表示让一个大型数据库更易于管理的所有数据库分区。
分片(sharding)的核心理念基于一个想法:数据库大小以及数据库上每单元时间内的交易数呈线型增长,查询数据库的响应时间(response time)以指数方式增长。
另外,在一个地方创建和维护一个大型数据库的成本会成指数增长,因为数据库将需要高端的计算机。相反地,数据碎片可以分布到大量便宜得多的商用服务器上。就硬件和软件要求而言,数据碎片相对来说没什么限制。

通俗点跟你讲,如果以太坊区块链是一整块面包,那么分片就是把这个面包分成若干片。这个面包上的节点也会被划分到不同的片上。这可以提高数据库的读写效率,突破单一服务器的性能瓶颈。在区块链里,分片也是将数据划分成若干部分,交给不同的群组处理。每个群组都被称为一个「分片」。以太坊、夸克链、zil、Penta等都有自己的分片技术。

用来扩大效率的

分片技术是什么?~

分片技术是开发人员用来提高交易吞吐量的几种常见方法之一。简单地说,分片就是一种在点对点网络中分割计算能力和存储工作负载的分区方式,分片后每个节点不再需要负责处理整个网络的交易负载,而仅需处理其所在分区(或称分片)中的交易。与当前的区块链相同,分片中包含的信息也是由多个节点共同维护的,从而保证了账本的去中心化和安全性,启用分片后每个人仍然可以看到账本中的所有信息,只不过人们不再需要处理和存储所有的信息。

以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

IP分片技术的产生原因
答:以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净...

IP分片技术的技术信息
答:IP首部包含了分片和重组所需的信息:+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |R|DF|MF| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|...

分组分片是什么意思?
答:分组分片主要应用在需要传输大文件的场合。例如,在进行文件传输、视频流媒体传输等活动时,这种策略可以让网络更加高效地运行。此外,在网络质量较差的环境下,分组分片策略可以保证数据传输的成功和完整性。因此,许多通信协议都采用了分组分片的技术。然而,分组分片有时也会导致一些问题。例如,在进行语音...

以太坊是如何解决区块链扩容问题的
答:以太坊采用了一种叫做“分片”的技术来解决它的扩容问题。简单来说,“分片”就是将整个区块链网络划分成多个相互关联但独立的子网络。每个小网络中只包含部分交易和数据,大大降低了整个网络的负载,并且通过更高效的处理和验证交易来加快网络的处理速度。在以太坊的分片技术中,每个子网络有自己的区块链...

广域网加速用了哪些技术?麻烦告诉我
答:目前,企业级用户的广域网传输问题主要来自两方面,即链路与应用。链路问题包括带宽受限、网络时延大、丢包率严重等;应用的问题则集中于大数据量的传输,以及应用自身在广域网环境下的低传输效率。广域网加速设备提供了对以上网络传输和应用交互问题的一整套优化技术。 通过广域网加速产品,用户的分支机构...

最大传输单元的IP分片技术
答:IP首部包含了分片和重组所需的信息:+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |R|DF|MF| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|...

接收端如何判断一个收到的IP数据包的分片情况?
答:IP分片通常发生在网络环境中。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。而传输的报文大小要比1500字节(不包括以太协议的首部和尾部18个字节)大,这个时候就需要利用到分片技术,经分片后才能传输此报文。另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行...

面对海量数据如何快速高效的进行处理
答:分布式计算是处理大规模数据的关键技术之一。它通过将数据和计算任务分布到多个计算节点上,从而实现数据的并行处理。分布式计算系统通常由多台计算机组成,每台计算机都可以处理一部分数据和计算任务。这样一来,不仅可以提高数据处理的速度,还可以实现更高的可扩展性和容错性。2、数据分区和分片 在处理海量...

UC生态渐露锋芒,2022年更新迭代的生态应用将有哪些?
答:前言: UC准备起飞了,重新想象UC『无限可拓展性』现在已经不单是公链的时代了,而UC的各大生态应用相继落地,是否真的能让UC顺利起飞?UC公链技术的高性能是因为采用了Pos证明机制,而他的无限可扩展性是因为采用了分片技术。Pos证明机制的优势不必强调了,过去两年里起飞的BNB Chain、Solana等高性能新兴...

IP数据报重组时,分片顺序由字段提供。
答:根据网络使用技术的不同,每种网络都规定了一个帧最多能够携带的数据量,这一限制称为最大传输单元(Maximum Transmission Unit,MTU)。一个IP数据报的长度只有小于或等于一个网络的MTU时,才能在这个网络中传输。为了解决不同物理网络的最大数据传输单元(MTU)各异的问题,IP互联网采用了分片技术与...