4001-388-378 market@fireflyblock.com
首页 > 新闻资讯

萤火虫矿机 | 史诗级里程碑!IPFS协议实验室向世界发布Testground v0.5

2020/5/9 14:59:20
测试点对点(P2P)系统非常困难,可靠而重复的测试更加困难。今天,我们正式宣布启动Testground v0.5(试验场v0.5版本)。对于我们和整个p2p生态系统来说,这都是一个巨大的里程碑。
2.png
如果你看了IPFS v0.5.0版本公告(萤火虫矿机 | IPFS技术进展:迄今为止最大的IPFS升级,那么你肯定已知悉Testground试验场有关的信息。
这是是我们工程工作的重要组成部分,并且在质量、速度和可靠性方面均有很大改进。没有Testground,我们将无法进行大规模测试,来验证v0.5.0中DHT和Bitswap的改动。
Testground在评估我们最新的libp2p gossipsub 1.1安全扩展时也是必不可少的。它允许我们模拟一系列的攻击,超过10k的实例集群,包含sybils和诚实节点,用pubsub消息攻击网络,记录每一个事件以供以后分析和比较(预计很快会有报告)。
建立有顶尖安全性的网络和系统,所需要的坚如磐石的测试平台。
作为Testground从IPFS项目的孵化的毕业生,我们已经做跑腿的大量包装Testground,使其对分布式系统和P2P社区简单旗开得胜。
我们希望它为我们(作为一个社区)为分散的未来设计p2p和分布式系统的方式带来巨大的飞跃。
什么是Testground试验场?


Testground是一个进行大规模测试、基准测试和模拟分布式和p2p系统的平台。它被设计为多语言且与运行时无关,可根据需要从2个实例优雅扩展到10k个实例。

3.png

Testground旨在支持各种测试工作流程,例如实验性/迭代开发、A/B测试、向后/向前兼容性测试、互操作性测试和CI工作流程。
在Testground之前,分布式测试曾经暗示着部署守护进程。您将通过API公开每个单独的内部组件,方法和配置参数,并通过充当伪装者的外部脚本来命令和控制它们。
但是在Testground中,编写测试计划就像编写单元测试一样。
我们听说,Testground方法对开发人员而言非常自然。为什么?因为测试计划直接调用您的内部API,并且它们利用分布式同步API与参与测试运行的其他实例进行协调。因此,测试用例变成遵循精确编排的分布式状态机。
目前,您可以在Go中编写测试计划但是为另一种语言/运行时实现Testground SDK实在是太简单了!实际上,该社区正在利用针对节点和浏览器的TypeScript SDK。
4.png
由于真正的分散式系统受网络状况的影响,因此Testground可以通过翻转连接,在运行时更改IP地址或设置延迟,抖动,带宽等来影响网络流量。
而且,由于并非所有测试方案都需要数千个实例,因此您可以在本地将测试计划作为可执行文件或Docker容器运行,从而在需要扩展到约300个以上实例时节省了诉诸集群部署的开销,时间和成本。对于较大的情况,Testground开箱即用地支持Kubernetes。
为了说明上述内容,请考虑一个200实例的测试运行。使用Kubernetes,可能需要1-2分钟才能将Docker映像运送到远程注册表,安排Kubernetes作业并等待工作负载开始。
使用本地Docker运行程序,该开销为零,并且运行是立即的。听起来似乎并不多,但是开发人员知道由于一千次削减(或上下文切换)而导致的死亡,这种延迟对一个人的生产力和工作流程造成了影响。
最重要的是观察管道(实验性的)。测试计划可以记录系统的原始数据点或汇总指标(直方图、EWMA等),也可以发出任意的输出资产。试验场平台将收获它们并将其用于一站式收集。
架构图,侧重于测试计划的输入和输出,突出了可观察性管道的电路。
5.png
开始运行


6.png

1.前往我们的文档入门部分。(https://docs.testground.ai/getting-started)
2.通读试验场背后的概念和架构。(https://docs.testground.ai/concepts-and-architecture)
3.确保在GitHub上查看testground/testground repo。(https://github.com/testground/testground)
4.查看一些示例测试。(https://github.com/testground/testground/tree/master/plans)
5.探索Testground SDK的参考godocs,将使用这个库来编写Testground测试计划。(https://pkg.go.dev/github.com/testground/sdk-go?tab=overview)

接下来会发生了什么?


Testground团队每两周进行一次灵活的冲刺。

在接下来的几周中,我们计划通过扩大整个代码库的测试覆盖率来巩固Testground的基础。我们亲切地称此阶段为“测试试验场

在该sprint的尾端,我们将生成v0.7的Testground Core,它将用作我们计划开发的下一个功能的管道:

· 分时群集部署。

· 与GitHub紧密集成(以便开发人员可以@mention Testground并自动测试其PR)。

· 更好的基于矩阵的形式以可视化测试运行结果。

不用说,欢迎您随时介入!继续阅读以了解操作方法。


7.png

加入我们


Testground是一个开放的社区,我们所做的所有工作都是公开的。要了解团队在做什么,可以查看ZenHub面板,并检查各个里程碑的范围和进度。

如果你愿意帮助编写一些代码,请查看标有“good first issue”的问题,或者在GitHub问题跟踪器上提出问题。团队会很乐意听到大家如何在项目中使用试验场通过Twitter @run_testground联系我们!
Testground诞生背景

几个月以来,我们(IPFS和libp2p核心团队)一直在设计和讨论想法,以提高DHT的性能,保护我们的pubsub协议并加快内容传输。

多数讨论导致了实质性的重新设计提案,最终又回到了百万美元的问题:

我们如何在不影响实时网络的情况下进行测试?

libp2p和IPFS项目的工程师倾向于采用科学方法。

这是我们的DNA。我们阐明假设,收集证据,提出假设,对设计进行推测,并通过基准测试和量化其对系统的影响来对建议的更改进行迭代。

提出和合并影响核心子系统的请求请求并不是一件容易的事。我们努力采取坚实的步骤。不幸的是,我们缺乏能够做到这一点的工具,这正在减缓我们的进展。我们知道,它燃烧了。

合并看似健全的补丁并引起副作用或退化的风险正在恶化。

微观级别的单元测试和基准测试不足以预测或预测宏观级别的分散式结构化或非结构化网络(在复杂的网络拓扑中有成千上万个节点)的突发行为的变化。

8.webp.jpg
我们需要具备以下能力:

▶在数千个节点的专用网络上启动测试工作负载。

▶行使任意的提交或分支以获取有关其行为的指标。

▶对变更集A和B进行迭代,启动相同的测试计划,以将结果与基准进行比较。

▶衡量网络对客户流失和连接问题等情况的反应。

▶测量节点升级对整体网络运行状况的影响。

验证旧节点和升级后的节点可以有效地互操作(避免分区)。

▶模拟变化的网络状况,例如IP地址更改,延迟,带宽等。

▶以一致,可复制的方式进行所有这些操作。

我们寻找现有的工具来释放我们的进度,但是找不到能够使我们做到这一点的平台。因此,我们建立了Testground。但是我们不是从零开始。

Testground站在Kubernetes,Docker和Redis等OSS巨头的肩膀上。我们之前也曾进行过实验,例如InterPlanetary TestLab(IPTB)可以学习并进行迭代。

从零日开始,我们意识到Testground对于更大的分布式系统和p2p社区的价值。因此,我们从一开始就使其与项目无关。

尽管是从IPFS和libp2p项目中诞生的,但Testground中的任何内容都不取决于libp2p或IPFS:总的零导入量。

您不必使用IPFS或libp2p即可从Testground中受益,以测试您的p2p网络(无论是dapp,区块链还是其他p2p协议)!

我们希望Testground能够像对我们一样为您加速开发和试验,并帮助您获得信心和放心,您仅在改进系统,提交后提交,PR后PR,发布后释放。

——————分———————割—————————线—————————

BT退场,IPFS成为改变世界的方式

什么是BT下载?

BitTorrent协议(简称BT,俗称比特洪流、BT下载、变态下载)是一个网络文件传输协议,它能够实现点对点文件分享的技术。比起其他点对点的协议,它更有多点对多点的特性,这个特点简单的说就是:下载的人越多,速度越快。下载完不马上关闭BitTorrent软件,就可以成为种子(拥有完整的档案者)分流让其他人下载。

9.webp.jpg

BitTorrent协议下,资源发布者不需要拥有高性能服务器,就能迅速有效地把发布的资源,传给其他的BT使用者,而且大多数的BT软件都是免费的。你可以把文件做成种子给别人下载,也可以下载别人提供的种子。

BT走向失败

尽管BitTorrent在技术上非常出色,但在十几年的时间里却一直未能找到合适的商业模式。最后创始人的股权被稀释到对公司毫无影响力,而投资者也纷纷离场。

IPFS的优势在哪?

IPFS技术积累了很多年,而且整合现已有的技术包括BitTorrent、DHT、Git和SFS。

1)、在不需要服务器的情况下,每一个客户端存储一小部分数据,并负责一定区域的检索,进而实现整个网络的寻址和检索。

2)、在网络中所有信息均以哈希表条目的形式加以存储,这些信息被分散的存储在各个节点上,从而以全网构成一张巨大的分布式哈希表,只要知道了信息索引的key就可以通过Kademlia协议来查询与其对应的value信息,而不管这个value信息究竟是存在哪个节点上。

3)、通过Filecoin来对矿工进行奖惩制度。

4)、在存储时,IPFS网络将文件拆成若干份,并计算各个部分的哈希值,利用这些构建起与文件相对应的有向无环图(DAG),DAG的根节点也就是该文件的哈希值。

5)、将所有的文件保存在同一个目录下,所有的文件都可以在相对应的路径中找到,其路径名是其原路径与公钥的哈希,这样的设计包含身份的隐士验证功能。

Filecoin是什么?

Filecoin 是一个基于区块链技术的分布式文件存储网络。本系列文章主要介绍 Filecoin 的设计规范,无论哪个版本的 Filecoin 实现都需要按照此规范实现。

Filecoin 中为网络提供存储容量的节点称为矿工,矿工通过定期产生的时空证明以证明其存储有效性,以此获取 Filecoin 加密货币 FIL 。FIL 可以通过区块链技术进行交易。矿工在共识协议里的存力和其存储数据量成正比。

Filecoin 区块链不仅维护 FIL 的交易,而且实现 Filecoin 虚拟机,用于执行链上交易获取当前网络状态。这些交易包括客户向矿工支付 FIL 以存储特定文件的存储交易等。

Filecoin基本概念

以下介绍规范经常用到的一些基本概念。

  • 数据结构:由语义标记的数据集合(例如结构体,接口或枚举)。

  • 方法:不依赖外部状态的计算过程(例如数学函数或不引用全局变量的编程语言函数)。

  • 模块:单个软件单元的功能集合,根据特定情况,可能是软件模块,处理特定任务的线程或进程等。

  • APIs:是可以发送到模块的消息定义。许多功能需要一系列 APIs 组合完成。

  • 节点:符合 Filecoin 协议规范的完整软件和硬件系统。一个节点应该包括上面的模块和对外暴露的 APIs。全节点则是指完整的模块和APIs。

  • 子系统:根据 Filecoin 完整协议规范的概念而划分的子集。比如存储市场,检索市场。它们不一定对应于任何特定的节点或软件模块。

  • 角色:在 Filecoin 虚拟机中的虚拟实体。比如执行智能合约的协议角色,拥有 FIL 加密货币并可以交易的角色等。


让我们一起期待,IPFS的未来!


扫码关注

萤火虫微信公众号

返回顶部
象山红美人