CN112673350B - 用于在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置 - Google Patents
用于在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置 Download PDFInfo
- Publication number
- CN112673350B CN112673350B CN201880097359.1A CN201880097359A CN112673350B CN 112673350 B CN112673350 B CN 112673350B CN 201880097359 A CN201880097359 A CN 201880097359A CN 112673350 B CN112673350 B CN 112673350B
- Authority
- CN
- China
- Prior art keywords
- action
- local computing
- actions
- determining
- smart contract
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000009471 action Effects 0.000 title claims abstract description 565
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000009850 completed effect Effects 0.000 claims description 45
- 238000012790 confirmation Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 description 17
- 230000015654 memory Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 238000005259 measurement Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F21/645—Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Abstract
提出了一种用于在具有非受信本地代理的分布式计算系统中实现动作的协调执行的方法和系统。包含计划的智能合约被记录在区块链数据库中。每个计划包括将由本地计算代理中相应的本地计算代理执行的动作。请求由第一本地计算代理执行第一组动作中的第一动作的执行。请求由第二本地计算代理执行第二组动作中的第二动作的执行。响应于基于智能合约而确定第一动作能够被执行,使得第一本地计算代理执行第一动作,以及响应于基于智能合约而确定第二动作不能被执行,使得第二本地计算代理不执行第二动作。
Description
技术领域
本发明的实施例涉及分布式云服务领域;更具体地,涉及在具有非受信实体的分布式计算系统中动作的协调执行。
背景技术
在能够被用于不同类型的应用(例如,物流、机器人或服务编排等)的许多分布式计算系统中,多个本地计算代理需要以相互协调的方式执行动作序列。当计算代理被信任并协作时,可以通过计算代理内的简单消息传递和簿记来实现协调。但是,对于非受信计算代理和诸如其中涉及竞争本地计算代理的子系统设备的环境,实现这些代理之间的任务协调的现有解决方案很容易出现故障。例如,每个计算代理可能以牺牲其他计算代理为代价来尝试优化它们自己的本地增益。
因此,需要具有在分布式计算系统中的分布式非受信代理之间实施协调的系统。还需要确保动作在物理环境上的执行确实按照系统的要求进行。
发明内容
一个总体方面包括一种在具有非受信的多个本地代理的分布式计算系统中实现动作的协调执行的方法,所述方法包括:在区块链数据库中记录包括形成全局计划的多个计划的智能合约,其中,所述多个计划中的每个计划包括要由所述多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作;请求由所述多个本地计算代理中的第一本地计算代理来执行形成所述多个计划中的第一计划的第一组动作中的第一动作;请求由所述多个本地计算代理中的第二本地计算代理来执行形成所述多个计划中的第二计划的第二组动作中的第二动作的执行;基于所述智能合约,确定所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行;基于所述智能合约,确定所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行;响应于确定所述第一动作能够被执行,使得所述多个本地计算代理中的所述第一本地计算代理执行所述第一动作;以及响应于确定所述第二动作不能被执行,使得所述多个本地计算代理中的所述第二本地计算代理不执行所述第二动作。
一个总体方面包括一种用于在具有非受信的多个本地代理的分布式计算系统中实现动作的协调执行的系统,所述系统包括:智能合约生成器,可操作以在区块链数据库中记录包括形成全局计划的多个计划的智能合约,其中,所述多个计划中的每个计划包括要由所述多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作;所述多个本地计算代理中的第一本地计算代理,可操作以:请求由所述多个本地计算代理中的所述第一本地计算代理来执行形成所述多个计划中的第一计划的第一组动作中的第一动作的执行;基于所述智能合约,确定所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行;以及响应于确定所述第一动作能够被执行,使得所述多个本地计算代理中的所述第一本地计算代理执行所述第一动作。所述系统还包括所述多个本地计算代理中的第二本地计算代理,其可操作以:请求由所述多个本地计算代理中的所述第二本地计算代理来执行形成所述多个计划中的第二计划的第二组动作中的第二动作的执行;基于所述智能合约,确定所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行;以及响应于确定所述第二动作不能被执行,使得所述多个本地计算代理中的所述第二本地计算代理不执行所述第二动作。
附图说明
通过参考以下描述和用于说明本发明实施例的附图,可以最好地理解本发明,在附图中:
图1示出了根据一些实施例的用于在具有非受信的多个本地代理的分布式计算系统中实现动作的协调执行的示例性系统100的框图;
图2A示出了根据一些实施例的要由一组三个本地计算代理执行的非限制性示例性全局计划;
图2B示出了根据一些实施例的形成全局计划的一组非限制性示例性本地计划;
图3A示出了根据一些实施例的用于确定包括要由多个计算代理执行的动作的智能合约的示例性操作的框图;
图3B示出了根据一些实施例的用于由分布式计算系统的多个计算代理基于智能合约执行动作的示例性操作的框图;
图3C示出了根据一些实施例的用于由分布式计算系统的多个计算代理基于智能合约执行动作的示例性操作的框图;
图3D示出了根据一些实施例的在基于智能合约确定动作被授权之后该动作被执行时执行的示例性操作的框图;
图3E示出了根据一些实施例的用于确定第二动作能够由第二计算代理执行的示例性操作的框图;
图3F示出了根据一些实施例的被执行以用于在确定第二动作被授权时执行该动作的示例性操作的框图;
图4A示出了根据一些实施例的用于在具有非受信实体的分布式计算系统中实现动作的协调执行的示例性操作的流程图;
图4B示出了根据一些实施例的用于基于智能合约来确定第一动作是否能够由第一本地计算代理执行的示例性操作的流程图;
图4C示出了根据一些实施例的用于基于智能合约来确定第二动作是否能够由第二本地计算代理执行的示例性操作的流程图;
图4D示出了根据一些实施例的用于确定第二动作不能被执行的示例性操作的流程图;
图5示出了根据一些实施例的用于将动作记录在区块链数据库中作为已完成动作的示例性操作的流程图;
图6示出了根据一些实施例的能够被用于实现本文描述的一个或多个组件的网络设备的框图。
具体实施方式
以下说明书描述了在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置。在下面的说明书中,阐述了许多具体细节,例如逻辑实现、操作码、指定操作数的装置、资源分区/共享/复制实现、系统组件的类型和相互关系、以及逻辑分区/集成选择,以提供对本发明的更透彻理解。然而,本领域的技术人员将理解,可以在没有这种具体细节的情况下实践本发明。在其他情况下,未详细示出控制结构、门级电路和完整的软件指令序列以免模糊本发明。借助所包括的说明书,本领域普通技术人员将能够实现适当的功能而无需过度的实验。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是不一定每个实施例都包括该特定的特征、结构或特性。而且,这样的短语不一定指同一个实施例。此外,当结合实施例描述特定的特征、结构或特性时,可以认为结合其他实施例来实现这样的特征、结构或特性在本领域技术人员的知识范围内(无论是否被明确描述)。
在本文可以使用带有虚线边框(例如,大虚线、小虚线、点划线和点)的方括号内的文本和框来示出向本发明的实施例添加附加特征的可选操作。然而,这种标记不应该被认为意味着这些是唯一的选项或可选的操作,和/或带有实线边框的框在本发明的特定实施例中不是可选的。
在下面的说明书和权利要求书中,可以使用术语“耦接”和“连接”及其派生词。应该理解,这些术语并不旨在作为彼此的同义词。“耦接”用于指示两个或更多个元件相互协作或交互,这两个元件可以或可以不直接物理或电气接触。“连接”用于指示在彼此耦接的两个或更多个元件之间建立通信。
现有的分布式计算系统专注于实现需要由多个代理执行的多个动作/任务的计划和管理。现有的分布式计算系统不确保计算代理在执行期间遵守其陈述的计划。通常,系统中非受信的计算代理可被请求执行一项任务,但是由于不同的原因可能会执行另一项任务。例如,计算代理可能只是占用资源,从而剥夺了期望执行动作并有权访问资源的代理的权利。
具有协作以执行全局计划的多个计算代理的现有分布式计算系统具有多个缺点。当前的分布式计算系统专注于分布式计算本身的计划方面,以使得管理单元可操作以将任务或动作的子集分发给多个计算代理中的每个计算代理。但是,在任务的执行期间,这些现有系统不确保多个计算代理正确执行它们的被分配的任务或动作。通常,系统中非受信的计算代理可以通告它们将执行给定的任务,但执行另一任务,例如,它们可以只是占用资源,从而剥夺了预期可以访问这些资源的其他计算代理的权利。
区块链系统是用于构建、运行和部署分布式账本(ledger)的平台。分布式账本永久记录并以可验证的方式记录了两方之间发生的交易的数字记录。分布式账本被维护而无需中央授权或实现。分布式账本被称为区块链数据库,区块链数据库包括被链接并使用加密来保护的区块。
本发明的实施例提出了一种用于在具有非受信的多个本地代理的分布式计算系统中实现动作的协调执行的方法和系统。在区块链数据库中记录包括形成全局计划的多个计划的智能合约。每个计划包括要由本地计算代理中相应的本地计算代理执行的一组动作。请求由多个本地计算代理中的第一本地计算代理来执行形成多个计划中的第一计划的第一组动作中的第一动作。请求由多个本地计算代理中的第二本地计算代理来执行形成多个计划中的第二计划的第二组动作中的第二动作的执行。基于智能合约,确定第一动作是否能够由多个本地计算代理中的第一本地计算代理来执行。基于智能合约,确定第二动作是否能够由多个本地计算代理中的第二本地计算代理来执行。响应于确定第一动作能够被执行,使得第一本地计算代理执行第一动作,以及响应于确定第二动作不能被执行,使得第二本地计算代理不执行第二动作。
区块链和智能合约被用于包括需要协作以确保分布式计算环境中的可信交易的多个计算代理的系统中。在一些实施例中,本文提出的解决方案涉及生成具有形成全局计划的本地计划的智能合约。智能合约在被定义为区块链系统的节点的多个本地代理之间被执行时确保每个计算代理对动作的执行受到其他代理的信任。在一个示例性实施例中,本地计划(被独立获得或从全局计划中导出)被记录为用于多个代理的智能合约。代理将与执行动作的意图或动作的完成有关的消息发布在区块链的副本上。在系统的多个计算代理之间运行的验证(validation)和共识机制确保在对一个或多个其他动作或条件的所有依赖性被满足时,动作被允许由相应的代理执行。当计算代理被允许执行动作时,计算代理请求计划执行器执行该动作。
与现有的分布式计算系统相比,所提出的解决方案具有多个优点。该解决方案确保所有计算代理对由所有计算代理执行的计划具有相同的看法。不同的计算代理之间就被执行的动作达成共识。该解决方案还确保任何单个计算代理都不是系统的故障点,因为存储智能合约的区块链数据库被复制在充当区块链节点的每个本地计算代理上。此外,该解决方案确保任何单个代理都不会以恶意意图工作,因为通过使对动作的恶意请求无效,该单个代理将自动地必须为此付出代价。因此,本文提出的解决方案允许在非受信的分布式计算环境中的计算代理之间进行协作。
图1示出了根据一些实施例的用于在具有非受信的多个本地代理的分布式计算系统中实现动作的协调执行的示例性系统100的框图。系统100包括计划确定器102、智能合约生成器110、多个本地计算代理114A-N、计划执行器116和系统状态确定器120。系统100构建在实现智能合约的生成以及智能合约在多个区块链节点之间的执行的区块链平台之上。
计划确定器102包括应用104和计划器(planner)106。应用104可以是一个或多个应用,它们可操作以生成将由计划执行器116通过一个或多个本地计算代理114A-N的协作而执行的全局动作计划。应用104可以单独地或共同地操作以输出包括一组动作的单个全局计划,替代地,应用104可以输出一组多个本地计划,这些本地计划已经被分隔开并且在被协作执行时形成全局动作计划。应用104可以是单个应用,或替代地是与计划器106耦接的多个不同的应用。在一些实施例中,计划器106从应用104接收形成全局计划(作为全局计划或作为将被协作执行并形成全局计划的各个本地计划)的一组动作,以从形成该全局计划的该组动作中确定一个或多个动作子集,其中,每个子集小于整个动作集,并且每个子集形成本地计划。计划器106还为每个动作子集确定要管理该动作子集的执行的对应的本地计算代理。
动作是将由一个或多个计划执行器116执行的任务。在一些实施例中,该组动作包括需要彼此协作或以给定顺序被执行的一个或多个动作。该组动作将由软件、硬件或软件和硬件组件的组合来执行。例如,动作可以是将由诸如处理器、存储器、网络资源之类的计算资源执行的任务。动作可以是将由一个或多个基于云的服务执行的任务。在其他示例中,动作可以是将由机器人的物理部件的控制器执行的任务。在其他实施例中,动作可以由感测设备或IoT设备的致动器执行。在不脱离本发明实施例的范围的情况下,可以设想动作和任务的几个其他示例。
智能合约生成器110是系统的所有本地计算代理114A-N可访问的受信实体。智能合约生成器110与计划确定器102耦接,并且可操作以获取与相应的本地计算代理114A-N相关联的每个本地计划,并输出用于多个本地计划的智能合约。智能合约生成器110可操作以将智能合约112记录在区块链数据库113中。智能合约112包括多个计划。每个计划包括将由本地计算代理114A-N中相应的本地计算代理执行的一组一个或多个动作。除了其中每个特定的本地计划被存储在数据结构中的初始化操作以外,所生成的智能合约对于所有本地计算代理114A-N都是统一的。
本地计算代理114A-N是软件、硬件或软件和硬件实体的组合,它们协作以执行形成全局计划的一组动作。通常,一组动作中的某些动作是相关的,并且可能彼此依赖。本地计算代理114A-N可以包括一个或多个非受信实体。例如,本地计算代理114A-N可以是充当机器人系统(被用于操作由计划执行器116表示的一个或多个机器人的物理组件)中的控制器/操作员的系统的组件。在另一示例中,本地计算代理114A-N可以是物流、服务编排以及系统中系统(systems-of-systems)的控制组件。在一个示例中,本地计算代理114A-N可以是基于云的服务。在另一示例中,本地计算代理114A-N可以是分布式计算系统的资源,诸如网络资源、存储器资源、处理资源等。
本地计算代理114A-N中的每一个包括或可以访问本地区块链基础设施。例如,本地计算代理114A-N中的每一个包括相应的智能合约执行器118A-N。每个智能合约执行器118A-N是区块链节点,并且被绑定为执行在区块链数据库113A-N中记录的用于多个本地计算代理114A-N的智能合约112A-N。每个本地计算代理114A-N具有区块链数据库113A-N的本地副本,该本地副本包括作为由智能合约生成器110记录智能合约的结果的智能合约112A-N的副本。每个智能合约执行器118A-N是可操作以执行智能合约并可以访问包括智能合约112A-N的副本的区块链数据库113A-N的副本的模块。本地计算代理还可以包括相应的控制单元117A-N。控制单元117A-N可操作以与计划执行器116通信,发送对动作的请求并接收对动作的执行的确认。
系统100还包括系统状态确定器120和计划执行器116。系统状态确定器120可操作以获得系统在给定时间的状态。例如,当系统被用于控制一个或多个机器人时,系统状态确定器120可以包括一个或多个感测设备,这些感测设备记录由机器人执行的物理事件的测量。在其他实施例中,系统状态确定器120可以包括一个或多个感测设备,这些感测设备记录通常由本地计算代理操作或控制的电子设备的测量,例如温度、速度、位置等。在一些实施例中,系统状态确定器120可以是可操作以获得由本地计算代理114A-N控制的多个组件的状态的模块。当本地计算代理114A-N是控制在一个或多个电子设备上运行的软件元素的软件组件时,系统状态确定器120可以获得软件元素在给定时间的执行状态。如以下将描述的,系统状态确定器120可以输出并导出测量,这些测量被用于检验由不同的本地计算代理114A-N执行的动作的前提条件和效果。它们作为服务被公开。每个本地计算代理114A-N可以访问谓词(predicate)的值(例如,通过REST API)以评估前提条件和效果是否被满足。
计划执行器116包括可操作以执行形成全局计划的动作的一个或多个模块。一旦动作被检验并被验证以便针对本地计算代理114A-N执行。本地计算代理114A-N将用于执行动作的请求发送给一个或多个计划执行器116。尽管计划执行器116被示为与多个本地计算代理114A-N耦接的单个模块,但是在一些实施例中,计划执行器116可以包括分布在多个电子设备上的多个组件。在一个示例性实施例中,对于每个本地计算代理114A-N,存在与该本地计算代理114A-N唯一地耦接的对应的计划执行器116。在另一个实施例中,单个计划执行器116可以从两个或更多个本地计算代理114A-N接收对动作的请求。在第三示例性实施例中,单个本地计算代理114A-N可以向两个或更多个计划执行器116发送请求。计划执行器116可以是硬件或软件组件、或两者的组合。例如,计划执行器可以是软件处理线程、虚拟机或云计算服务等。替代地,计划执行器116可以是机器人和控制器、传感器及其致动器、IoT设备等的物理组件。
在操作中,一旦计划器106已确定了要由多个本地计算代理114A-N执行的计划集,则智能合约生成器110将包括这些计划的智能合约记录在区块链数据库113中。这导致使智能合约112A-N在每个本地计算代理114A-N的区块链数据库113A-N的本地副本中被重复。多个计划中的每个计划包括要由多个本地计算代理114A-N中相应的本地计算代理执行的一组一个或多个动作,并且多个计划形成全局计划。智能合约包括:已完成动作的列表,其中,已完成动作先前已由一个或多个本地计算代理114A-N执行并在执行完成并确认后被记录在区块链数据库113中;以及用于执行要由每个本地计算代理114A-N执行的该组动作的代码。在一些实施例中,每个动作与以下项相关联:a)要在该动作本身的执行之前被执行的零个或更多个先前动作;b)需要在该动作的执行之前被满足的前提条件,该前提条件指示系统的状态;c)该动作的预期结果;d)本地计算代理114A-N的一个或多个标识符和/或需要接收该动作被执行的确认以及该动作的执行结果的一个或多个动作。
在系统100中,本地计算代理114A-N对本地计划的执行是通过被记录在区块链数据库113A-N中的智能合约112A-N的执行来被执行的。这实现所有动作基于受信平台的协作执行,该受信平台要求每个本地计算代理114A-N只有在动作作为用于多个本地计算代理114A-N的包括所有动作的智能合约的记录和执行的结果而被区块链平台验证时才执行该动作。
与现有的分布式计算系统相比,所提出的解决方案具有多个优点。该解决方案确保所有计算代理对由所有计算代理执行的计划具有相同的看法。不同的计算代理之间就被执行/已完成的动作达成共识。与要执行动作的本地计算代理的标识相关联的动作的记录、需要在代理的执行之前被满足的前提条件、需要在动作的执行之前被执行的先前动作、动作的预期结果以及预期接收动作结果的代理/动作使得能够信任动作的执行。该解决方案还确保任何单个计算代理都不是系统的故障点,因为存储智能合约的区块链数据库被复制在充当区块链节点的每个本地计算代理上。此外,该解决方案确保任何单个代理都不会以恶意意图工作,因为通过使对动作的恶意请求无效,该单个代理将自动地必须为此付出代价。因此,本文提出的解决方案允许在非受信的分布式计算环境中的计算代理之间进行协作。
图2A示出了根据一些实施例的要由一组三个本地计算代理执行的非限制性示例性全局计划。图2A的示例仅旨在是示例性的,并且将用于描述图3A-F的操作。然而,本领域普通技术人员将理解,在不脱离本方面实施例的范围的情况下,可以设想全局计划的其他示例。全局计划200包括一组动作A-G,其中,一些动作彼此依赖。例如,动作D要求动作A在动作D的执行之前被执行。动作E要求D、C和B的执行。动作F要求动作E、D和C的执行,等等。
图2B示出了形成全局计划200的一组非限制性示例性本地计划。每个本地计划将由本地计算代理114A-N中相应的本地计算代理来执行。例如,本地计划210将由本地计算代理114A执行,本地计划212将由第二本地计算代理114B执行,以及本地计划216将由第三本地计算代理114C执行。第一本地计划210包括将由本地计算代理114A执行的三个动作(220、230和240)。动作220、230和240中的每一个包括:a)要在该动作本身的执行之前被执行的零个或更多个先前动作;b)需要在该动作的执行之前被满足的前提条件,该前提条件指示系统正在通过计算代理的动作被控制或操作的状态;c)要被执行的动作;d)动作的预期结果;e)本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作。
例如,动作220包括:用于输入动作的空集,其指示在该动作本身的执行之前不需要执行任何动作;前提条件p1需要在本地计算代理114A执行该动作之前被满足的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作A)的定义;该动作的预期结果p2,其是在本地计算代理114A中执行动作A的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此没有计算代理或动作要接收动作A的结果。
动作230包括:用于输入动作的空集,其指示在该动作本身的执行之前不需要执行任何动作;前提条件p2需要在本地计算代理114A执行该动作之前被满足的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作D)的定义;该动作的预期结果p3,其是在本地计算代理114A中执行动作D的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此是动作E和第二本地计算代理114B。
例如,动作240包括:一组输入动作,其指示动作E需要在该动作本身的执行之前被执行;前提条件p3需要在本地计算代理114A执行该动作之前被满足的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作F)的定义;该动作的预期结果p4,其是在本地计算代理114A中执行动作F的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此没有计算代理或动作要接收动作F的结果。
还向第二本地计算代理114B分配来自全局计划的动作子集212,动作子集212包括要被执行的动作222和232。动作222包括:用于输入动作的空集,其指示在该动作本身的执行之前不需要执行任何动作;在第二本地计算代理114B执行该动作之前第二本地计算代理114B需要满足前提条件p2的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作B)的定义;该动作的预期结果p2,其是在第二本地计算代理114B中执行动作B的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此没有动作和计算代理要接收该结果。
动作232包括:一组输入动作,其指示动作C和D需要在该动作本身的执行之前被执行;在第二本地计算代理114B执行该动作之前本地计算代理114A需要满足前提条件p2并且第二本地计算代理114B需要满足前提条件p2的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作E)的定义;该动作的预期结果p5,其是在第二本地计算代理114B中执行动作E的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此动作F和G要接收该确认和该动作E的执行结果。
还向本地计算代理114C分配来自全局计划的动作子集214,动作子集214包括要被执行的动作224和234。动作224包括:用于输入动作的空集,其指示在该动作本身的执行之前不需要执行任何动作;在本地计算代理114C执行该动作之前本地计算代理114C需要满足前提条件p6的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作C)的定义;该动作的预期结果p2,其是在本地计算代理114C中执行动作C的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此动作E和Fare要接收该确认和/或该结果。
动作234包括:一组输入动作,其指示动作E需要在该动作本身的执行之前被执行;在本地计算代理114C执行该动作之前本地计算代理114C需要满足前提条件p2的指示,该前提条件指示系统正通过计算代理的动作被控制或操作的状态;要被执行的动作(在此是动作G)的定义;该动作的预期结果p7,其是在本地计算代理114C中执行动作G的结果;以及本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作,在此没有动作要接收该确认和动作G的执行结果。
图3A示出了根据一些实施例的用于确定包括要由多个计算代理执行的动作的智能合约的示例性操作的框图。在操作302,从一个或多个应用接收一组动作。该组动作是要在分布式计算系统中被执行并形成全局计划的任务。在一些实施例中,该组动作被作为单个全局计划来接收。替代地,在其他实施例中,该组动作被作为需要被共同执行的多个动作子集来接收。该组动作包括需要彼此协作地或以给定顺序被执行的一个或多个动作。在操作304,计划器106确定一组两个或更多个计划,其中,每个计划是全局计划的一部分并且包括要由一组本地计算代理中相应的本地计算代理执行的一组一个或多个动作。计划器106可以访问分布式计算系统的一组本地计算代理(例如,本地计算代理114A-N),并且可操作以针对每个计算代理确定全局计划中需要由该给定代理执行的一组动作。例如,计算代理可以是需要被协作使用以允许实现一个或多个应用的一组计算资源,例如处理器、存储器、网络资源。在其他示例中,计算代理可以是机器人的可用于控制该机器人的运动的物理部件的控制器。在不脱离本发明实施例的范围的情况下,可以想到计算代理的几个其他示例。
在操作306,该组计划被发送给智能合约生成器110。智能合约生成器110在区块链数据库中记录包括多个计划的智能合约。多个计划中的每个计划包括要由多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作。多个计划中的每个计划的执行将要与来自多个计划中的一个或多个其他计划的一个或多个动作的执行相结合地被执行。在一些实施例中,该组计划中的每个计划是要由给定的计算代理执行的被用依赖关系和环境状态进行注释的动作序列。如参考图2A-B所示,计划中的每个动作可以采用以下格式:<输入动作><前提条件>动作<动作的结果><输出动作/代理>。
其中,“输入动作”表示在当前动作的执行可以开始之前应已经被完成的动作。“输出动作/代理”指示当前动作的完成消息和/或该动作的执行结果要被发送到的计算代理和/或动作。“前提条件”和“动作的结果”是前提条件和预期要从该动作的执行获得的效果/结果。
每个本地计算代理可以访问在区块链数据库的本地副本中的智能合约的本地副本,以及可以在区块链上执行以下操作:请求(动作),已完成(动作,效果(动作))。当完成列表是足够的且前提条件被满足时,请求(动作)被验证。当效果(动作)被满足时,已完成(动作,效果(动作))被验证。
图3B示出了根据一些实施例的用于由分布式计算系统的多个计算代理基于智能合约来执行动作的示例性操作的框图。在操作312A,本地计算代理114A的第一控制单元117A请求执行第一组动作中的第一动作。第一组动作形成计划中被定义为要由第一本地计算代理114A执行的第一计划。例如,第一动作可以是要由第一本地计算代理114A执行的动作F。对第一动作的执行的请求指示本地计算代理114A要执行第一动作的意图并启动在智能合约中记录的该动作的执行。该请求可以是源自管理员或应用的显式请求。替代地,作为与第一本地计算代理114A相关联的第一组动作中的一系列动作的执行的结果,该请求可以源自智能合约本身的代码。
智能合约执行器118A是第一本地计算代理114A中的可操作以执行智能合约并可访问区块链数据库的副本的模块。第一智能合约执行器118A是区块链节点。第一智能合约执行器118A可操作以基于智能合约来确定第一动作能够被执行。如在此进一步详细描述的,可以通过确定一个或多个先前动作是否已经被执行并且通过确定该动作的执行的前提条件是否被满足来执行对该动作是否能够被执行的确定。
在操作314A,第一本地计算代理114A的第一智能合约执行器118A认证第一本地计算代理114A。在一些实施例中,第一本地计算代理114A的认证是基于公共/私有加密密钥认证机制来被执行的。公共/私有加密密钥被分配给第一本地计算代理114A并且被用于标识本地计算代理114A。当在存储智能合约的区块链上执行操作时,公共/私有加密密钥被用于认证本地计算代理114A。
在一个实施例中,一旦本地计算代理114A被认证,则第一智能合约执行器118A基于被记录在区块链数据库中的智能合约来确定期望要在第一动作之前被执行的动作是否被包括在被存储在区块链数据库中的已完成动作集合中。第一智能合约执行器118A基于被存储为区块链数据库中的智能合约的一部分的已完成动作的列表来确定该列表是否包括预期要在所请求的动作之前被执行的动作。
在操作312B,第二本地计算代理114B的第二控制单元117B请求第二组动作中的第二动作的执行。第二组动作形成计划中被定义为要由第二本地计算代理114B执行的第二计划。例如,第二动作可以是要由第二本地计算代理114B执行的动作E。对第二动作的执行的请求指示第二本地计算代理114B要执行第二动作的意图,并启动智能合约中记录的动作的执行。该请求可以是源自管理员或应用的显式请求。替代地,作为与第二本地计算代理114B相关联的第二组动作中的一系列动作的执行的结果,该请求可以源自智能合约本身的代码。
第二智能合约执行器118B是第二本地计算代理114B中的可操作以执行智能合约并可访问区块链数据库的副本的模块。第二智能合约执行器118B是与第一智能合约执行器118A相分离的区块链节点。第二智能合约执行器118B可操作以基于智能合约来确定第二动作能够被执行。如在此进一步详细描述的,可以通过确定一个或多个先前动作是否已经被执行并且通过确定该动作的执行的前提条件是否被满足来执行对该动作是否能够被执行的确定。
在操作314B,第二本地计算代理114B的第二智能合约执行器118B认证第二本地计算代理114B。在一些实施例中,对第二本地计算代理114B的认证是基于公共/私有加密密钥认证机制来被执行的。公共/私有加密密钥被分配给第二本地计算代理114B并被用于标识第二本地计算代理114B。当在存储智能合约的区块链上执行操作时,公共/私有加密密钥被用于认证第二本地计算代理114B。
在一个实施例中,一旦第二本地计算代理114B被认证,则第二智能合约执行器118B基于被记录在区块链数据库中的智能合约来确定期望要在第二动作之前被执行的动作是否被包括在被存储在区块链数据库中的已完成动作集合中。第二智能合约执行器118B基于被存储为区块链数据库中的智能合约的一部分的已完成动作的列表来确定该列表是否包括预期要在所请求的第二动作之前被执行的动作。
尽管以特定顺序示出和描述了操作312A-318A和312B-318B,但是可以以不同的顺序执行这些操作。例如,可以在对第一动作的请求的接收之前执行对第二动作的请求的接收。在另一个示例中,可以由相应的智能合约执行器118A-B基本上同时接收对第一动作和第二动作的请求的接收。在其他示例中,可以在对第二动作的请求之前接收对第一动作的请求。在不脱离本发明实施例的范围的情况下,可以构想各种附加实施例。
图3C示出了根据一些实施例的用于由分布式计算系统的多个计算代理基于智能合约来执行动作的示例性操作的框图。在操作320A,第一控制单元117A向系统状态确定器120请求系统的状态。在一些实施例中,请求系统的状态可以包括获得协作以执行全局计划的动作的本地计算代理114A-N的当前状态。在一些实施例中,请求系统的状态还可以包括从与由本地计算代理114A-N控制的模块耦接的一个或多个传感器获得传感器测量,该传感器测量指示由本地计算代理114A-N通过执行形成全局计划的多个动作来操作/控制的系统的状态。在操作322A,作为对系统的状态的请求的结果,系统状态确定器120将系统的状态记录在区块链数据库中作为智能合约的一部分。在操作323A,作为在操作322A处在区块链数据库中记录系统的状态的结果,第一智能合约执行器118A自动确定针对第一动作的第一前提条件被满足。在确定该前提条件被满足后,基于用于第一本地计算代理114A的智能合约,确定第一动作能够由第一本地计算代理114A执行,以及在操作324A中向第一控制单元117A发送第一动作能够被执行的指示。
在操作320B中,第二控制单元117B向系统状态确定器120请求系统的状态。在一些实施例中,请求系统的状态可以包括获得协作以执行全局计划的动作的本地计算代理114A-N的当前状态。在一些实施例中,请求系统的状态还可以包括从与由本地计算代理114A-N控制的模块耦接的一个或多个传感器获得传感器测量,该传感器测量指示由本地计算代理114A-N通过执行形成全局计划的多个动作来操作/控制的系统的状态。在操作322B,作为对系统的状态的请求的结果,系统状态确定器120将系统的状态记录在区块链数据库中作为智能合约的一部分。在操作323B,作为在操作322B处在区块链数据库中记录系统的状态的结果,第二智能合约执行器118B自动确定针对第二动作的第二前提条件未被满足。在确定该前提条件未被满足后,基于用于第二本地计算代理114B的智能合约,确定第二动作不能由第二本地计算代理114B执行,以及在操作324B向第二控制单元117B发送第二动作不能被执行的指示。
在一些实施例中,为了确定动作能够被执行,每个智能合约执行器确定前提条件被满足并且预期要在当前动作之前被执行的所有动作已被执行。在其他实施例中,如图2A-B的示例所示,没有预期要在当前动作之前被执行的动作。
图3D示出了根据一些实施例的在基于智能合约确定动作被授权之后该动作被执行时所执行的示例性操作的框图。在操作326,在确定第一动作能够被执行后,第一控制单元117A向计划执行器116发送用于执行第一动作的命令。计划执行器116执行第一动作,以及在操作330向第一控制单元117A发送第一动作被执行的确认。包括该确认的消息还可以包括该动作的执行结果。在操作332,第一控制单元117A向智能合约执行器118A发送该确认和该动作的结果,以及在操作334请求获得在该动作的执行之后的系统的状态。在操作336,这使得系统状态确定器将系统的当前状态记录在区块链数据库中。在操作337,智能合约执行器确定该动作的结果有效。例如,智能合约执行器确定在操作336记录的状态与智能合约中记录的本地计算代理114A对第一动作的执行所关联的预期结果相对应。在操作338,响应于确定第一动作的结果满足用于第一动作的第一智能合约中的预期结果,第一智能合约执行器118A将第一动作作为已完成动作来记录在区块链数据库中。
图3E示出了根据一些实施例的用于确定第二动作能够由第二计算代理执行的示例性操作的框图。在操作346,第二本地计算代理114B的智能合约执行器确定预期要在第二动作之前被执行的动作(例如,第一动作)被包括在被存储在区块链数据库中的第二已完成动作集合中。在该示例中,第一动作已经被记录在已完成动作集合中,并且第二智能合约执行器118B基于智能合约已被完成而现在可以确定针对第二动作的前提条件是否被满足。在操作348,智能合约执行器基于第二当前状态以及基于记录针对第二动作的前提条件的智能合约,确定针对第二动作的第二前提条件被满足。在操作350,向控制单元117B发送第二动作能够被执行的指示。
图3F示出了根据一些实施例的被执行以用于在确定第二动作被授权时执行该第二动作的示例性操作的框图。在操作354,在确定第二动作能够被执行后,第二控制单元117B向计划执行器116发送用于执行第二动作的命令。计划执行器116执行第二动作并在操作358向第二控制单元117B发送第二动作被执行的确认。包括该确认的消息还可以包括该动作的执行结果。第二控制单元117B在操作360向智能合约执行器118B发送该确认和该动作的结果,以及在操作362请求获得在该动作的执行之后的系统的状态。在操作364,这使得系统状态确定器120将系统的当前状态记录在区块链数据库中。在操作366,第二智能合约执行器118B确定该动作的结果有效。例如,智能合约执行器确定在操作364记录的状态与在智能合约中记录的由本地计算代理114B对第二动作的执行所关联的预期结果相对应。在操作368,响应于确定第二动作的结果满足智能合约中针对第二动作的预期结果,第二智能合约执行器118B将第二动作作为已完成动作记录在区块链数据库中。
将参考图1-3F的示例性实施例描述以下流程图中的操作。然而,应当理解,流程图的操作可以由本发明的除了参考其他附图所讨论的实施例以外的实施例来执行,以及参考图1-3F所讨论的本发明的实施例可以执行与参考流程图讨论的那些操作不同的操作。
图4A示出了根据一些实施例的用于在具有非受信实体的分布式计算系统中实现动作的协调执行的示例性操作的流程图。在一些实施例中,图4A的操作由系统100的一个或多个组件执行,如参考图1所讨论的。在其他实施例中,其他系统可以执行图4A的操作,而不脱离本发明实施例的范围。在操作410,在区块链数据库中记录包括形成全局计划的多个计划的智能合约。多个计划中的每个计划包括要由多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作。在一些实施例中,本地计划的每个动作与要执行该动作的计算代理相关联地被记录。针对本地计算代理的给定计划记录的每个动作包括:a)要在该动作本身的执行之前被执行的零个或更多个先前动作;b)需要在该动作的执行之前被满足的前提条件,该前提条件指示系统正在通过计算代理的动作被控制或操作的状态;c)要被执行的该动作;d)该动作的预期结果;e)本地计算代理的一个或多个标识符和/或需要接收该动作被执行的确认和/或该动作的执行结果的一个或多个动作。例如,智能合约生成器110记录用于多个本地计算代理114A-N的智能合约,其中,每个计算代理与它要执行的并且被记录为智能合约的一部分的一组动作相关联。
在操作415,请求第一本地计算代理执行第一动作。第一动作是形成第一计划的第一组动作中的动作。第一计划是要由第一本地计算代理执行的全局计划的子集。例如,第一计划的该组动作由计划器106确定以由第一本地计算代理114A执行。在操作420,请求由本地计算代理中的第二本地计算代理执行第二动作。第二动作是形成第二计划的第二组动作中的动作。在一些实施例中,第二计划不同于第一计划。例如,第二计划与第一计划的不同之处至少在于以下事实:第二计划必须由与第一计算代理不同且分离的第二计算代理来执行。
在操作425,基于智能合约来执行第一动作是否能够由第一本地计算代理执行的确定。在一些实施例中,基于智能合约来确定第一动作是否能够由第一本地计算代理执行包括如图4B所示的操作426和427。图4B示出了根据一些实施例的用于基于智能合约来确定第一动作是否能够由第一本地计算代理执行的示例性操作的流程图。在操作426,基于智能合约来执行预期要在第一动作之前被执行的动作是否被包括在被存储在区块链数据库中的已完成动作集合中的确定。该已完成动作集合包括已经由多个本地计算代理中的一个或多个本地计算代理执行的一个或多个动作。在一些实施例中,没有需要在第一动作之前被完成的动作,并且该操作427被跳过。在操作428,基于智能合约来执行要在第一动作的执行之前被满足的第一组一个或多个前提条件是否被满足的确定。
在操作430,基于智能合约来执行第二动作是否能够由第二本地计算代理执行的确定。在一些实施例中,基于智能合约来确定第二动作是否能够由第二本地计算代理执行包括图4C所示的操作431和432。图4C示出了根据一些实施例的用于基于智能合约来确定第二动作是否能够由第二本地计算代理执行的示例性操作的流程图。在操作431,基于智能合约来执行预期要在第二动作之前被执行的动作是否被包括在被存储在区块链数据库中的已完成动作集合中的确定。该已完成动作集合包括已经由本地计算代理中的一个或多个本地计算代理执行的一个或多个动作。在一些实施例中,没有需要在第二动作之前被完成的动作,并且该操作431被跳过。在操作432,基于智能合约来执行要在第二动作的执行之前被满足的第二组一个或多个前提条件是否被满足的确定。
操作流进行到操作435,响应于确定第一动作能够被执行,使得第一本地计算代理执行第一动作。在一些实施例中,确定第一动作能够被执行包括:确定需要在第一动作的执行之前被完成的任何动作被包括在被存储在区块链数据库中的该已完成动作集合中,这是通过执行用于本地计算代理的智能合约来完成的。另外,在一些实施例中,确定第一动作能够被执行可以包括:确定预期要在第一动作的执行之前被执行的前提条件被满足。在一些实施例中,如果不满足前提条件或已完成动作条件中的任何一个,则第一动作不能被执行。
在操作440,响应于确定第二动作不能被执行,使得第二本地计算代理不执行第二动作。在一些实施例中,确定第二动作能够被执行包括:确定需要在第二动作的执行之前被完成的任何动作被包括在被存储在区块链数据库中的该已完成动作集合中,这是通过执行用于本地计算代理的智能合约来完成的。另外,在一些实施例中,确定第二动作能够被执行可以包括:确定预期要在第二动作的执行之前被执行的前提条件被满足。在一些实施例中,如果不满足前提条件或已完成动作条件中的任何一个,则第二动作不能被执行。例如,当预期第一动作要在第二动作之前被执行并且第一动作尚未被完成时,确定第二动作不能被执行包括:确定(图4D的操作441)第一动作未被包括在被存储在区块链数据库中的该已完成动作集合中。替代地,当第一动作被存储在该已完成动作集合中时,第二动作能够被执行。
图5示出了根据一些实施例的用于将动作作为已完成动作记录在区块链数据库中的示例性操作的流程图。在操作510,接收第一动作被执行的确认以及第一动作的执行结果。
在操作515,基于智能合约来执行第一动作的执行结果是否有效的确定。在一些实施例中,第一动作的执行结果是否有效的确定包括操作516-519。在操作516,请求全局计划要在其中被执行的计算系统(例如,系统100)的状态。系统的状态可以包括作为系统的一部分的本地计算代理的状态。在一些实施例中,通过将请求发送给系统状态确定器120来获得系统的状态,如参考图3A-F所述。在操作518,将计算系统的状态记录在区块链数据库中。流程然后转到操作519,在操作519,基于被记录在区块链数据库中的智能合约来执行计算系统的状态与被记录在区块链数据库中的第一动作的预期结果一致的确定。第一动作的预期结果被记录在区块链数据库中,作为用于与要执行第一动作的第一本地计算代理相关联的第一动作的智能合约的代码的一部分。流程然后移至操作520,在操作520,响应于确定第一动作的执行结果有效,第一动作作为已完成动作集合的一部分被记录在区块链数据库中。
在一些实施例中,当第二动作需要第一动作被执行时,在将第一动作记录在区块链数据库中之后,使得第二本地计算代理确定第二动作能够被执行,以及响应于确定第二动作能够被执行,第二本地计算代理执行第二动作。
与现有的分布式计算系统相比,所提出的解决方案具有多个优点。该解决方案确保所有计算代理对由所有计算代理执行的计划具有相同的看法。不同的计算代理之间就被执行/已完成的动作达成共识。与要执行动作的本地计算代理的标识相关联的动作的记录、需要在代理的执行之前被满足的前提条件、需要在动作的执行之前被执行的先前动作、动作的预期结果以及预期接收动作结果的代理/动作使得能够信任动作的执行。该解决方案还确保任何单个计算代理都不是系统的故障点,因为存储智能合约的区块链数据库被复制在充当区块链节点的每个本地计算代理上。此外,该解决方案确保任何单个代理都不会以恶意意图工作,因为通过使对动作的恶意请求无效,该单个代理将自动地必须为此付出代价。因此,本文提出的解决方案允许在非受信的分布式计算环境中的计算代理之间进行协作。
电子设备使用机器可读介质(也称为计算机可读介质)来存储和传输(内部地和/或通过网络使用其他电子设备)代码(代码包括软件指令,有时被称为计算机程序代码或计算机程序)和/或数据,机器可读介质例如机器可读存储介质(例如磁盘、光盘、固态驱动器、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也称为载波)(例如,电、光、无线电、声音或其他形式的传播信号,例如载波、红外信号)。因此,电子设备(例如,计算机)包括硬件和软件,例如一组一个或多个处理器(例如,其中处理器是微处理器、控制器、微控制器、中央处理单元、数字信号处理器、专用集成电路、现场可编程门阵列、其他电子电路、一个或多个以上项的组合),该组处理器被耦接到存储用于在该组处理器上执行的代码和/或存储数据的一个或多个机器可读存储介质。例如,电子设备可以包括包含代码的非易失性存储器,这是因为即使当电子设备被关闭(当电源被切断)时,非易失性存储器也可以保持代码/数据,以及当电子设备被开启时,该电子设备的处理器要执行的那部分代码通常从该电子设备的较慢的非易失性存储器被复制到易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))中。典型的电子设备还包括一组或一个或多个物理网络接口(NI)以建立与其他电子设备的网络连接(以使用传播信号来发送和/或接收代码和/或数据)。例如,该组物理NI(或该组物理NI与执行代码的该组处理器相结合)可以执行任何格式化、编码或转换,以允许电子设备发送和接收数据(无论是通过有线连接和/或无线连接)。在一些实施例中,物理NI可以包括能够通过无线连接从其他电子设备接收数据和/或经由无线连接向其他设备发送数据的无线电电路。该无线电电路可以包括适合于射频通信的发射机、接收机和/或收发机。无线电电路可以将数字数据转换成具有适当参数(例如,频率、定时、信道、带宽等)的无线电信号。无线电信号然后可以通过天线被发送给适当的接收者。在一些实施例中,该组物理NI可以包括网络接口控制器(NIC),也称为网络接口卡、网络适配器或局域网(LAN)适配器。NIC可以有助于将电子设备连接到其他电子设备,从而允许它们通过将电缆插入被连接到NIC的物理端口来经由导线进行通信。可以使用软件、固件和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。
网络设备(ND)是通信地互连网络上的其他电子设备(例如,其他网络设备、最终用户设备)的电子设备。一些网络设备是“多种服务网络设备”,其提供对多种联网功能(例如,路由、桥接、交换、第二层聚合、会话边界控制、服务质量和/或订户管理)的支持,和/或提供对多种应用服务(例如,数据、语音和视频)的支持。在上述实施例中,系统100的组件可以在网络中被耦接的一个或多个网络设备上实现。例如,计划确定器102(其包括应用104和计划器106)、计划执行器116、智能合约生成器110、本地计算代理114A-N、以及系统状态确定器120中的每一个可以在一个ND上实现或分布在多个ND上。虽然每个区块链数据库113A-N被示为单个实体,但是本领域的普通技术人员将理解,区块链数据库是在多个网络设备上实现的许可式分布式账本,以使得区块链数据库的副本被复制在充当区块链节点的每个数据中心中。
图6示出了根据一些实施例的能够用于实现本文描述的一个或多个组件的网络设备的框图。网络设备630可以是在服务器硬件上运行的Web服务器或云服务器或服务器集群。根据一个实施例,网络设备是包括服务器硬件605的服务器设备。服务器硬件605包括一个或多个处理器616、与计算机可读存储介质612耦接的网络通信接口660。计算机可读存储介质612可以包括计划确定器代码6102(其包括应用代码6104和计划器代码6106)、计划执行器代码6116、智能合约生成器代码6110、本地计算代理代码(6114A-N)、以及系统状态确定器代码6120中的一个或多个。在一些实施例中,被存储在计算机可读存储介质612中的各种代码可以被存储在单独的可读存储介质单元中,以使得不同的组件在物理上彼此分离。
虽然一个实施例不实现虚拟化,但是替代实施例可以使用由虚拟化层1120表示的不同形式的虚拟化。在这些实施例中,实例1140和执行它的硬件形成作为被存储在计算机可读存储介质1114上的模块的软件实例的虚拟服务器。
计划确定器代码6102(其包括应用代码6104和计划器代码6106)、计划执行器代码6116、智能合约生成器代码6110、本地计算代理代码(6114A-N)、以及系统状态确定器代码6120中的每一个包括指令,这些指令在由服务器硬件605执行时使实例640分别实现计划确定器102(其包括应用104和计划器106)、计划执行器116、智能合约生成器110、本地计算代理114A-N、以及系统状态确定器120。尽管网络设备被示为包括计划确定器102(其包括应用104和计划器106)、计划执行器116、智能合约生成器110、本地计算代理114A-N、以及系统状态确定器120中的每一个的实例,在一些实施例中,服务器可以包括这些组件的子集。在其他实施例中,这些实例中的两个或更多个可以在同一服务器上被执行。
尽管附图中的流程图示出了由本发明的特定实施例执行的操作的特定顺序,但是应当理解,该顺序是示例性的(例如,替代实施例可以以不同的顺序执行操作、组合特定操作、重叠特定操作等)。
尽管已经根据几个实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,可以通过在所附权利要求的精神和范围内的修改和改变来实施本发明。因此,说明书应被认为是说明性的而不是限制性的。
Claims (12)
1.一种在具有非受信的多个本地计算代理的分布式计算系统中实现动作的协调执行的方法,所述方法包括:
在区块链数据库中记录(410)包括形成全局计划的多个计划的智能合约,其中,所述多个计划中的每个计划包括要由所述多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作;
请求(415)由所述多个本地计算代理中的第一本地计算代理来执行形成所述多个计划中的第一计划的第一组动作中的第一动作;
请求(420)由所述多个本地计算代理中的第二本地计算代理来执行形成所述多个计划中的第二计划的第二组动作中的第二动作的执行;
基于所述智能合约,确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行;
基于所述智能合约,确定(430)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行;
响应于确定所述第一动作能够被执行,使得(435)所述多个本地计算代理中的所述第一本地计算代理执行所述第一动作;以及
响应于确定所述第二动作不能被执行,使得(440)所述多个本地计算代理中的所述第二本地计算代理不执行所述第二动作;
所述方法还包括:
接收(510)所述第一动作被执行的确认以及所述第一动作的执行结果;
基于所述智能合约,确定(515)所述第一动作的所述执行结果是否有效;以及
响应于确定所述第一动作的所述执行结果有效,将所述第一动作记录(520)在所述区块链数据库中作为已完成动作集合的一部分;
其中,确定(515)所述第一动作的所述执行结果是否有效包括:
请求(516)所述全局计划要在其中被执行的计算系统的状态;
将所述计算系统的所述状态记录(518)在所述区块链数据库中;以及
基于被记录在所述区块链数据库中的所述智能合约,确定(519)所述计算系统的所述状态与被记录在所述区块链数据库中的所述第一动作的预期结果一致;
所述方法还包括:在所述区块链数据库中记录(520)所述第一动作之后:
使得所述多个本地计算代理中的所述第二本地计算代理:
确定所述第二动作能够被执行,以及
响应于确定所述第二动作能够被执行,使得所述多个本地计算代理中的所述第二本地计算代理执行所述第二动作。
2.根据权利要求1所述的方法,其中,基于所述智能合约来确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行包括:
基于所述智能合约,确定(426)预期要在所述第一动作之前被执行的动作是否被包括在被存储在所述区块链数据库中的已完成动作集合中,其中,所述已完成动作集合包括已经由所述多个本地计算代理中的一个或多个本地计算代理执行的一个或多个动作;以及
其中,基于所述智能合约来确定(430)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行包括:
基于所述智能合约,确定(431)预期要在所述第二动作之前被执行的动作是否被包括在被存储在所述区块链数据库中的所述已完成动作集合中。
3.根据权利要求2所述的方法,其中,预期所述第一动作要在所述第二动作之前被执行,并且确定所述第二动作不能被执行包括:确定(441)所述第一动作未被包括在被存储在所述区块链数据库中的所述已完成动作集合中。
4.根据权利要求1至3中任一项所述的方法,
其中,基于所述智能合约来确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行包括:
基于所述智能合约,确定(427)预期要在所述第一动作的执行之前被满足的第一组一个或多个前提条件是否被满足;以及
其中,基于所述智能合约来确定(430)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行包括:
基于所述智能合约,确定(432)预期要在所述第二动作的执行之前被满足的第二组一个或多个前提条件是否被满足。
5.根据权利要求1至3中任一项所述的方法,其中,所述多个计划中的每个计划的执行将要与来自所述多个计划中的一个或多个其他计划的一个或多个动作的执行相结合地被执行。
6.根据权利要求1至3中任一项所述的方法,还包括:
从所述全局计划中生成所述多个计划,其中,所述多个计划中的每个计划将由所述多个本地计算代理中相应的本地计算代理来执行。
7.一种用于在具有非受信的多个本地计算代理的分布式计算系统中实现动作的协调执行的系统,所述系统包括:
智能合约生成器,可操作以在区块链数据库中记录(410)包括形成全局计划的多个计划的智能合约,其中,所述多个计划中的每个计划包括要由所述多个本地计算代理中相应的本地计算代理执行的一组一个或多个动作;
所述多个本地计算代理中的第一本地计算代理,可操作以:
请求(415)由所述多个本地计算代理中的所述第一本地计算代理来执行形成所述多个计划中的第一计划的第一组动作中的第一动作的执行;
基于所述智能合约,确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行;以及
响应于确定所述第一动作能够被执行,使得所述多个本地计算代理中的所述第一本地计算代理执行所述第一动作;以及
所述多个本地计算代理中的第二本地计算代理,可操作以:
请求(420)由所述多个本地计算代理中的所述第二本地计算代理来执行形成所述多个计划中的第二计划的第二组动作中的第二动作的执行;
基于所述智能合约,确定(435)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行;
响应于确定所述第二动作不能被执行,使得所述多个本地计算代理中的所述第二本地计算代理不执行所述第二动作;
其中,所述多个本地计算代理中的所述第一本地计算代理还可操作以:
接收(510)所述第一动作被执行的确认以及所述第一动作的执行结果;
基于所述智能合约,确定(515)所述第一动作的所述执行结果是否有效;以及
响应于确定所述第一动作的所述执行结果有效,将所述第一动作记录(520)在所述区块链数据库中作为已完成动作集合的一部分;
其中,基于所述智能合约来确定(515)所述第一动作的所述执行结果是否有效包括:
请求(516)所述全局计划要在其中被执行的计算系统的状态;
将所述计算系统的所述状态记录(518)在所述区块链数据库中;以及
基于被记录在所述区块链数据库中的所述智能合约,确定(519)所述计算系统的所述状态与被记录在所述区块链数据库中的所述第一动作的预期结果一致;
所述系统还包括:在所述区块链数据库中记录(520)所述第一动作之后:
使得所述多个本地计算代理中的所述第二本地计算代理:
确定所述第二动作能够被执行,以及
响应于确定所述第二动作能够被执行,使得所述多个本地计算代理中的所述第二本地计算代理执行所述第二动作。
8.根据权利要求7所述的系统,
其中,基于所述智能合约来确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行包括:
基于所述智能合约,确定(426)预期要在所述第一动作之前被执行的动作是否被包括在被存储在所述区块链数据库中的已完成动作集合中,其中,所述已完成动作集合包括已经由所述多个本地计算代理中的一个或多个本地计算代理执行的一个或多个动作;以及
其中,基于所述智能合约来确定(430)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行包括:
基于所述智能合约,确定(431)预期要在所述第二动作之前被执行的动作是否被包括在被存储在所述区块链数据库中的所述已完成动作集合中。
9.根据权利要求8所述的系统,其中,所述第一动作被预期要在所述第二动作之前被执行,并且确定所述第二动作不能被执行包括:确定(441)所述第一动作未被包括在被存储在所述区块链数据库中的所述已完成动作集合中。
10.根据权利要求7至9中任一项所述的系统,
其中,基于所述智能合约来确定(425)所述第一动作是否能够由所述多个本地计算代理中的所述第一本地计算代理来执行包括:
基于所述智能合约,确定(427)预期要在所述第一动作的执行之前被满足的第一组一个或多个前提条件是否被满足;以及
其中,基于所述智能合约来确定(430)所述第二动作是否能够由所述多个本地计算代理中的所述第二本地计算代理来执行包括:
基于所述智能合约,确定(432)预期要在所述第二动作的执行之前被满足的第二组一个或多个前提条件是否被满足。
11.根据权利要求7至9中任一项所述的系统,其中,所述多个计划中的每个计划的执行将要与来自所述多个计划中的一个或多个其他计划的一个或多个动作的执行相结合地被执行。
12.根据权利要求7至9中任一项所述的系统,其中,所述系统还可操作以:
从所述全局计划中生成所述多个计划,其中,所述多个计划中的每个计划将由所述多个本地计算代理中相应的本地计算代理来执行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IN2018/050595 WO2020053872A1 (en) | 2018-09-14 | 2018-09-14 | In a distributed computing system with untrusted entities method and apparatus for enabling coordinated executions of actions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112673350A CN112673350A (zh) | 2021-04-16 |
CN112673350B true CN112673350B (zh) | 2024-04-19 |
Family
ID=69778491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880097359.1A Active CN112673350B (zh) | 2018-09-14 | 2018-09-14 | 用于在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210194890A1 (zh) |
EP (1) | EP3850483A4 (zh) |
CN (1) | CN112673350B (zh) |
WO (1) | WO2020053872A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11295024B2 (en) | 2019-01-18 | 2022-04-05 | Red Hat, Inc. | Providing smart contracts including secrets encrypted with oracle-provided encryption keys using threshold cryptosystems |
US11593493B2 (en) | 2019-01-18 | 2023-02-28 | Red Hat, Inc. | Providing smart contracts including secrets encrypted with oracle-provided encryption keys |
US11316660B2 (en) * | 2019-02-21 | 2022-04-26 | Red Hat, Inc. | Multi-stage secure smart contracts |
US11451380B2 (en) | 2019-07-12 | 2022-09-20 | Red Hat, Inc. | Message decryption dependent on third-party confirmation of a condition precedent |
US20220091903A1 (en) * | 2020-09-18 | 2022-03-24 | International Business Machines Corporation | Workload orchestration in a multi-cloud environment |
CN113630438B (zh) * | 2021-06-25 | 2024-01-12 | 微梦创科网络科技(中国)有限公司 | 流处理任务调度方法和分布式流处理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5329626A (en) | 1990-10-23 | 1994-07-12 | Digital Equipment Corporation | System for distributed computation processing includes dynamic assignment of predicates to define interdependencies |
US20180096175A1 (en) * | 2016-10-01 | 2018-04-05 | James L. Schmeling | Blockchain Enabled Packaging |
US20170011460A1 (en) * | 2015-07-09 | 2017-01-12 | Ouisa, LLC | Systems and methods for trading, clearing and settling securities transactions using blockchain technology |
US20170140408A1 (en) * | 2015-11-16 | 2017-05-18 | Bank Of America Corporation | Transparent self-managing rewards program using blockchain and smart contracts |
US10108954B2 (en) * | 2016-06-24 | 2018-10-23 | PokitDok, Inc. | System and method for cryptographically verified data driven contracts |
WO2018078584A1 (en) | 2016-10-28 | 2018-05-03 | nChain Holdings Limited | Systems and methods for implementing deterministic finite automata (dfas) via a blockchain |
US10896418B2 (en) * | 2017-12-29 | 2021-01-19 | Ebay Inc. | Secure management of data files using a blockchain |
US11475419B2 (en) * | 2018-04-30 | 2022-10-18 | Robert Dale Beadles | Universal subscription and cryptocurrency payment management platforms and methods of use |
US11038948B2 (en) * | 2018-05-24 | 2021-06-15 | Cisco Technology, Inc. | Real time updates and predictive functionality in block chain |
WO2020002974A1 (en) * | 2018-06-30 | 2020-01-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for implementing a distributed blockchain transaction processing element in a datacenter |
-
2018
- 2018-09-14 WO PCT/IN2018/050595 patent/WO2020053872A1/en unknown
- 2018-09-14 US US17/273,087 patent/US20210194890A1/en active Pending
- 2018-09-14 EP EP18933148.1A patent/EP3850483A4/en active Pending
- 2018-09-14 CN CN201880097359.1A patent/CN112673350B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3850483A4 (en) | 2021-10-27 |
EP3850483A1 (en) | 2021-07-21 |
CN112673350A (zh) | 2021-04-16 |
US20210194890A1 (en) | 2021-06-24 |
WO2020053872A1 (en) | 2020-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112673350B (zh) | 用于在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置 | |
US11122023B2 (en) | Device communication environment | |
US10547710B2 (en) | Device gateway | |
EP3603031B1 (en) | Device credentials management | |
US10958648B2 (en) | Device communication environment | |
US10523537B2 (en) | Device state management | |
US11765123B1 (en) | Receiving a data object at a device | |
US9973593B2 (en) | Device gateway | |
US20190238338A1 (en) | Cloning drones using blockchain | |
KR20190061018A (ko) | IoT 디바이스의 자동 프로비저닝 | |
WO2015167595A1 (en) | Network infrastructure management | |
US11128464B1 (en) | Identity token for accessing computing resources | |
US11323317B1 (en) | Software capabilities management from a service provider environment | |
US11716251B2 (en) | Communication system, provider node, communication node, and method for providing a virtual network function to a customer node | |
US20210099339A1 (en) | Template-based onboarding of internet-connectible devices | |
US20170026236A1 (en) | A method and a system for the deterministic autoconfiguration of a device | |
WO2022037239A1 (en) | System and methods for supporting artificial intelligence service in a network | |
KR101759429B1 (ko) | 멀티 도메인 환경에서 도메인과 대응되는 피어 및 이의 제어 방법 | |
JP2023120287A (ja) | 拡張可能な証明書管理システムアーキテクチャ | |
US10708129B1 (en) | Changing hardware capabilities of a device | |
CN110720092B (zh) | 在装置处接收数据对象 | |
WO2017004251A1 (en) | Method and system for function and service discovery | |
CN110730959A (zh) | 用于执行由区块链请求的动作的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |