Arweave的出块原理

一、Arweave 关键技术

1.1数据结构:Blockweave 区块纺

区块坊中包括区块哈希列表和钱包列表。拥有区块哈希列表使旧区块可以被请求/验证,拥有钱包列表可以验证新交易,而无需处理钱包上一次交易所在的区块。区块哈希列表和钱包列表由矿工保持更新,并在挖矿和验证新区块时通过网络进行同步。这减少了矿工进入网络的障碍:存在空间、算力、时间,使得区块纺能够拓展到任何单个矿工都无力提供的容量。

纺式结构: Arweave的数据结构并不是严格的单链列表而是复杂一点的图结构,结构中每个区块一共与三个区块相关,当前块的前一个和后一个块以及随机的指向一个之前的块称为回忆区块(recall block/recall chunk),由此构成区块纺。回忆区块是根据前一个块的哈希和高度确定的,密码学原理保证了回忆区块在选定时既有确定又不可预测。
在这里插入图片描述

在这里插入图片描述

图2:"链"和"纺"数据结构

上图为传统区块链数据结构,下图为区块纺数据结构。

**节点要求:**不需要矿工存储所有先前的块。处理新块和新交易所需的所有数据都存在于每个块的状态中,矿工加入网络只需要保存新块及其回忆区块。在Arweave网络中不存在存在全节点和轻节点概念,只有或多或少的下载了区块坊的客户端。使用Arweave完全同步既不是风险也不是义务,而是矿工获得更多奖励的可选升级途径。

**内容存储:**区块纺中的区块直接存储了数据信息,可以从Arweave区块浏览器直接看到存储内容而不是一串代码。

优势:

Blockweave实际上是分片的,性能可扩展性极强,与其他存储链相比,Arweave可以将TPS提高很多倍,并显著降低长期存储成本

  1. 分片:将区块链网络划分成若干个子网络(或称分片,shard),每一个子网络都会包含一部分节点,网络中的资料储存与交易,会被随机分配到各个分片中做处理。如此一来,每个节点只需要处理一小部份的工作,且不同分片上的交易可以并行处理,网络的交易速度便能因此获得提升。
  2. Blockweave纺状数据结构的设计,矿工无需复制全部数据,降低了门槛,直接存储数据也更方便用户读取。

1.2 共识机制:SPoRA 简洁随机访问证明

PoA=PoW+访问证明:访问证明(PoA)作为工作证明(PoW)的增强版,将整个回忆块数据都包含在哈希运算的输入中,结果作为工作量证明的输入。PoA采用概率和激励驱动的方法来最大化网络中任何数据的冗余副本数量,推动矿工在网络中制作尽量多的数据冗余副本

PoA鼓励了存储:因为矿工需要访问区块纺历史上的随机块才能开采新块并获得挖矿奖励,因此PoA鼓励了矿工存储回忆块(保证历史区块的多点备份)

PoA鼓励矿工更愿意存储“稀有区块”:当稀有区块被选定为回忆块时,拥有它的矿工能在更小竞争的情况下竞猜PoW谜题,争夺相同级别的奖励。(稀有区块是指容易副本较少的区块)

  1. 矿工出块概率 = 拥有随机回忆区块概率 * 第一个找到Hash的概率
  2. PoA算法允许通过调节难度来调解网络中的出块速度。难度越大,计算周期越久,出块速度就越慢。如果网络中区块的生成速率超过目标频率,则未来用于区块生成的PoA谜题的难度就会增加。反之亦然

PoA存在的问题:缺乏对快速检索数据的激励、耗能

缺乏对快速检索数据的激励:PoA只能保证永久存储,不能保证访问速度。在数据检索方面没有竞争优势的情况下,矿工们找到一个机会,可以通过使用远程存储池中获益,而不是维护单独的、去中心化的节点。但是这会由于距离等因素降低网络访问速度

耗能:PoA作为PoW机制的一种升级,要求区块包含对网络上过去数据的引用结合的共识机制,因此也会出现证明工作量而产生大量消耗能源问题

SPoRA:2021年2月24日在区块高度为633720处,Arweave的共识机制完成了从PoW(PoA)到SPoRA的升级。此次升级首先是挖矿盈利能力与数据访问速度保持一致,其次减少了维护网络所需的能源

根据blockweave对节点的要求,开采或验证新块,节点必须存有该块的回忆块。证明矿工能够访问回忆块是构造新块工作的一部分(另一方面,验证次证明是验证新区块工作的一部分)。因此,Arweave采用访问证明(Proof of Access)作为共识机制,后来采用PoA的改进版SPoRA(Succint proofs of Random Access)机制

SPoRA相较于PoA的改进:通过SPoRA保证数据永久存储、均衡出块、高速访问以及去中心化

  • 挖矿盈利能力与数据访问速度保持一致:SPoRA降低了之前矿工出块概率的权重,加入了对数据访问速度的考量。SPoRA通过抑制CPU之间的资源池创建了一个更加去中心化和高效的区块编织,让矿工专注于维护本地硬件和节点,实现地理位置多样化以及去中心化,以此来激励矿工更高效、更迅速地复制数据。(保存数据的维护成本由用户的存储费用提供)

  • 减少维护网络所需的能源:SPoRA的架构需要更少的能源来维护,不仅可以降低矿工的开销,而且可以使整个系统更清洁、更高效。此外,在Arweave SPoRA网络上挖掘所消耗的能源用于数据存储和检索。实现了资源支出和效用之间的结合。(通过存储和检索数据挖矿)

SPoRA简洁随机访问证明:https://arweave.medium.com/the-arweave-network-is-now-running-succinct-random-proofs-of-access-spora-e2732cbcbb46

二、Arweave 协议机制

2.1 调节区块生成速率

为了调节网络中的区块生成速率,访问证明(PoA)算法允许可变的难度设置。具有较高难度PoA挑战需要更长时间来计算。 “ 难度”是一个网络统计信息,包含在每个模块中。 而难度取决于网络中区块的生成速率,超过目标速率会增加,低于目标速率会降低。通过这种方式,去中心化网络中的矿工网络能够调节区块生成速率,而与网络中节点的数量以及可用于解决PoA谜题的算力和存储空间无关。

2.2 矿工利益主导策略

节点在挖矿方面的主导策略是能最大化挖矿收益。而每个区块挖矿奖励很大程度上不在矿工的控制范围之内,因此收益策略就变成了如何成为第一个挖到新区块,并要抢在其他节点在相同高度开采到新区块之前。节点可以参与开采区块的概率等于节点存储了新区块的回忆块的概率,实质就是上就是节点存储的块占总区块的比例。也可以理解为节点第一个开采到区块的概率是该节点的哈希能力相对于所有其他也拥有回忆块的节点的总哈希算力比值。

在这里插入图片描述

公式2:首个挖到新区块的概率

P(has recall block) = 本地保存的区块数量 / 区块高度

P(finds hash first) = 本地哈希算力 / 全网哈希算力

在这里插入图片描述

2.3 开采和传播新区块

自适应互动激励代理(AIIA)元博弈中的社交等级将直接影响节点接收新区块和交易的延迟,甚至是否能收到它们。社交等级低的节点往往会比其他节点更晚接收信息,并且可能接不到所有信息。最终,低社交等级的节点有被网络完全排斥的风险。如果节点未接收到区块和交易信息,就无法有效地挖矿。因此,合理的对等评分是Arweave挖矿的基本前提条件。

在这里插入图片描述

图6:挖矿的条件

**块构建过程 :**挖矿节点有两个交易池——等待池和开采池。当新交易到达时,将由节点验证并使用节点的内容策略进行扫描。一旦该节点有较大的把握认为其他节点也已接收到该交易,则把交易从等待池移至开采池。一旦节点开采了一个区块并被网络接受,该区块内的交易将从开采池中删除。在协议层面,分叉恢复可能导致交易从被放弃的区块重新进入开采池。 新块的区块数据段(BDS)是以下各项的哈希:

  1. 上一块的独立哈希。
  2. 回忆块的全部内容。
  3. 候选区块的交易和其他元数据。

在Arweave的工作量证明中,BDS充当了“谜题”。 下图显示了前一个块的信息、回忆块和交易信息如何并入BDS和新的候选块。 新块包含重建BDS和验证工作量证明所需的所有信息,除了回忆块是节点必须已经保有的。

在这里插入图片描述

图7:从前一块、回忆块和交易构建新块

生成新的候选块有五个步骤:

  • 第一步——组装相关元数据 :每个节点都在其状态(或等效地,在当前块中)中保有当前块哈希表(BHL)和当前区块高度,当前块的独立哈希值模除当前区块高度得到回忆块的高度。

在这里插入图片描述

公式3:回忆块的高度计算公式

此高度将在(0-当前块高度)范围内。这排除了当前块充当回忆块的可能性。因此,回忆块必然是区块纺历史上的一个区块,并且始终需要两个不同的区块才能开采新区块,矿工们无法提前预测需要哪个回忆块才能开采下一个块,而矿工参与某一轮次访问证明(PoA)哈希竞猜的概率,等于它保存的区块历史的比例。

  • 第二步——获取和维护交易集: 节点在开采新块时,必须从被验证的交易中根据策略选择打包。当交易第一次到达节点时,经过单独验证后再其转移进等待池。在适当的等待时间之后,等待池中交易的一个子集(可能是全集)被选进开采池,在这里把这些交易作为一组进行验证。组中的所有交易都必须能在当前的网络状态和钱包列表上正常执行。

  • 第三步——生成块数据段: 回忆块(包括其中的交易及数据)被包含进新的块数据段(BDS)中。因此,要使用正确的回忆块生成BDS,从而通过验证。这构成了矿工在PoW挑战阶段可以访问到回忆块的证明。

  • 第四步——找到有效的Nonce: 矿工还必须尝试找一个Nonce随机数,以产生满足难度要求的的新块哈希,找到的Nonce被包括进新块数据结构作为工作量证明(Arweave协议中使用的挖矿算法是RandomX)。

  • **第五步——散播候选块:**区块被打包并按照排名的优先级散播给对等方,节点的候选块先于其他候选块被网络接受则获得开采奖励。

激励: 节点开采一个新区块获得的总奖励包括立即获得的交易费奖励、增发奖励还可能有一小笔存储基金。大部分交易费不会直接给矿工而是进入存储基金。奖励不是通过特殊交易支付给矿工,而是直接扣减存储基金并更新钱包列表。更新的存储基金和钱包列表会被集成进新的BDS和新区块。

推论: 网络对新区块的接受事实上也是对奖励的接受。对矿工的报酬是特定分叉状态的一部分。如果在分叉恢复期间某些区块被拒绝,则这些区块的挖矿奖励也将失效。

2.4 接收、验证和传播交易区块

在操作过程中,节点会从数据分发网络中的其他矿工或专用对等节点 (区块纺浏览器节点)接收到区块。接收节点需要尽快验证并接受该块,以便跟上网络共识并继续有效地挖矿。及时区块散播是避免分叉的一部分,节点必须确保其接受的块也被其对等节点接受。

至关重要的是,为了使向其他对等节点散播区块之前的区块初步验证速度快(增加区块共识时间,也就增加了分叉风险。),区块影中的工作证明可以独立于其他块进行验证。这避免了从区块影构造出完整区块并校验BSD的必要性,否则这会成为一个拒绝服务攻击漏洞。在将接收到的块散播给对等方之前,必须进行以下步骤的初步验证:

  1. 确保区块影结构格式正确;
  2. 确认该块是否已被处理(通过检查其BDS);
  3. 确保该块中引用的每个交易的完整副本都存在于本地交易池中;
  4. 验证传入块的BDS和Nonce组合是否满足网络当前的难度要求;
  5. 验证传入块的时间戳是在前一个块的可接受边界内(时间只允许增加);

如果初步验证通过,从区块影生成出完整区块,并且将区块影在核心验证步骤之前进行散播。 接下来在该块被本地节点接受之前,必须先执行核心验证步骤:

  1. 从该区块生成BDS,与区块影提供的BDS进行校验;
  2. 给定新块交易和时间戳,验证新块中包含的区块纺元数据(例如钱包列表、块哈希列表、区块纺尺寸等)是上一个块提供的元数据的合法更新。

