16

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

 4 years ago
source link: https://www.lianyi.com/zixun/1742660
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

分片的基础

通常在数据库世界的扩展中,一致哈希是确定性地将任何数据分配给分片的主要概念之一,分片是数据最终存储的“位置”。 现在说您要在系统中使用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的表面函数(半径/正方形/多边形等)组成。

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

Iv22iuF.jpg!web

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

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

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

位置限制

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

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

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

e6JjQfM.jpg!web

推导式金融分类帐

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

结论

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

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

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

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

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

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


Recommend

  • 48

    README.md vim2hs ⦂ Vim → Haskell "Vim to Haskell": A collection of vimscripts for Haskell development. Features Written from scratch for clean and org...

  • 36
    • www.8btc.com 6 years ago
    • Cache

    DAG技术解析

    DAG(有向无环图)技术是区块链领域的技术热点之一。DAG技术相比于原来的区块+链的数据结构有更快的交易速度以及更强的可扩展性,但由于其技术门槛和开发难度较高,在DAG技术上深耕的项目并不多见。我们希望能通过对具体项目原理的解析向读...

  • 14
    • www.tuicool.com 6 years ago
    • Cache

    D3-dag

    d3-dag Often data sets are hierarchical, but are not in a tree structure, such as genetic data. In these instances d3-hierarchy may not suit your needs, which is why d3-dag (Directed...

  • 24

    专题介绍 2009 年,Spark 诞生于加州大学伯克利分校的 AMP 实验室(the Algorithms, Machines and People lab),并于 2010 年开源。2013 年,Spark 捐献给阿帕奇软件基金会(Apache Software Foundation),并于 20...

  • 10

    最近在做的工作比较需要一个支持任务编排工作流的框架或者平台,这里记录下实现上的一些思路。 任务编排工作流 任务编排是什么意思呢,顾名思义就是可以把"任务"这个原子单位按照自己的方式进行编排,任务之间可能互相依赖。复杂一点的编排之后...

  • 79

    有向无环图 邻接表实现 package main import ( "fmt" "github.com/eapache/queue" ) // 邻接表 type Vertex struct { Key string Parents []*Vertex Children []*Vertex Value interface{} } type DAG struct { Vertexes...

  • 10

    分片(sharding)是以太坊可扩展性的未来,它将是帮助以太坊生态系统每秒支持数千笔交易并允许世界上大部分地区以可承受的成本经常使用该平台的关键。但是,分片也是以太坊生态系统和更广泛的区块链生态系统中很容易被误解的概念之一。分片指的是一组具有非常特...

  • 6

    V神最新文章:分片是以太坊可扩展性的未来 BlockMania 原创 2021-04-10 02:50 热度 245016 分享 微信扫一扫:分享 ...

  • 3

    V神提到的作为以太坊可扩展性未来的分片是什么? # 以太坊 2021-06-13 16:31

  • 6

    为什么 rollups + 数据分片模式将是唯一可持续的高可扩展性解决方案 ETH中文 11 小时前 5.2万 关于 rollups + 数据分片 (以下简称 rads) 的...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK