地理分片DAG用于真正的水平可扩展性

分片的基础

通常在数据库世界的扩展中,一致哈希是确定性地将任何数据分配给分片的主要概念之一,分片是数据最终存储的“位置”。 现在说您要在系统中使用16个分片,然后只需执行Hash(data)mod 16(取一个数字,然后减去16,然后取剩下的值,也称为模数)即可识别要存储信息的位置。 为了知道在哪里找到它,您只需找到一个与hash(IP)mod 16 == Hash(data)mod 16匹配的节点/机器/服务器。通过这种方式,您可以以一种简单的确定性方式知道在哪里可以找到您的数据 。

当存在未知数量的节点想要将数据划分为越来越多的分片时,这种方法就会遇到困难。换句话说,就是进行动态分片。动态确定您的分片会导致网络的所谓重新分配,因为它需要向周围不断发送数据。因此,像Radix之类的DLT解决方案选择了非常大量的分片,并认为分片空间永远不会用完。因此,现在我们只是使用非常大的数量进行调整,但问题是将没有足够的设备像只能使用16个分片那样将所有分片空间1对1填充。这种情况由所谓的哈希环和分布式哈希表处理,因此我们可以在不了解整个网络拓扑的情况下发现邻居的数据。

现在这可以很好地与键值对配合使用,但并非所有数据都是唯一的,也并非只有键值。大多数实际数据,包括分布式分类帐,都是某种形式的链接数据。它是环境的,仅表示环境的某种内容,例如地址的余额是所有事务向其发送内容的结果。仅使用分布式键值存储,它将不得不在分布式哈希表和一致的哈希环中从一个位置弹出到另一个位置,以检索所有这些分组的和相关的数据。如果每个人都需要一直执行此操作,那么这将阻塞所有网络带宽,然后丢失整个分片点。

我要在这里尝试的是分布式链接/相关数据结构的一些基本要求。

1. 根据我们要寻找的数据,我们必须确定它的“位置”

2. 给定一个位置,我们必须知道什么网络地址映射到它。

3. 我们希望相关数据与其关系相对接近。

为了分片DAG但使其相关数据彼此靠近,我们应该让顶点包含位置信息,并且仅包含其“邻近度”内的参考(边)顶点。这种方法的问题在于,如果该空间是虚构的,那么用大量数据填充单个位置就变得很琐碎(例如一致哈希中的分片)。这是因为没有动力去玩得好,并且因为“位置”是任意选择的,不再是其自身的功能(散列)。

为了仍然让顶点选择它们的附着位置,我们需要某种方式限制谁可以这样做。

基于地理位置的分片和网络

现在已经创建了一些环境,让我们直接深入实际的想法。

顶点需要最少的分片设置,还有多个字段是其他目的所必需的,但都被忽略了,例如时间戳。

顶点结构:

Vertex: {    

id: Hash(fields),

location: “gbsuv7ztr”,

vertex_ref_1: “gbsuv7ztq-v1ID”,

vertex_ref_2: “gbsuv7zts-v2ID”,

nodeID: “gbsuv7ztr-nodeID”,

nodeSig: “0xfff88…”,

nonce: 999,

payload: {“whatever your application is”}

}

Location定义为Geohash,即对经纬度GPS空间中小区域的简洁描述,因此它不是固定Location ,而是小区域的描述。只有两个边缘,类似于IOTA的分支和主干。但是这些边的标识符包括其参考的顶点的Location 。

网络节点

此设置中的节点需要标识自己。 NodeID至少由其公钥和Geohash组成,后者可以自由选择,但不能随意选择。该节点的Geohash很重要!

节点可以通过发布一个声明其NodeID的顶点(它是预期的分片范围)来开始附加。分片范围将包含NodeID的潜在邻居,并且由相对于NodeID自己声明的geohash的表面函数(半径/正方形/多边形等)组成。

仅通过使用基于等待时间的多边/三角剖分对节点的位置进行严格测试的其他节点,才可以添加此顶点,如何进行此操作确实需要另一篇文章,但以前对此主题进行过研究。

由于环境条件的限制,与自己的节点相比,可以生成节点位置的置信区域。 一个NodeID的geohash必须位于此置信区域内,其他节点才能接受它。为了保持诚实,这需要继续测试节点。

随着网络吞吐量的增加和更多节点加入网络,此方法的精度会提高。这种方法的结果是,它将激励强大的节点分布并防止Cloudproviders中的节点集群。

节点覆盖的表面积大小将取决于网络的吞吐量及其机器的功能。当顶点吞吐量增加时,将需要加入更多的节点,而现有节点将减少其表面积。

位置限制

一个顶点引用了另外两个顶点。但是为了实现分片,对此还有进一步的限制。 首先:不允许一个节点发布一个顶点,该顶点的位置超出其自身表面积,该最大值可以从DAG的吞吐量和邻近节点得出。

除了一个节点只能在其自声明和经过邻居测试的地理位置内发布顶点外,顶点本身还必须发布位于要引用的顶点所定义的曲面内的位置。如果顶点的给定位置不可用,则节点将需要发布工作量增加的出界顶点,以便网络可以开始包含这些顶点。

通过结合具有可测试的相对位置的NodeID以及对顶点的一些额外限制,我们为每个节点创建了一个分片,可以根据地理位置和资源确定自己的吞吐量。

推导式金融分类帐

如前所述,本文并非要解释金融分类账起作用的其他共识机制。但是请务必注意,如果您具有位置感知的数据结构,则位于其上的财务层也必须是位置感知的。意味着金钱获得了分配给它的位置,几乎就像真实现金一样;

结论

总而言之,这通常允许当前DLT系统没有的有趣属性。

网络拆分不是问题,仅在拆分的实际物理位置可能存在问题。

它允许地理感知共识机制。 就像代币一样,通过共识机制只能在特定城市或地区使用。因此,物理地理围栏的一般概念。

这也将允许具有真正的水平可伸缩性。更多的机器=更多的吞吐量,就像真实对象一样,向数据添加物理位置。

根据国家《 关于防范代币发行融资风险的公告 》,大家应警惕代币发行融资与交易的风险隐患。

本文来自 LIANYI 转载,不代表链一财经立场,转载请联系原作者。