用于分布式计算和存储的智能、分散和自主市场的制作方法

文档序号:25543473发布日期:2021-06-18 20:40
用于分布式计算和存储的智能、分散和自主市场的制作方法

相关申请的交叉引用

本申请的权利要求享有于2018年11月8日提交的美国临时专利申请no.62/757,327的优先权。

实施例通常涉及分散的云计算市场。具体而言,一些实施例可以针对以分散方式访问计算资源的市场。



背景技术:

一些用户和企业可能对计算资源有波动的需求。例如,视频流服务,如netflix或hulu,在下午5点之后,当用户可能没有工作任务时,可能需要更多的计算资源量。当人们忙碌且无法使用视频流服务时,相同的视频流服务可能会在下午5点之前对资源的需求减少。这种需求的波动可能是有问题的,因为对于视频流服务而言,其拥有资源可能是不明智的。相反,对于视频流服务而言,基于波动的需求来租用资源可能是优选的。同样,计算资源的所有者,如数据中心运营商、台式电脑所有者或甚至手机所有者,通常都有备用的计算资源,可用于为他们创造免费的报酬或收入。

附图说明

通过阅读以下说明书和所附权利要求,并参考以下附图,实施例的各种优点对于本领域技术人员而言将变得显而易见,其中:

图1示出了根据实施例的智能、分散和自主架构的示例;

图2是根据实施例的分配计算资源的架构;

图3是根据实施例的分散计算的架构;

图4是根据实施例的执行节点加入操作的方法的示例的流程图;

图5是根据实施例的向网络添加客户端节点的方法的示例的流程图;

图6是根据实施例的处理设置部分的示例;

图7是根据实施例的图形用户界面的示例;

图8是根据实施例的图形用户界面的示例;

图9是根据实施例的客户端配置和开放开发者界面的示例;

图10是根据实施例的管理信誉的方法的示例的流程图;以及

图11是根据实施例的更新信誉的方法的示例的流程图。

具体实施方式

图1示出了一种架构100,该架构100生成一个完全分散、智能和自主的市场,用于实现诸如cpu/gpu处理和数据存储之类的计算资源的交易。博弈论的微观经济学原理和人工智能(ai)用于市场管理、资源配置、信誉管理和整体性能优化。一些实施例包括区块链或分布式账本技术(dlt),以实现对市场参与者的认证、交易审核、数据安全和总体安全保证。

客户端可以由客户端节点102a-102n来表示。客户端节点102a-102n可遍历网络,以与合适(例如,可靠且低成本)的分布式计算资源(例如,计算处理和存储)匹配,该分布式计算资源可以由第一层至第n层的矿工122a-122n来表示。也就是说,客户端节点102a-102n可以访问网络来下订单,该订单在分散且自主的计算市场中发布(如下所述)。应当理解,客户端节点102a-102n的数量可以不同于第一层至第n层的矿工122a-122n的数量。也就是说,客户端节点102n的“n”可以与第n层的矿工122n中的“n”和“n”的数目不同。

分散的市场可能意味着不需要集中式组件来维护架构100的整体功能。例如,分散的架构可能意味着没有集中式组件,或者任何集中式组件对于架构100的整体功能可能不重要。

计算资源的提供者(有时称为功利者(utilitarians))可以称为第一层至第n层的计算节点122a-122n。第一层至第n层的计算节点122a-122n可以提供计算资源。第一层至第n层的计算节点可以分配和/或设置由第一层至第n层的计算节点122a-122n所提供的资源量。在一些实施例中,第一层至第n层的计算节点122a-122n可以允许人工智能(ai)层110基于令牌和/或价格激励、用途和其他参数来确定数量或计算资源。

在一些实施例中,ai层110可以向第一层至第n层的计算节点122a-122n提供在线计算器,以输入它们的kwh(千瓦/小时)的电价,并且ai层110可以计算预期电力成本。ai层110假设,统计上第一层至第n层的计算节点122a-122n在客户端节点102a-102n注意到它们不可用之前,可能需要三分之一的时间可用。

对于存储,ai层110还可以要求矿工输入他们的存储器(例如,硬盘)的购买日期,然后ai层110可以通过考虑该存储器的常规零售成本来摊销每gb的成本。电力成本与存储成本一起可以形成第一层至第n层的计算节点122a-122n的实际成本,其可以在拍卖中的投标期间使用。类似的过程可以与其他硬件组件(例如处理器)一起发生,以估计价格。

这些资源可以在p2p分散市场114中发布,其中一些资源可以为不同类型的资源动态创建,并用于容错目的。当客户端节点102a-102n所寻求的资源与第一层至第n层的计算节点122a-122n所提供的资源之间存在匹配时,可以使用区块链和/或dlt技术来完成智能合同交易。在一些实施例中,合同逻辑自动完成交易。

一些层的服务(例如n层的服务)可以由第一层至第n层的计算节点122a-122n提供。同样,客户端节点102a-102n可以需要特定的服务层。这些层可以指定具有不同级别的正常运行时间、可用性和/或可信任性的计算和存储性能级别。

例如,第一层可以用于高性能分布式计算。第二层可以用于小型企业、中型企业和消费级计算。第三层可以用于移动设备计算等。虽然上面描述了三层,但是所提供的层的数量不受限制,因此可以提供多于或少于三层。

基于对等(p2p)网络协议来创建市场的底层机制。在该特定示例中,kademilap2pdht协议108和/或ai层110可以管理所有对等节点的发现、消息传递、同步和资源分配。

此外,信誉管理系统124可以对高性能的第一层计算节点至第n层的计算节点122a-122n(例如,计算资源提供者)进行排名、增强资源分配并隔离架构100中的恶意和流氓节点。例如,信誉管理系统124还可以构建信誉管理服务,该服务将执行基于机器学习的预测性分析,并将评级(例如,一到五,其中一是最差的,五是最好的)分配给第一层至第n层中每一个计算节点122a-122n。所有用户都可以通过区块链层访问此服务的结果,这将有助于避免在第一层至第n层的计算节点122a-122n和客户端节点102a-102n上的任何额外存储或处理需求,正如上述分布式版本所保证的那样。

信誉管理系统124可以向ai层110提供排名,以通过财务激励和/或更多工作来奖励高性能的第一层计算节点至第n层的计算节点122a-122n。也就是说,ai层110可以给予高性能的第一层计算节点至第n层的计算节点122a-122n优先待遇。

因此,一些实施例涉及使用区块链和/或dlt来分配、认证、管理和发现对等分布式网络中的分布式计算资源(计算能力和存储)的方法和体系结构100,从而创建一个基于交易的市场,为寻求高质量和低成本的计算能力和存储的客户提供商业化的计算资源。例如,资源中的至少两个包括p2p分散计算机处理116和p2p分散存储118。

ai层110可以管理和增强至少一些操作,以创建自主、分散和智能的云计算平台。如图所示,应用程序接口(apis)106可以促进用户接口104和区块链108之间的调用。区块链108可用作交易、排名、服务请求、资源供应、信誉得分等的分类帐或记录。

下面将进一步详细介绍如何构建一个ai驱动的市场,以便在第一层的计算节点至第n层的计算节点122a-122n之间执行完全分散云计算和存储。相比之下,其他一些系统可能有一个总体集中式组件,这对于系统的整体功能而言是必要和关键的。本申请的实施例会涉及分布式计算和存储,以构建完全开放、分散且可无限扩展的云计算解决方案,该解决方案包括用于交易计算和存储资源的灵活且安全的市场。

区块链、dlt和加密货币技术的出现可能已经实现了互联网规模的解决方案。区块链、dlt和/或p2p网络可用于构建真正分散的互联网规模的云计算和存储解决方案,其具有扩展资源。在一些实施例中,可以提交能够封装为容器的任何作业(例如,具有其所有部分的应用程序可能需要包括库和其他依赖项、docker容器等),并且客户端节点102a-102n可以只需要为该作业执行的持续时间付费。因此,用户可以以更低的成本和更高的效率访问几乎无限的高度可用的计算能力。

如图1所示,架构100包括到客户端节点102a-102n的客户端接口104。客户端接口104和/或客户端节点102a-102n可以是各种平台(例如,windows、macos和linux)。客户端接口104可以在客户端节点102a-102n上操作,或者可以与客户端节点102a-102n无关。客户端接口104和客户端节点102a-102n可以通过智能和p2p分散市场114连接到分布式计算和存储资源的网络基础设施。

称为“亚历山大协议(alexandriaprotocol)”的人工智能层110可以实现一些实施例的分布式计算资源分配和性能优化。该人工智能层110持续地在p2p分散市场114的交互中学习,并为p2p分散市场114中的参与者优化策略。例如,人工智能层110可以执行以下操作:

1.规划和优化p2p分散计算机处理116和p2p分散存储118中的分布式p2p资源的分配和性能;

2.为系统中的节点建立信誉,例如客户端节点102a-102n(例如,功利者)、第一层至第n层的矿工122a-122n(例如,客户端)和/或管理节点(论述如下);

3.预测客户端节点102a-102n的正常运行时间和可用性;

4.基于任务规范为第一层至第n层的矿工122a-122n预测其任务的大致完成时间;

5.为客户端节点102a-102n推荐最佳的定价策略,以最大限度地提高本地资源利用率和利润潜力。

当架构100随着更多任务和参与者而扩展时,人工智能层110的机器和/或深度学习模型可以从附加数据中学习,并且从参与者的角度来看可以变得越来越有效和有用。

在一些实施例中,人工智能层110可以包括威胁管理器126,该威胁管理器126评估架构100受到的威胁。在一些实施例中,威胁管理器126可修改人工智能层110的行为和/或参数以减轻此类风险。例如,在一些实施例中,威胁管理器126可修改人工智能层110的行为和/或参数以减轻此类风险,例如排除识别为对架构100构成潜在风险的一些计算节点122a-122n。

在一些实施例中,人工智能层110可以实现共识机制。顾名思义,共识机制涉及将计算任务分发给第一层至第n层的计算节点122a-122n中的多个计算节点(例如,三个或其他奇数个),然后选择由第一层至第n层的计算节点122a-122n中大多数提供的作为结果。其结果与所选结果不匹配的第一层至第n层的计算节点122a-122n,其不会得到任何补偿,并且会受到信誉分数方面的惩罚。

一些实施例涉及构建分散的分布式计算和存储市场。关于架构100的各方面,例如p2p分散的区块链108(和/或dlt)和p2p分散市场114、第一层至第n层的计算节点122a-122n、客户端节点102a-102n以及用于分布式计算资源(存储和计算)的ai层110,在图2的架构200中更详细地示出。架构200可以容易地实现为架构100的一部分,其中重叠的组件包括在彼此内部。

架构200可由至少三层形成,其包括1)分散应用(dapps)和web客户端接口层202;2)区块链和/或dlt层216(例如以太坊、iota、corda、eos、超级账本(hyperledger)等层),以及3)p2p网络层214。

底层的p2p网络层214可以包括网络协议,其中任何新节点可以加入p2p网络层214并插入并与其他对等节点同步。一旦添加了新节点,计算资源提供者(新节点的计算节点)随后可以配置他们希望计算节点的计算资源在市场中可用的方式,以及他们为这些服务选择的奖励。这些服务还将添加到区块链和/或dlt216,并且由第一层至第n层204a-204n中不同的服务层进行分类,其中节点206a-206n、208a-208n、210a-210n中的计算节点可以使用加密的散列指针(hashpointers)自动注册以发布资源的可用性。

第一层至第n层204a-204n中的每一个服务层在特定参数(例如,特定限制之间的计算能力和存储)内发布一组独特的计算资源,其中客户端和计算节点提供者可以进行交互,以分散的方式将这些计算资源商业化。一旦识别出服务匹配,并且在区块链和/或dlt层216中发生智能合约或任何智能代码逻辑交易,就可以在计算节点和客户端节点之间交换令牌以支付服务。

例如,第一层204a可对应于企业级处理能力和存储。节点210a可以是提供第一层204a类别中的服务的计算节点。即,节点210a可以提供企业级处理能力和存储。节点210a可以在第一层204a中发布节点210a的处理能力和存储的确切级别、定价要求、服务协议、时间限制(例如,必须是可以在两小时内或凌晨2点至6点之间执行的工作)等。节点210n可以是客户端节点。节点210n可能需要第一层204a的服务级别,因此会在第一层204a中接受所有已发布节点信息的列表。节点210n可以确定节点210a的发布是可接受的,并且选择节点210a。节点210n可以在选择节点210a之前执行延迟测试,以减轻高延迟通信的可能性。节点210n随后可以将工作负载卸载到节点210a。在节点210a完成工作负载之后,节点210n可以验证该工作负载是否令人满意地执行,并且如果是,则向节点210a提供令牌。

在一些实施例中,节点210n可以选择从特定国家和/或具有特定延迟特性的计算节点中选择计算节点。支持多个特定区域的p2p网络。例如,针对美国西部、美国东部、欧盟西部、欧盟东部、印度、东南亚等的p2p网络。这不仅可以简化地理位置相近的计算节点的选择,还可以满足特定地区的数据处理要求,如欧盟的gdpr法规。

服务层204a-204n可确定如下。例如,网络中的功利者可能主要是拥有笔记本电脑和台式电脑的家庭用户。在一些例子中,这些功利者可以定义为第二层204b的功利者。企业级硬件、软件提供商和数据中心运营商也可以加入架构300,以销售计算能力和存储。企业功利者可以定义为第一层204a的功利者。最后,第n层204n的功利者可定义为与移动和物联网(iot)设备的类别相关,这些设备可能具有较低的计算和存储能力,但仍可以向架构200的对等网络提供这些资源。

第二层204b的级别可以进一步细分为若干子类别,这些子类别表示不同的计算能力范围,如下所示。例如,t2.small可以表示具有最多两个cpu、2到4gb的ram以及cpu速度高达2ghz的任何机器。分层和子分类策略适用于未来添加第一层提供者。这些提供服务的第一层和第二层204a、204b在表i中列举如下。在一些实施例中,表i可以包括第n层204n的服务提供者。

表i-基于功利计算资源的服务层分类

代理(例如,软件代理、应用程序和/或其他软件)可以确定计算节点的cpu和ram的数量,并自动确定计算节点的资源所属的层。然后,代理还可以查找该层的管理节点,并将计算节点与管理节点一起列出以销售该计算资源。计算节点的用户(或者计算节点可以自动地)可以选择列出计算资源不应该被其他人使用的时间段。此外,计算节点可以提供共享其计算资源的每小时(或其他时间段)的价格(例如,美元)。对于使用功利性资源,客户端节点可以以n分钟(例如,15分钟)的间隔递增计费。一旦一个计算节点列在一个提供计算服务的市场上,那么它就可以称为一个功利者(utilitarian)。

图3示出了包括p2p网络302中的p2p层的分散计算架构300。关于架构100(图1)和架构200(图2)的各方面,例如p2p分散区块链(和/或dlt)市场114、第一层至第n层的计算节点122a-122n、客户端节点102a-102n以及用于分布式计算资源(存储和计算)的ai层110、节点206a-206n、208a-208n、210a-210n、区块链、分散计算资源市场212和分散应用和web客户端接口层202,在图3的架构300中更详细地示出。架构300可以容易地实现为架构100(图1)和架构200(图2)的一部分,其中重叠组件包括在彼此内部。

在p2p网络302中,可以使用区块链和/或dlt(例如以太坊、iota、corda、eos、超级账本(hyperledger)等)来共享计算资源,以管理涉及计算资源的交易。p2p层可以如本文所述基于计算资源市场来确定。

在一些实施例中,p2p网络302的组件包括:

1.客户端:客户端节点312、316,其正在寻找用于执行其任务的计算资源并且愿意为这些资源支付费用;

2.功利者:计算节点308a、308b、310a-310c,其想要出售其空闲计算资源并存储资源以获得奖励;和

3.市场所有者或交易所:动态选择的管理节点304、306,其有助于客户端发现功利者。根据功利者出售的计算和存储资源的范围,网络中可能有多个市场所有者,并进一步有利地参与验证和实施方案。

值得注意的是,节点304、306、308a、308b、310a-310c、312可以具有多个模式。例如,节点304、306、308a、308b、310a-310c、312中的任何一个可以具有双重模式,其中该节点可以充当客户端、功利者p2p节点(例如,资源提供者)和市场所有者中的两个或多个角色。

如图3所示,对于服务层的特定示例,可能存在计算资源的两个市场,并且这两个市场通过p2p网络302中的管理节点304(例如,t2nano)和管理节点306(例如,t2large)来标识。正在销售计算资源的计算节点310a-310c、308a、308b可经由合适的管理节点304、306在这两个市场之一中列出它们自己。例如,计算节点310a-310c、308a、308b可通过管理节点304、306广播其资源的可用性。

类似地,正在寻求计算资源查找的客户端节点312、316针对所需的服务级别来识别管理节点306、304中合适的市场所有者,并从管理节点304、306中获得能够提供该服务的功利者的列表。

例如,在特定层(例如,第二层)内可能存在三个子类别的计算资源:1)纳米,2)中型,以及3)大型。“纳米”表示功利者可以向市场提供的小型资源(例如,计算机存储和处理),“中型”表示功利者可以提供的中型资源(例如,计算机存储和处理),以及“大型”表示功利者可以提供的大型资源(例如,计算机存储和处理)。

节点304、306、308a、308b、310a-310c、312可以具有公共的区块链和/或dlt地址。节点304、306、308a、308b、310a-310c、312可以视为理性实体,其参与以最大化其可从p2p网络302中产生的价值。在一些实施例中,可以使用博弈论原理。另一方面,网络中也可能存在一些恶意节点,下面将关于最小化该恶意节点对网络操作的影响的示例性方法进行讨论。

在一些实施例中,控制平面322可包括威胁管理器324,其可类似于威胁管理器126,以识别威胁模型场景和解决方案。也就是说,由于一些实施例包括完全或基本上分散的系统,而该系统没有关键的集中式管理,因此可能存在不同的场景,其中不同的参与者可能试图操纵架构300以谋取私利。威胁管理器324可以识别这样的关键场景并制定技术解决方案,以确保整个系统继续以高性能和保真度运行。

例如,在日蚀攻击(eclipseattack)中,攻击者可能会使单个节点无法参与p2p网络。例如,如果攻击者控制了超过50%的网络节点,则这种攻击是可能发生的。根据示例性实施例,可以使用添加ip地址以及区块链(例如,以太坊)公共地址来生成节点的p2p网络id,例如:

kadp2p网络emliaid=散列(以太坊公共地址、ip地址、国家代码)

(kadp2pnetworkemliaid=hash(ethereumpublicaddress,ipaddress,countrycode))因此,可以通过如上所述分配id来减轻与日蚀攻击相关的风险。

女巫攻击(sybilattack)可以是日蚀攻击的扩展版本,其中攻击者可以控制p2p网络302中的大多数节点304、306、308a、308b、310a-310c、312、316,从而降低p2p网络302的整体信誉和功能。事实上,这种攻击是日蚀攻击成功的先决条件。

架构300中的女巫攻击的一种表现形式是,攻击者可以控制市场和计算节点310a-310c、308a、308b(例如,功利者),并控制客户端的计算,在客户端的计算中,他们在不做任何实际工作的情况下获得计算节点310a-310c、308a、308b的工作报酬。依赖于计算节点310a-310c、308a、308b中的单个计算节点或一组计算节点310a-310c、308a、308b来为其执行工作的客户端节点312、316,他们将无法知道接收到的输出是正确的还是虚假的。

上述针对日蚀攻击的技术解决方案和缓解策略可能很有用。可采用其它几种技术,这些技术也将有助于p2p网络302中的管理、计算和客户端节点304、306、308a、308b、310a-310c、312、316的“好”节点能够最小化女巫攻击的影响。这些技术围绕信誉管理和交叉检查计算结果。因此,一些实施例可以维护管理细节和交叉检查计算结果以防止女巫攻击。

在一些攻击中,贪婪的功利者可能会为任务提交低成本的报价,但随后为客户端节点312、316提供低质量的服务。客户端节点312、316可能不会立即知道贪婪的功利者在他们所处理的任务中提供了低质量或不正确的计算。其中,有些贪婪的功利者希望在没有实际完成任务的情况下获得任务补偿,这可能是女巫攻击的一种形式,但其规模较小。为处理女巫攻击而提出的技术将有助于避免这些贪婪的功利者在拍卖过程中获胜,也有助于检测出这些贪婪的功利者没有执行必要计算的输出。

在一些实施例中,可能存在恶意的市场所有者(例如,管理节点)。在此攻击场景中,论述了p2p网络302中存在恶意的市场所有者所造成的影响。在这种情况下,可能的攻击类型包括a)与恶意的计算节点(例如,功利者)串通并抑制好的节点参与拍卖过程;和b)不存储和/或不与客户端节点312、316共享信息,以减少整体系统的效用。下列问题可以通过以下方式作为解决方案的一部分来加以解决,并且可以通过威胁管理器324来实现和/或传播:

1)为市场所有者建立信誉,类似于为计算节点308a、308b、310a-310c(如本文所述)建立信誉的方式;

2)为给定的服务层轮换市场所有者。如将要解释的,架构300使用一年中的周数,该架构300用于计算输入值中第一层的散列值。因此,即使对于相同的层,计算节点308a、308b、310a-310c每周也将使用可从p2p网络302中选择的新管理节点来重新列出它们自己。客户端节点312、316可能能够找到新的管理节点,因为它们还不断更新它们用于为其进行查找的散列。应当注意,在一些实施例中,在即时的架构300中的所有时间都可以基于协调世界时(utc)。因此,可能不需要在p2p网络302上全局同步时钟。如果客户端节点312、316中的客户端节点从管理节点304、306查找层的管理节点,并且没有接收到计算节点的信息,则架构300可以通过将周数增加1来自动重试新的管理节点。也就是说,为了确保弹性,一些实施例还可以支持在主动-主动模式或主动-被动模式下,使多个网络节点充当市场的共同所有者。同意充当市场所有者的节点使用chord或kademlia之类的协议形成对等网络,并且通过生成散列并查找该散列值来确定计算资源值的确切市场所有者。

3)每一层都可能有冗余的市场所有者(管理节点)。冗余管理节点可以是指定的管理节点的直接后继邻居。因此,例如,假设管理节点306是第一层的市场所有者,那么计算节点310a-310c也可以在其直接后继节点(即节点2)中列出自己。当从管理节点306获得计算节点310a-310c的列表时,客户端节点310还可以联系节点2并获得计算节点310a-310c的列表。如果即使在联系计算节点310a-310c之后,这两组数据有显著变化,则客户端节点312可以免去对管理节点306的支付,并且还会广播管理节点306的不良信誉。

在一些实施例中,自由加载客户端(free-loadingclient)可以连接架构300。也就是说,客户端节点312、316还可以通过使其任务由计算节点308a、308b、310a-310c来执行而不标记对计算节点308a、308b、310a-310c和管理节点304、306的支付,从而滥用p2p网络302中的资源。通过使用区块链和/或dlt作为托管,并通过智能合约强制执行交易,可以解决此问题。

在一些实施例中,所采用的结果验证技术之一是确保计算节点没有将“垃圾结果”返回给客户端节点(例如,特洛伊木马注入(trojaninjection))。为了减轻这种情况,一些实施例可以包括在客户端计算中自动注入具有已知输出值和可验证值的步骤。当任务完成时,计算节点的输出结果应该将该已知值包含在输出结果中。与网页托管(webhosting)相关的docker任务也可以接受一个“healthcheckurl”,该url能够被连续检查,以确保计算节点正在托管该计算节点预期托管的网站(或网络服务)。如果缺少已知值,则架构300可以确定计算节点没有按照客户端节点的规范处理任务,因此不应该支付。

图4示出了执行节点加入操作的方法400。该方法400通常可以由计算设备来实现,并结合本文所描述的任何实施例来操作,例如,已经讨论的架构100(图1)、架构200(图2)和架构300(图3)。在一个实施例中,该方法400在一个或多个模块中实现为一组逻辑指令,这些逻辑指令存储在机器可读存储介质或计算机可读存储介质中,例如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等;或存储在诸如可编程逻辑阵列(plas)、现场可编程门阵列(fpgas)、复杂可编程逻辑器件(cplds)等可编程逻辑中,或存储在使用电路技术的固定功能逻辑硬件中,例如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术,或其它任何组合。