2.5 接收和响应请求

节点在挖矿的各个阶段都需要向对等方请求信息,包括第一次加入网络与对等方同步, 以及需要访问回忆块以验证新块时。为了高效地分配稀缺的出口带宽,节点根据对等方它们响应请求的速度等对其进行排名。通过AIIA元博弈对节点进行激励,以迅速准确地响应信息请求,从而从网络对等节点取得好的排名。除挖矿节点外,网络的其他用户也发送信息请求,包括但不限于对交易数据的请求。这些请求不一定会影响节点的AIIA评分,但是在没有特殊努力的前提下,无法把它们与对等节点的请求区分开来。

2.6 抗分叉和恢复

分叉会给单个节点和整个网络带来风险。理想行为首先包括避免分叉,还有尽快恢复到最佳分叉。 网络中出现分支的潜在原因之一是传播延迟。在Arweave中AIIA元博弈代理鼓励通过野火机制即时传播,因此节点被鼓励在最小验证成功完成后尽快散播区块和交易。

节点将对数据执行严格的“边缘”验证,以保护网络免受攻击,然后传播这些数据。节点被激励在此阶段完成一些验证,因为传播无效数据可能会对排名产生负面影响。类似地,节点被激励快速开采区块,以最大化获得挖矿奖励的可能性,还要尽快传播第一个有效的新候选块,如果节点接受一个新块,则它希望其他节点也接受该同块。

但是分叉是不可避免的,并且当发生时,节点必须能够有效地评估它是否在主分叉上。如果不是,则需要立即恢复到主分叉。Arweave分叉选择规则类似于传统的区块链协议。 每个块都包含一个“积累难度”字段,该字段代表区块纺进入特定分支直到该块之前的工作量。节点可以立即将自己的当前块与收到的块进行比较,以评估收到的块:

  • 有效可接受则传播;
  • 无效或者陈旧,应予以忽略;
  • 分叉选择的证据,发生在收到的块具比节点的当前块有更大的累积难度,而且收到的块并不是当前块的后代。

当发现一个更优分叉块,节点请求得到从分叉点之后的全部块。逐一对它们进行验证 (参见图6)。 在图6中,下面一条线的当前区块高度是39,当前块的累积难度为421。它接收的块高度为41,累积难度为529。接收的块能通过验证,可能预示着存在优选分叉。节点从新的高度41块开始上溯(从每个块依次获取“前一块”字段),直到到达自身历史记录中的一个块(即在节点自己的块哈希列表中)。在图中,在高度38处发现了分叉点(步骤1、2和3)。 这条新线成为节点的优选分叉,并采用累积难度为529的块作为当前块(步骤4)。 现在高度39累积难度421的块无效,如果该块中的交易不在优选分叉的三个最新块之中 ,则丢弃。

在这里插入图片描述

图8:具有累计难度的分叉

当节点收到比其已知的前一块还要晚两个或更多的新候选块时,意味着网络中存在分叉。该节点必须立即采取行动,通过评估分叉的积累难度,确认分叉中哪一个已经被最多的对等方接受。每个块数据结构中提供的“累积难度”,是封装在区块纺分叉中的访问证明工作量的代理表示。在分叉中,优先选择产生了较高累积难度的路径。

当收到有更高累积难度的新块,节点将把新块作为首选分支,并通过分叉的区块哈希列表追溯到与其自身历史的分叉点。一旦分叉点这个共同块被找到,便会评估验证分叉所需的交易和区块。如果发现分叉中从分叉点到接收块的全部块都是合法的,并且当验证结束时它仍然是具有最大累积难度的分叉,则节点的上下文将切换到此分叉。

2.7 去中心化策略

通过三个相关但不同的机制来实现矿工对系统中内容的提出意见:

  1. 对内容进入区块纺中进行民主投票的过程;
  2. 每个节点选择在其计算机上存储什么内容的能力;
  3. 网关节点过滤用户所访问的区块纺数据的能力;