例如,用于执行方法400中所示的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,包括面向对象的编程语言,如java、smalltalk、c++等,以及常规的程序编程语言,如“c”编程语言或类似的编程语言。此外,逻辑指令可能包括汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微码、状态设置数据、集成电路的配置数据,对硬件(如主机处理器、中央处理器/cpu、微控制器等)固有的电子电路和/或其他结构部件进行个性化的状态信息。

图示的处理块402将计算节点连接到网络(例如,p2p网络)。处理块402可以包括生成p2p网络标识(id),所述标识生成如下:p2p网络id=散列(区块链和/或dlp公共地址、ip地址、国家代码)。在一些实施例中,处理块402确定帮助新节点加入网络的已发布节点的列表。可选地或同时地,可以提供从区块链返回节点列表的api,该区块链返回已经是p2p网络的一部分的经验证节点的随机列表。

在一些实施例中,用于生成p2p网络id的数据可以经由网络可以提供的目录服务提供,以允许新用户加入p2p网络。可选地,可以通过让新用户直接查询区块链以检索作为p2p网络潜在部分的用户列表来分发这些数据。

在此特定示例中,加入网络的节点是计算节点。因此,该计算节点(例如,工作者和/或功利者)选择计算节点可以提供的服务层404。这可以基于处理能力(例如,cpu的数量、cpu的类型、gpu的数量、gpu的类型)和可用存储(例如,ram、诸如固态驱动器和/或硬盘驱动器等的长期存储)。

图示的处理块406确定层的所选资源需求是否满足计算节点的历史记录。例如,计算节点可能需要在过去1小时内具有低于50%的cpu和/或gpu利用率,才有资格出售计算资源。也就是说,计算节点的历史资源使用量(例如,可用资源量)应该满足层的最低要求(例如,要出售的最小资源量)。根据应用、时序等,可以采用其他阈值。对于不同类别的计算资源,还可以有不同的层定义。如果不满足资源需求,则执行图示的处理块404以选择另一服务层。

如果满足资源需求,则图示的处理块408基于服务层生成管理节点网络id。例如,计算节点可以为该计算节点将提供的服务层的管理节点生成管理节点p2p网络id。管理节点网络id可以标识该层的市场所有者。在一些实施例中,为了确保单个市场所有者不能垄断给定的服务层(从而降低恶意攻击和/或集中控制的概率),还可以在散列函数中添加随机数(例如,周数)。市场所有者的p2p网络id可以标识为“散列(vcpus,ram,周数)(hash(vcpus,ram,weeknumber))”。

图示的处理块410向管理节点通知计算节点的添加和计算节点的任何相关特征(例如,可用资源、定价请求等)。例如,计算节点可以向管理节点注册自身。注册信息可以是元组的形式(例如,ip地址、可用时间间隔、可用资源等)。该注册的副本也可以存储在区块链和/或dlt中,用于审计目的。

图5示出了将客户端节点添加到网络的方法500。该方法500通常可以结合本文所描述的任何实施例来实现,例如,已经讨论的架构100(图1)、架构200(图2)、架构300(图3)和方法400(图4)。更具体地说,方法500可以在一个或多个模块中实现为一组逻辑指令,这些逻辑指令存储在诸如ram、rom、prom、固件、闪存等机器可读存储介质或计算机可读存储介质中;或存储在诸如plas、fpgas、cplds等可编程逻辑中,或存储在使用电路技术的固定功能逻辑硬件中,例如asic、cmos或ttl技术,或其它任何组合。

图示的处理块502将客户端节点连接到网络并标识所需层服务的管理节点。例如,客户端节点的用户可以指定其任务所需的服务层,该服务层指定为docker镜像。基于所选择的层,客户端节点可以查找相应的市场所有者(例如,管理节点)。查找过程可以与上述方法400中所描述的计算节点查找过程相似或相同。

在图示的处理块504中,客户端节点可以联系管理节点并从管理节点中接收所有计算节点的列表。在图示的处理块506中,客户端节点随后可以进行拍卖。在该拍卖期间,客户端节点可联系所有计算节点以获取定价信息,可以使用粒度(granularity)(例如,十五分钟)来接收指定执行价格的回复(拍卖开始的时间段)。该回复还可以用作计算节点仍然能够共享其计算资源的验证。

在图示的处理块508中,客户端节点测量提供回复的所有计算节点的延迟。该延迟超过某个指定阈值(例如,默认值为5秒)的所有计算节点都可能会被拒绝。在一些实施例中,延迟测量为从计算节点到客户端节点的消息到达客户端节点所花费的时间。

在图示的处理块510中,当从功利者节点和/或延迟分析接收到定价报价时,客户端节点可以从具有满足延迟阈值的最低出价的计算节点中选择一个或多个计算节点。在一些实施例中,如果延迟低于速度阈值,则客户端节点可以选择更昂贵的计算节点,该速度阈值指示该客户端节点比便宜的计算节点更可取。