节点通过内容策略表达对内容的偏好。内容策略是可以在交易上执行的任意计算,以决定交易是否为本地节点所接受。在Arweave中支持子字符串匹配和交易数据哈希匹配两种形式的内容策略。其他协议实现可以利用它们自己的内容策略机制。

投票阶段:当交易被分发到网络,每个节点根据自己的内容策略对其进行扫描。如果交易包含内容策略禁止的内容,则该交易不会被接受到该节点的交易池中,也不会散播给其他对等方。 当收到的新区块包含存疑交易会被直接丢弃,如果其他节点未丢弃则会出现分叉。在分叉过程中,拒绝与接受交易的节点“竞争”产生下一个区块,直到新区块产生并确认,另一个派的节点将分叉恢复,然后从临时内存中删除有问题的交易。通过这种方式让网络保持共识,

存储阶段:在节点投票接受数据进入网络之后,区块纺的访问证明机制中内嵌了数据存储的激励。 当新的参与者加入网络,他们会扫描并下载符合其内容策略的交易,回避他们不希望存储的交易。 当节点操作员更改内容策略,他们可以重新扫描本地存储,删除违反新策略的内容。

激励:激励措施迫使矿工在过度宽松和过度拒绝之间取得平衡。去中心化内容策略机制产生了两个互补的激励:

  1. 激励不要过度狂热地拒绝太多交易,这会减少挖矿奖励;
  2. 激励拒绝被网络大多数节点拒绝的交易,因为包含这些交易的候选区块会被网络其余部分忽略。

折中:去中心化内容策略机制会导致交易的结算时间增加了一个区块周期。交易被打包进区块,并不意味着该交易将被整个网络接受。因为最终一致共识机制,这个额外的区块确认期不会显著地改变系统的用户体验。 如果内容策略导致当前回忆块的副本数太少,节点还可以选择丢弃网络的最后区块并重新开采它,以重新决定回忆块。重新开采区块的超时时间并不在协议级别强制决定。然而越多算力被应用开采先前的块,头块被重采的可能性就越高。

网关:网关也将这种内容策略机制应用于索引已经存储在网络中的数据。网关仅索引遵循其自己的内容策略的内容。因此用户可以通过选择不同内容策略的网关,决定他们看到什么类型的网络内容。 此外,这些机制解决了应用开发者从其平台中删除或审查内容的问题。尽管用户可以选择自己看到的内容,但他们不能强行禁止其他人查看区块纺上的内容,因为每个人都可以平等选择网关(对应内容策略)来查看区块纺。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5672.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寒假刷题记录

4968. 互质数的个数 - AcWing题库 涉及&#xff1a;快速幂&#xff0c;欧拉函数&#xff0c;分解质因数 #include <bits/stdc.h> #define fi first #define se second #define endl \n #define pb push_backusing namespace std; using LL long long;const int mod 9…

免费下载 | 2024中国智算中心产业发展白皮书

以下是《2024中国智算中心产业发展白皮书》的核心内容整理&#xff1a; 一、智算中心产业发展背景及内涵 背景&#xff1a;智算中心作为新型基础设施&#xff0c;是数字经济的重要支撑&#xff0c;随着人工智能技术的快速发展&#xff0c;智算中心的需求日益增长。 内涵&#…

爬虫基础之爬取某站视频

目标网址:为了1/4螺口买小米SU7&#xff0c;开了一个月&#xff0c;它值吗&#xff1f;_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…

软件测试入门—用例设计中的场景图和状态迁移图

在软件测试领域&#xff0c;用例设计是一项至关重要的工作&#xff0c;它直接关系到软件质量的高低。而场景图和状态迁移图作为用例设计中的两种有效工具&#xff0c;能够帮助测试人员更全面、系统地设计测试用例。下面我们就来深入了解一下这两种图。 一、场景图 场景图主要…

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程&#xff1a;当事件比较简单的时候&#xff0c;利用面向过程&#xff0c;注重的是事件的具体的步骤/过程&#xff0c;注重的是过程中的具体的行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。 面向对象&#xff1a;注重找“参与者…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试&#xff08;HTTP和HTTPS&#xff09; HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头&#xff08;Request Headers&#xff09;示例请求标头 响应标头&#xff08;Response Header…

顺序表和链表(详解)

线性表 线性表&#xff08; linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。…

初阶5 排序

本章重点 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 1.排序的概念 排序: 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中&#xff0…

Flink底层架构与运行流程

这张图展示了Flink程序的架构和运行流程。 主要组件及功能&#xff1a; Flink Program&#xff08;Flink程序&#xff09;&#xff1a; 包含Program code&#xff08;程序代码&#xff09;&#xff0c;这是用户编写的业务逻辑代码。经过Optimizer / Graph Builder&#xff08…

MyBatis和JPA区别详解

文章目录 MyBatis和JPA区别详解一、引言二、设计理念与使用方式1、MyBatis&#xff1a;半自动化的ORM框架1.1、代码示例 2、JPA&#xff1a;全自动的ORM框架2.1、代码示例 三、性能优化与适用场景1、MyBatis&#xff1a;灵活的SQL控制1.1、适用场景 2、JPA&#xff1a;开发效率…

计算机视觉——Intel RealSense D435的使用及python环境下的实现

什么是深度相机&#xff0c;以及深度相机的分类和工作原理 ​ 深度相机是一种能够捕捉场景中物体的深度信息&#xff08;即物体与相机之间的距离&#xff09;的设备。与传统的二维相机不同&#xff0c;深度相机除了拍摄图像的颜色和亮度外&#xff0c;还能生成一个关于场景中每…

Servlet快速入门

Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪&#xff0c;这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知&#xff0c;有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…

windows平台intel-vpl编译

需要先在本机编译好opencl库 git clone --recursive https://github.com/KhronosGroup/OpenCL-SDK.git cmake -A x64 -T v143 -D OPENCL_SDK_BUILD_OPENGL_SAMPLESOFF -B OpenCL-SDK\build -S OpenCL-SDKcmake --build OpenCL-SDK\build --config Releasecmake --install O…

MTK MT6890:LCD ST7789P3驱动移植调试

一、功能简述 LK阶段:开机logo、关机充电动画 Kernel阶段:开机logo、GUI用户交互界面 二、硬件连接及器件选型 ST7789P3 240RGB * 320 dot 262K Color TFT屏 SPI-II型panel ST7789P3接主控MT6890平台的DBI-C接口 SPI-II型读时序: 写时序: GPIO206: DISP_PWM (Func1) …

Vscode配置continue运行ollama部署的Qwen2.5

Vscode配置continue运行ollama部署的Qwen2.5 1.安装Continue插件 离线安装Continue访问下面网址下载插件&#xff1a;continue插件下载地址 将continue窗口迁右边&#xff08;根据个人习惯&#xff0c;可选&#xff09; 点击Continue图标会出CONTINUE窗口&#xff0c;鼠标选…

62,【2】 BUUCTF WEB [强网杯 2019]Upload1

进入靶场 此处考点不是SQL&#xff0c;就正常注册并登录进去 先随便传一个 进行目录扫描&#xff0c;我先用爆破代替 先随便后面写个文件名 为了提供payload位置 www.tar.gz真的存在 返回浏览器修改url就自动下载了 看到tp5,应该是ThinkPHP5框架 参考此博客的思路方法c[强网杯…

SpringCloud微服务Gateway网关简单集成Sentinel

Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制、熔断降级组件。Sentinel以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助保护服务的稳定性。 官方文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html …

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态&#xff0c;如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

U3D的.Net学习

Mono&#xff1a;这是 Unity 最初采用的方式&#xff0c;它将 C# 代码编译为中间语言 (IL)&#xff0c;然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP&#xff1a;这是一种较新的方法&#xff0c;它会将 C# 代码先编译为 C 代码&#xff0c;再由 C 编译器…

2024年博客之星主题创作|2024年度感想与新技术Redis学习

Redis工具深入了解 1.引言与感想2.Redis工具了解2.分布式系统了解2.1单机架构2.2分布式是什么2.3应用服务和数据库服务分离2.4引入更多的应用服务器2.5理解负载均衡器2.6数据库读写分离2.7引入缓存2.8数据库分库分表2.9引入微服务2.10分布式系统小结 1.引言与感想 2024学习了很…