图示的处理块512向所选择的一个或多个计算节点发送将要执行的镜像。也就是说,客户端节点可以与一个或多个计算节点通信并发送要执行的docker镜像。在图示的处理块514中,客户端节点接收一个或多个计算节点的计算结果。例如,来自一个或多个计算节点的计算结果将发送回客户端节点,并存储在预定目录中或通过回调统一资源指示符(uri)。

图示的处理块516提供支付。在一些实施例中,客户端节点所支付的价格可以是来自计算节点的所有出价的第二最低价格,如维克里拍卖(vickreyauction)中所描述的。这种形式的拍卖机制可以保证计算节点的最佳竞价策略是充分地分担了提供计算资源的成本。拍卖细节也可以记录在区块链中。在一些实施例中,管理节点也可以由客户端节点支付。支付给管理节点的金额是最低出价(由一个或多个计算节点提供的出价)和第二最低出价之间的金额差。

例如,在维克里拍卖中,“讲真话”(truth-telling)是计算节点对其提供计算资源的成本进行报价的最佳策略。可以基于最低成本来选择计算节点,但是它们所获得的补偿是同一市场中列出的第二最低成本。一些实施例可以进一步扩展维克里拍卖协议,以考虑到在拍卖结束时可以选择多个获胜者,由于文件需要分块和复制,因此需要存储在多个矿工上。此外,一些实施例可以考虑多个失败场景,这些失败场景是由于拍卖中的所有参与者均在线且彼此不认识而导致的。

方法500可以全部由智能合约管理。

图6示出了应用程序(或其他软件)中的处理设置部分600,该应用程序(或其他软件)允许功利者配置用于出售其资源的价值。如图所示,用户和/或计算节点可以设置参数606。参数606可包括可供客户端节点利用的磁盘空间604的大小,以及应用可基于用户输入和计算节点的配置自动定义的层设置602。

图7示出了图形用户界面700,其允许用户和/或客户端节点从网络中的计算节点购买计算资源以用于任务的分布式执行。图形用户界面700示出了客户端如何能够配置对执行其任务所需的计算能力层的需求。例如,在客户端节点已经为客户端节点指定了任务要求702并且指定了要执行的docker镜像704之后,软件代理可以联系到该层的管理节点并获得可用的功利程序(计算节点)的列表。如图8所示,可以向客户端节点的用户提供功利程序的细节以及用于选择一个功利程序的选项。

例如,图形用户界面800列出提供给市场的功利资源802。如果用户没有选择功利资源802中的一个,则只要从延迟测试到相关功利资源804的延迟低于预定量,代理还可以配置成以尽可能低的成本自动地从功利资源804中选择功利资源。

在一些实施例中,客户端节点可以设置存储测试结果的目录。一旦计算结果可用,用户可以选择接收电子邮件,确认工作已完成。此外,应用程序可以为相同的操作提供通知。

图9示出了使用restapis910的客户端配置和开放开发者接口(opendeveloper’sinterface)900。市场可以集成到应用程序中,也允许用户销售和购买存储容量。可以通过restfulapis910提供相同的功能,用于销售、购买和管理计算资源。这样一个开放的平台将允许开发人员构建新的创新应用程序,以利用大量、廉价且易于访问的计算资源。如图所示,接口900可以包括电子应用902、web用户接口908、节点web服务904和docker引擎906。

以下是实现restapis910的伪代码:

创建计算资源用以销售

post/compute

{

"tier_namer":"string",

"kademlia_id":"string",

”public_addressr":"string",

”ip_address":”string",

"country_code":"string",

"price_per_15_mins":"double",

"availability_window":"string",

"cpu_count":"int",

"speed_in_ghz":"int",

"memory_in_gb":"int"

}

获取提供特定计算资源层的功利者列表

get/compute/{tier_name}

[

{"kademlia_id":"string",

”public_address”:"string",

”ip_address”:”string”,

”country_code”:"string",

"latency_in_msecs":"int",

"price_per_15_mins":"double",

"cpu_count":"int",

"speed_in_ghz":"int",

"memory_in_gb":"int"},

{},…

]

提交一个docker实例,以便在所选的功利者上执行

post/compute

可以管理在docker引擎906中打包为单个docker容器的客户端的任务。存在多种工作负载需要一组相互依赖的任务,而这些任务可能需要通过一些中间并行操作顺序执行。提供了一个常规的工作流管理系统,客户可以使用该系统定义和提交任务的工作流。反之,工作流管理系统可以自动调度、管理和优化所有任务的执行,以便为完成所有必要的任务提供最佳的可靠性、性能和成本效益。

图10示出了管理信誉的方法1000。该方法1000通常可以结合本文所描述的任何实施例来实现,例如,已经讨论的架构100(图1)、架构200(图2)、架构300(图3)、方法400(图4)和方法500(图5)。更具体地说,方法1000可以在一个或多个模块中实现为一组逻辑指令,这些逻辑指令存储在诸如ram、rom、prom、固件、闪存等机器可读存储介质或计算机可读存储介质中,或存储在诸如plas、fpgas、cplds等可编程逻辑中,或存储在使用电路技术的固定功能逻辑硬件中,例如asic、cmos或ttl技术,或其它任何组合。

根据一些实施例,使用创新的信誉管理和激励工程使系统能够自我维持。恶意或不良的计算节点、管理节点和客户端节点(如前一部分所述)可能会基于较低的信誉分数从架构中删除。

网络中的每个节点可能都有其他节点的信誉副本。信誉可以是该节点与其他节点一起工作的直接经验的综合表示,以及该节点已经接收到的信誉广播消息。可以为每一个其他节点计算此信誉,无论该节点是功利者、市场所有者还是客户端。

根据示例性实施例,信誉管理可以如下执行。在图示的处理块1002中,计算节点可以完成交易。在图示的处理块1004中,在成功完成交易之后,计算节点可以生成完成证书。图示的处理块1006将完成证书广播到计算节点在网络中所知道的所有其他节点。完成证书可以包含指向区块链中块的散列指针(hashpointer),该散列指针记录从客户端节点到计算节点的支付交易。其他节点收到完成证书后,计算计算节点的信誉如下:

新功利信誉=f(旧功利信誉*客户端信誉)或者,如果这两个值中的任何一个为0,则信誉为1。

公式1

对于同一对计算节点和客户端节点,一周最多增加一次信誉。

信誉可能与节点的p2p网络id相关联,相反,这意味着信誉与区块链公共地址相关联。此外,信誉可以是单调递增的整数。值越高意味着信誉越高,零是最差的。该值为零还意味着节点的信誉是未知的。由于恶意节点总是可以重新生成其p2p网络id并作为未知节点重新加入网络,因此最差信誉和未知信誉可以互换地处理。

图11示出了更新信誉的方法。图示的处理块1102接收完成证书。图示的处理块1104计算与完成证书相关联的节点的信誉分数。图示的处理块1106确定是否在时间限制内接收到节点的新完成证书。例如,节点的信誉可能是时间的衰减函数。因此,如果一个功利者不提供服务,则它会随着时间的推移逐渐降级。如果没有接收到新的证书,则图示的处理块1108可以如下地降低信誉:

新的信誉=过去30天的评级*α+以往的评级*(1-α),

公式2

在上述的等式中,α控制分配给较新评级的权重。如上所述,节点的信誉可以是确定节点何时决定提供和/或接收服务的一部分。

实施例适用于所有类型的半导体集成电路(“ic”)芯片。这些ic芯片的例子包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(plas)、存储芯片、网络芯片、片上系统(socs)、ssd/nand控制器asics等。此外,在一些附图中,信号导线用线表示。一些可以不同,以指示更多的组成信号路径,具有数字标签,以指示多个组成信号路径,和/或在一个或多个端部具有箭头,以指示主要信息流方向。然而,这不应理解为是限制性的。相反,这种附加细节可以结合一个或多个示例性实施例来使用,以便于更容易理解电路。任何表示的信号线,无论是否具有附加信息,实际上可以包括一个或多个可以在多个方向上传输的信号,并且可以用任何合适类型的信号方案来实现,例如,用差分对、光纤线路和/或单端线路来实现的数字或模拟线路。

虽然实施例不限于此,但可以给出示例的尺寸/模型/值/范围。随着制造技术(如光刻)的逐渐成熟,预计可以制造出更小尺寸的设备。此外,为了简化说明和讨论,并且为了不使实施例的某些方面不清楚,与ic芯片和其他组件的常规的电源/接地连接可能在附图中示出,也可能不在附图中示出。此外,可以以框图形式示出布置,以避免混淆实施例,并且还鉴于以下事实:关于这种框图布置所实现的特征高度依赖于要在其中实现该实施例的计算系统。即,这些特征应该完全在本领域技术人员的能力范围内。在阐述特定细节(例如电路)以便描述示例性实施例的情况下,本领域技术人员应当清楚的是,实施例可以在没有这些特定细节的情况下实施,也可以通过这些特定细节的变化来实施。因此,本说明书应认为是说明性的而不是限制性的。

术语“耦合”可在本文中用于指所讨论的组件之间的任何类型的直接或间接关系,并且可应用于电学、机械、流体、光学、电磁、机电或其他连接。此外,本文中的术语“第一”、“第二”等仅用于便于讨论,并且除非另有说明,否则不具有特定的时间或年代意义。

如在本申请和权利要求书中所使用的,由术语“一个或多个”连接的项目列表可以表示所列术语的任何组合。例如,短语“a、b或c中的一个或多个”可以都表示a;b;c;a和b;a和c;b和c;或者a,b和c。

本领域技术人员将从前述描述中理解,实施例的广泛技术可以以各种形式实现。因此,虽然已经结合实施例的特定示例描述了实施例,但是实施例的真实范围不应受到这样的限制,因为在研究了附图、说明书和以下权利要求之后,其他修改对于熟练的实践者将变得显而易见。

再多了解一些
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1