CN103843308A - 跨越多个计算设备分布的应用的执行 - Google Patents

跨越多个计算设备分布的应用的执行 Download PDF

Info

Publication number
CN103843308A
CN103843308A CN201280048624.XA CN201280048624A CN103843308A CN 103843308 A CN103843308 A CN 103843308A CN 201280048624 A CN201280048624 A CN 201280048624A CN 103843308 A CN103843308 A CN 103843308A
Authority
CN
China
Prior art keywords
application
remote
execution
computing equipment
service
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.)
Pending
Application number
CN201280048624.XA
Other languages
English (en)
Inventor
约翰·C·科特尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN103843308A publication Critical patent/CN103843308A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/35Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • H04L2101/35Types of network names containing special prefixes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

根据一个实施例,一种***包括至少一个处理器。所述***在计算设备上检测促进一个或多个应用的执行的调用事件。所述应用包括至少一个远程应用。搜索路径被检查以确定所述一个或多个应用的位置,并且包括指示用于执行对应的远程应用的远程位置的至少一个指示符。与所述至少一个远程应用相关联的每个指示符被解析以确定用于执行所述对应的远程应用的远程位置。所述应用在所确定的位置处被执行,同时每个远程应用在所述对应的远程位置处的对应的远程计算设备上被执行。实施例可以进一步包括用于以上面所描述的基本上相同的方式执行跨越多个计算设备分布的应用的方法和编码有用于执行该方法的软件的计算机可读介质。

Description

跨越多个计算设备分布的应用的执行
技术领域
本公开涉及应用的执行,并且更具体地,涉及在应用调用的位置本地和远程分布和跨越多个计算设备分布的各种应用的执行。
背景技术
分布式处理框架(例如CORBA、DCOM、.NET、EJB、JINI、Javaspaces、Web服务等)试图协调跨越相连接的计算设备的环境中的应用的功能执行。然而,随着分布式处理框架的成熟,由于应用本身的编码的复杂性或由于应用将任务委派给的框架的复杂性,应用开发人员或管理员对框架的使用变得越来越不便。例如,应用服务器典型地花费数分钟启动,加载数万或数十万个类,并且在执行单个应用事务之前消耗数百兆字节的内存。
分布式处理框架典型地持续消耗资源(例如,无论框架是否正在执行任何有用的工作),并且趋于要么对于应用和支持服务(例如.NET或Java变体中的任一个)而言为技术特定的,要么与技术无关但要求多个技术特定的实施方式(例如CORBA、X-Window)。分布式处理框架实施方式的技术特定性质可能是框架与现有应用的适应性的约束,或者是与新的应用编程语言和新兴工具集成的障碍。
附图说明
图1是用于本实施例的示例拓扑的示意图示。
图2是根据实施例具有用于提供分布式处理接口的模块的主机***的框图。
图3是图示了根据实施例跨越多个主机***分布的示例应用被执行的方式的过程流程图。
图4是图示了根据实施例的示例远程应用的执行的流程图。
图5是图示了根据实施例的跨越多个主机***分布的数个示例应用的执行的流程图。
具体实施方式
概述
根据一个实施例,***包括至少一个处理器。***在计算设备上检测促进一个或多个应用的执行的调用事件。应用包括各自用于在对应的远程计算设备上执行的至少一个远程应用。搜索路径被检查以确定一个或多个应用的位置。搜索路径包括各自与对应的远程应用相关联并且指示用于对应的远程应用的执行的远程位置的至少一个指示符。与所述至少一个远程应用相关联的每个指示符被解析以确定用于对应的远程应用的执行的远程位置。所述一个或多个应用在所确定的位置处被执行,同时每个远程应用在对应远程位置处的对应的远程计算设备上被执行。实施例可以进一步包括用于以上面所描述的基本上相同的方式来执行跨越多个计算设备分布的应用的方法和具有用于执行上述方法的软件的计算机可读介质。
示例实施例
本文中所描述的实施例针对用于管理用于驻留在采用兼容的网络可访问操作***的设备的任何组合上的应用的分布式处理的功能的分布式处理接口。进一步地,各种增值能力可以被叠加在这个功能上。本实施例从云使能操作***的开发人员和/或应用的角度上具有效果,其中,在云使能操作***中,在任何计算设备上调用的任何应用在网络内任何地方被全局动态地发现并且执行。本实施例提供了操作***与应用之间的接口,并且透明地执行应用而不论应用驻留在哪里(好像应用是本地的)。接口可以接收并且处理来自代码(例如,程序、脚本、宏等)的命令或指令,或者可替代地,接口为接收并且处理来自用户的命令或指令的外壳的形式。此外,应用可以被动态地组合或者分发以用代理范式在最佳位置中(或者在具有最佳可用资源的计算设备上)执行。
本实施例的分布式处理接口提供了数个优点。特别地,分布式处理接口动态地定位一个或多个本地或远程应用,并且在定义的工作流中执行应用。进一步地,分布式处理接口管理应用之间的所有通信,对于应用和通信两者加强安全,并且在完成之后释放所有分配的资源。分布式处理接口可以无关于应用技术和数据交换协议,并且不干扰应用代码。而且,分布式处理接口作为应用与操作***(和/或网络)之间的中介物以应用各种增值能力。分布式处理接口可以被实现为用于与用户交互的外壳,或者可替代地,被嵌入在操作***(例如,可执行库等)内或者与其紧密地集成。
本实施例的分布式处理接口修改执行路径(例如,由PATH命令或环境变量(例如,$PATH)来指示的执行路径)以将域名服务(DNS-SD)查找表包括为服务位置的一部分。例如,在分布式处理接口实施例的外壳提示符(“nsh>”)处键入的以下命令:
nsh>export PATH=/bin;/usr/bin;myapps.domain.com
nsh>hello_world,
并通过针对提供所期望的服务的称作“hello_world”的应用的可执行文件(例如,包含具有使计算机***执行任务的形式的应用代码(例如,典型地为用于物理处理器的机器代码)的文件)来搜索“/bin”和“/usr/bin”目录而对以上命令进行处理。当应用未驻留在这些目录内时,则提供对“hello_world.myapps.domain.com”的域名服务(DNS)查找。如果互联网协议(IP)地址被从该查找返回(例如,不管DNS查找是否是负载平衡、群集、故障转移等的结果),则应用或服务位置被认为是成功的。定位远程和本地应用的优先级被搜索路径中指令符序列控制(例如,由PATH或其它命令或$PATH或其它环境变量来指示)。将待搜索的服务或计算设备的DNS名称包括在搜索路径内的能力使得服务的位置(无论本地还是在远程计算设备上)能够为隐式的、透明的、自动的,并且使用搜索路径中的条目的排序按优先级排序。
如果应用被远程地定位,则分布式处理接口结合安全远程执行能力来建立到远程主机***的安全连接(例如,经由任何常规或其它安全技术),执行远程应用,并且将输出输送回分布式处理接口。在远程主机***处的架构采用这些能力的类似能力,其中进程管理器守护程序接收对应用执行的请求并且发起(或者分叉出)进程来定位并且执行远程主机***上的应用。
分布式处理接口将透明的服务位置和执行与在命令或指令之间输入和输出输送结合在一起(例如,一个应用的输出用作下一个应用的输入)。例如,相对于在本实施例的外壳处键入的以下命令(例如,“|”指示输送):
nsh>cat input.txt|appx|appy|appz>output.txt,
分布式处理接口执行并且产生本地输出而不管应用(例如,appx、appy以及appz)驻留在哪里(例如,在包含远程守护程序的任何网络可访问的设备上,包括已将它们的服务注册在DNS中的移动设备)。外壳透明地用输送应用之间的工作流,并且可以应用增值指令符(例如,加密和压缩以优化并且保护通信)。
在本实施例中,外壳内置命令和指令符能够与应用无缝地混合而不管应用技术或应用的位置如何。进一步地,支持涉及将分布式命令或指令无缝包括在复杂过程逻辑的动态命令替换中的编程和脚本,而不管如由它们在DNS中注册的名称所引用的应用的位置如何。
本实施例的所述DNS注册方面使得服务注册和位置能够完全地在不高于开放***互联(OSI)栈的第3层(例如,网络层)处发生并且以协议无关的方式使用DNS联盟、冗余以及弹性特征在全局的任何位置处发生。应用的DNS注册可以基于应用编程接口(API)调用或自动注册的自动化方式(例如,依据执行的更新(例如,应用在给定时刻驻留在特定计算设备上)、将所有应用注册在该***上的定义目录的扫描等)。
除了实现标准输入、标准输出以及标准错误接口的近乎通用的读写功能的能力之外,不要求应用具有实现分布式处理或通信的任何知识或代码。例如,可以将指令符与命令替换内联地应用、应用在代码指令内、作为环境变量应用或者作为命令行自变量来应用。
因此,本实施例提供应用技术无关的服务位置和注册(例如,包括通过应用的自注册)、无缝的本地和远程命令或指令执行(例如,包括基于定义的一套准则在主机操作环境之间动态地移动的移动代码(例如,分布式处理接口代理可以被指定用于输送并且执行计算设备具有较高容量和较低延迟的任何一个应用(例如,被动态地发送到一个位置以处理5千兆字节数据然后以避免跨越网络将数据移动到应用首先被定位在的地方的延迟的完美状态返回的5兆字节应用)等))。
进一步地,本实施例提供透明的、非干扰性的以及应用技术无关的:用于优化并且保护应用之间的分布式通信的增值选项(例如,加密、压缩、服务质量、群集、安全等)的使用;跟踪、度量、利用、容量以及在服务执行点处收集到的依赖管理洞察力和服务的粒度;以及基于由服务本身在执行点处所驱动的陈述性、程序性或动态度量驱动准则的任何组合的动态工作负载管理和编排,其中通信在本地、远程、同步或异步执行的变化中被编排。
而且,本实施例可以在云环境中执行上述功能,在所述云环境中,任何IP可寻址设备可以作为能随时改变物理或虚拟位置的客户端和服务器服务提供商(例如,包括通过本实施例的分布式处理接口正在动态地向DNS服务登记处注册其本身的移动设备或应用)两者参与。采用允许实现在对应用之间的响应请求阻塞之外的异步Web处理的附加模型的执行模型。
本实施例可以作为应用与操作***(和/或网络)之间的中介物以应用对进程执行的指令符控制、跟踪、报告以及优化通信和任何数目的附加方面(例如,包括对应用之间的相互依赖的完全且准确的依赖洞察力报告的利用、安全凭证、优化的路由、服务质量等)。进一步地,本实施例将应用功能与网络能力集成在一起而不干扰应用其本身(例如,包括在不要求应用内的API接口的情况下促使网络设备中的硬件能力改变的能力)。例如,当通过分布式处理接口在应用之间输送数据时,可以为应用透明地采用加密或压缩协处理器。
此外,本实施例可以保护结合了对应用上下文可用的特征的限制的执行上下文,从而降低移动代码的风险。而且,用任何编程技术编写的任何应用可以简单地通过在分布式处理接口内执行来继承本实施例的外壳的分布式处理能力。关于客户端与消费的服务之间的使用模式的准确的业务智能通过捕获在DNS登记处以及客户端和服务器的两个端点处的依赖性来生成,而无需典型地加密URL或者干扰应用。新的应用模式被建立以用于动态地集合或者分发应用以便基于一套陈述性、程序性或动态地确定的准则来执行任务。
本实施例组合了各种特征以提供包括基于DNS的技术无关的服务登记处和位置代理的上述能力(例如,用于全局联盟、定标、冗余、弹性等的能力)、用来管理其中应用被执行的网络使能接口的远程执行守护程序、用作应用与操作***、网络以及彼此之间的执行环境中介物的网络使能接口进程、以及应用透明地继承的叠加到网络使能接口上的增值服务(例如,加密、压缩、依赖跟踪、服务质量(QoS)、服务定位、服务注册等)。
本实施例可以由包括操作***、软件可执行文件或库(例如,提供分布式处理控制器、应用、进程管理器等)、配置文件的各种组件来实现。域名服务(DNS)、一个或多个计算设备、以太网网络(例如,典型地包括访问和服务交换机、电缆或无线连通性以及网络操作***)以及一个或多个存储设备能够借助于与计算设备和操作***的交互来存储并且访问上述软件。本实施例的分布式处理接口一般地响应应用的调用事件。
用于本实施例的示例拓扑在图1中被图示。具体地,拓扑100包括域名服务(DNS)服务器***105和一个或多个主机***114。DNS***105处理查询以提供与应用相关联的位置信息(例如,IP或其它网络地址、位置等)。DNS***105和主机***114可以彼此远离并且通过网络112进行通信。网络优选地是典型地包括访问和服务交换机、电缆或无线连通性以及网络操作***的以太网网络。然而,网络可以由任何数目的任何适合的通信介质(例如,广域网(WAN)、局域网(LAN)、因特网、内部网、以太网等)来实现。可替代地,DNS***105和主机***114对于彼此而言可以是本地的,并且经由任何适当的本地通信介质(例如,局域网(LAN)、硬连线、无线链路、内部网等)进行通信。
主机***114可以包括一个或多个应用,并且使得能够从如在下面所描述的分布式处理接口在主机***114中的一个或多个上执行本地和远程应用。主机***114包括用来便于跨越如在下面所描述的主机***分布的应用的执行的各种模块。主机***114可以呈现图形用户接口(例如,GUI、桌面等)或其它用户接口(例如,命令行提示符、菜单画面等)以请求用于执行期望动作(例如,调用本地或远程应用等)的信息或命令。
主机***114可以由优选地装配有显示器或监视器、基部(例如,包括处理器270(图2)、内存280和/或内部或外部通信设备或网络接口260(例如,调制解调器、网卡等))、可选的输入设备(例如,键盘、鼠标或其它输入设备)以及任何商业上可用的和/或定制的软件(例如,通信软件、分布式处理控制器以及进程管理器模块等)的任何常规或其它计算机***来实现。可替代地,主机***114可以进一步由任何类型的计算机或处理设备(例如,膝上型计算机、个人数字助理(PDA)、移动/蜂窝电话设备、移动设备(例如,板或平板)等)来实现。进一步地,DNS***105可以由优选地装配有显示器或监视器、基部(例如,包括处理器、内存和/或内部或外部通信设备或网络接口(例如,调制解调器、网卡等))、可选的输入设备(例如,键盘、鼠标或其它输入设备)以及任何商业上可用的和/或定制的软件(例如,通信软件、DNS软件等)的任何常规或其它计算机***来实现。
主机***114包括用来执行跨越如图2中所图示的主机***分布的应用的各种模块。具体地,主机***114包括操作***205、分布式处理控制器模块210、进程管理器模块220以及DNS解析模块232。操作***205可以由任何常规或其它操作***来实现,其中主机***114可以各自包括相同的或不同的操作***。分布式处理控制器模块210(例如,经由主机***114)为外壳提供用户接口。分布式处理控制器模块(例如,经由主机***114)进一步解析命令或指令(例如,来自外壳或代码的命令或指令),促进服务位置在主机***114之中找到在命令或指令内指定的应用,并且像在下面所描述的那样在所指定的应用之间用输送或者引导数据。
进一步地,分布式处理控制器模块可以与选择性地利用来执行外部化的服务的许多可插拔的服务模块相关联。分布式处理控制器模块通过一系列这些可插拔服务模块来传递请求以便在用于和/或来自应用的数据上执行各种服务。可以针对对数据的操作依次放置任何数量的服务模块。每个可插拔服务模块可以在不干扰应用的情况下使用外部环境变量、命令行自变量或属性文件来配置。
可插拔模块可以包括:提供依靠外部服务来基于可用容量确定优化策略的工作负载管理策略的策略管理器230;以及用来动态地向DNS***105注册主机***114上的应用的DNS注册模块234。此外,各种可插拔模块可以与标准输入(stdin236)、输出(stdout238)以及错误流(stderr,未示出)相关联以使得服务能够被应用于用于和/或来自应用的数据。这些各种可插拔模块可以包括:用来提供关于主机***或应用操作的统计(针对标准输入236和输出238)的统计模块240;用来对传出数据(针对标准输出238)进行编码的编码模块243;用于对编码的传入数据(来自标准输入236)进行解码的解码模块242;用来压缩传出数据(针对标准输出238)的压缩模块245;用来对压缩的传入数据(来自标准输入236)进行解压缩的解压缩模块244;用来加密传出数据(针对标准输出236)的加密模块247;用来对传入加密的数据(来自标准输入236)进行解密的解密模块246;用来使处理负载(针对标准输入236和输出238)平衡的负载平衡模块248;用来响应于故障执行动作(针对标准输入236和输出238)的故障转移模块250;以及用来适应文件转移(例如,应用或其它数据的迁移)(针对标准输入236和输出238)的文件转移模块252。用于应用的数据可以通过将数据从一个应用的标准输出238(例如,经由传送模块256)导向另一应用的标准输入236(例如,经由接收模块254)来输送。
这些服务可以由主机***114来执行,或者被卸载到外部处理器并且由外部处理器来执行。特别地,每个可插拔服务模块可以作为将功能委派给外部资源(例如,主机***、网络设备或服务等)的接口。例如,服务模块可以与网络设备或协处理器卡进行通信以执行任务(例如,加密、负载平衡等)。
DNS解析模块232提供对服务位置的帮助,并且与DNS系105进行通信以便为应用提供位置信息(例如,IP或其它地址、位置等)。进程管理器模块220优选地具有守护程序的形式,并且处理(例如,经由主机***114)包括从其它主机***114执行应用的请求以及执行主机***的扫描以动态地注册在主机***上发现的应用的各种任务。进程管理器模块接收针对应用执行的请求,并且发起(或者分叉出)进程以用于分布式处理控制器模块执行(例如,经由主机***114)应用执行的执行。主机***114可以进一步将为如在下面所描述的服务位置(例如,搜索路径等)提供参数的配置文件215以及供由主机***本地或远程执行的一个或多个应用225包括在内存280内。
各种模块(例如,分布式处理控制器模块、进程管理器模块、DNS解析模块、可插拔服务模块等)可以通过任何数量的软件和/或硬件模块或单元的任何组合来实现,并且可以驻留在主机***的内存280内以供由处理器270执行。
根据本实施例执行跨越主机***114分布的应用的方式在图3中被图示。首先,本实施例的分布式处理接口使得应用执行能够无关于应用在特定操作***或计算机设备(例如,主机***114)上的位置。应用执行透明地发生,而无论应用对于调用而言是本地的还是远程的,从而创建提供优化或服务的机会。特别地,在步骤300处应用被调用。这可以通过代码(例如,程序、脚本、宏等)内的命令来实现,或者键入到本实施例的外壳中,从而引导一个或多个指定的应用的执行。
一旦命令被接收到,在步骤302处由分布式处理控制器模块210(例如,经由主机***114)对提供搜索路径或换句话说用于定位在所接收到的命令内指定的应用的指令符的配置文件215内的条目(例如,PATH命令或其它条目)进行分析。搜索路径的这种使用使得能实现对于本地和远程应用的执行的透明性。应用的位置在搜索路径中的解析将用于应用的可执行文件的目录的优先顺序搜索与远程网络命名服务组合以使得该应用能够被以与要么应用存在于调用操作***的已安装文件***本地要么存在于计算机网络上的远程资源上无关的一种方式定位。网络命名和位置服务到搜索路径(例如,PATH或其它条目)的这种集成可以被应用于能够返回可寻址位置的任何类型的网络命名服务,远程执行能够从所述可寻址位置发起并由与远程资源协调的分布式处理控制器模块完成。
全解析的路径条目包括以所期望的优先级顺序来组合本地和/或远程引用的结构,并且分布式处理控制器模块取决于所配置的策略解析并且执行在任意位置或全部位置中的应用。用于搜索路径的示例条目可以包括下列内容:
PATH=[本地引用];[远程引用],
其中远程引用可以是用于指示远程服务的位置(例如,URL、HOP全局标识符、RMI引用、DNS名称等)的任何适合的惯例。进一步地,条目(例如,PATH或其它条目)的任何部分可以支持替换。在这种情况下,路径条目的各部分可以是对如在以下示例条目中所示出的配置信息(例如,环境变量、寻找资源(例如,URL或配置文件等)的来源的内联脚本)的其它源的抽象引用。
PATH=[本地引用];$REMOTE_REFERENCES
PATH=[本地引用];`get_remote_references`
PATH=[本地引用];`http://[host.domain]/remote_references`
PATH=[本地引用];`file:///remote_references`。
对搜索路径中的应用的可执行文件的位置的解析可以使用域名服务名称的前缀来识别在顺序优先的搜索路径中正被调用的应用。这使得应用能够被解析成不高于开放***互连(OSI)模型的第3层(例如,网络层)的水平的目标。将应用解析为不高于开放***互连(OSI)模型中的第3层(例如,网络层)的一个或多个IP地址的优点包括目标执行主机***被解析为一个或多个全局位置而无需代理或重引导。这对于在目标主机处没有复杂性的全局负载平衡和故障转移来说是有用的,而且对于定位可能频繁地改变位置的有状态的应用而言也是有用的。
集成搜索路径中的应用通过可被分布式处理控制器模块作为执行目标主机***得到以满足调用的域名服务(DNS)解析为一个或多个互联网协议(IP)地址。集成搜索路径中的远程DNS引用可以具有完全地解析(“应用.主机.域”)引用的数个配置。用于完全限定引用的示例包括下列内容:
PATH=[本地引用];[应用.主机.域]。
用于应用的可执行文件名称的隐式替换的示例包括下列内容:
PATH=[本地引用];[$应用可执行文件名称][主机.域]。
分布式处理控制器模块(例如,经由主机***114)识别在搜索路径内的本地目录或路径。如果在步骤304处确定一样识别出本地目录,则在步骤308处对所识别的本地目录进行搜索以得到所指定的应用。如果应用在所识别的本地目录内未被找到,则在步骤302处获取下一个搜索路径条目并且响应于在步骤324处确定出存在附加的搜索路径像上面所描述的那样对下一个搜索条目进行分析。当没有附加的搜索路径条目存在时,在步骤300处响应于在步骤316处确定出存在附加的应用而调用下一个应用。
当在步骤308处确定出在所识别的本地目录内找到应用时,分布式处理控制器模块(例如,经由主机***114)确定待执行的指定服务的存在。服务可以由在所接收到的命令内的指令符来指定,并且在执行应用之前和/或之后执行。应用的解析和执行使得服务(例如,可选的优化或强制执行)能够被应用于每个应用的输入和输出的拦截数据流,并且总体上应用于集成组合。这些服务可以使用可插拔服务模块(例如,软件模块或软件库)或对如上面所描述的外部服务的接口惯例来实现。服务可以包括加密、压缩、编码(例如,XML)、服务质量(QoS)、事务控制、统计、日志、调试/追踪、负载平衡、故障转移、文件转移、动态DNS注册以及策略强制执行实施。
例如,可插拔服务模块(例如,文件转移模块252(图2))可以被用来将应用文件和数据转移和/或拷贝到提供对将应用功能作为操作的调用序列的一部分在网络内动态地放置在任何设备上具有最佳能力的位置(例如,主机或其它处理***)。进一步地,可插拔服务模块(例如,DSN注册模块234(图2))可以被用来通过扫描调用主机***的操作***上的本地目录将应用注册和/或重新注册在域名服务(DNS)中,或者在成功的应用转移结束处作为动作序列的一部分将转移的/拷贝的应用文件的位置重新注册到它们新的位置处。动态注册或重新注册包括无论在参与的应用(例如,应用的可执行文件)最初驻留时、或者作为动态调用或部署的结果动态地移动时均对其进行自动的和程序性的重新注册。例如,每个主机***114上的进程管理器模块或守护程序(例如,经由DNS注册模块234)对在定义的一组目录内的应用的可执行文件集、或作为它们的处理指令符的结果到达主机***的应用的任何传入的可执行文件进行注册或者重新注册。这使得携带代理状态的“代理”可执行文件能够随着代理可执行文件从***移动到执行工作的***而被动态地找到。
此外,可插拔服务模块(例如,策略管理器模块230(图2))可以提供策略引擎以基于指示调用何时将发生调用和/或调用将发生的方式以及将被应用的服务的规则来支配调用和/或服务。
因此,分布式处理控制器模块(例如,经由主机***114)生成用于可插服务模块在步骤310处在应用的执行之前执行所对应的指定服务的请求。子进程被发起,并且在步骤312处本地应用被随后执行。在步骤314处在应用的执行之后请求的任何服务被执行。
如果在步骤304处确定未识别出本地目录,则分布式处理控制器模块(例如,经由主机***114)在搜索路径内识别在命令中指定的应用的对应DNS名称。换句话说,分布式处理控制器试图为识别应用的远程位置。当在步骤306处确定未识别到对应的DNS名称时,则在步骤308处由主机***提供无效条目路径通知(因为该应用作为本地的或远程的均未被识别出)。在步骤302处获取下一个搜索路径条目并且如上面所描述的由分布式处理控制器模块(例如,经由主机***114)响应于在步骤324处确定出存在附加的搜索路径条目而对下一个搜索路径条目进行分析。当没有附加的搜索路径条目存在时,响应于在步骤316处确定出存在附加的应用而在步骤300处调用下一个应用。
如果在步骤306处确定出识别到对应的DNS名称,则在步骤307处分布式处理控制器模块采用DNS解析模块232(例如,经由主机***114)来生成对DNS***105的请求,请求其为DNS名称提供指示包含应用的远程主机***的位置的地址或其它位置信息。DNS***处理请求并且提供对请求的响应。位置信息在响应内的存在指示所指定的应用可以被找到。
当在步骤308确定出应用被找到时,分布式处理控制器模块(例如,经由主机***114)确定待执行的指定服务的存在。服务可以由在所接收到的命令内的指令符来指定,并且在应用的执行之前和/或之后执行。在步骤310处分布式处理控制器模块(例如,经由主机***114)生成请求可插拔服务模块在应用的执行之前执行所对应的指定服务的请求。用来执行所指定的应用的请求由分布式处理控制器模块(例如,经由主机***114)来生成并且基于位置信息被传送到包含该应用的远程主机***。在步骤312处远程主机***的进程管理器模块220处理执行所指定的应用的请求。具体地,该请求包括所期望的应用的标识(例如,名称等)。远程主机***的进程管理器模块发起(或者分叉出)远程分布式处理控制器模块(例如,经由远程主机***114)确定应用的位置并且执行该应用的进程。应用被以用于执行本地应用的上面所描述的基本上相同的方式执行,其中搜索路径条目被分析以确定应用的位置,并且进程被发起以在远程主机***上本地执行该应用。从应用执行的结果得到的数据被发送到调用该应用的主机***,并且在应用的执行之后请求的任何服务在步骤314处被执行。可替代地,远程主机***可以被通知并且执行所请求的服务,并且将得到的数据回传到调用该应用的主机***。
一旦应用被执行(在本地或远程)并且请求的服务被执行,则在步骤316处由分布式处理控制器模块(例如,经由主机***114)确定附加的应用的存在。上面所描述的应用(例如,经由PATH或其它条目)的解析和执行使得输送的应用的输入、输出以及错误流能够被透明地应用于应用的本地和远程执行的组合。这使得作为分布式或改变位置的应用的能力能够被迅速地且动态地组合。可以在命令中指定用于初始(本地或远程)应用的输入(例如,文件、文字等)(标准输入),然而将来自最后(本地或远程)的标准输出和错误返回到分布式处理接口(例如,以用于显示等)。因此,如果存在附加的应用并且在步骤320确定出将在应用之间输送数据,则来自应用执行的结果得到的数据在步骤322处被用于下一个应用的执行,并且下一个应用像上面所描述的那样在步骤300处被调用。上述过程被重复直到在步骤316处确定每个应用都已被处理。
本实施例执行在远程主机***上包含的应用的操作通过示例的方式在图4中被图示。首先,主机***114a、114b每个都基本上与上面所描述的主机***114类似,同时DNS***105基本上与上面所描述的DNS***类似。主机***114a、114b可以包括相同或不同的操作***205,然而主机***114a、114b和DNS***105优选地通过网络(未在图4中示出)互连。主机***114a可以提供本实施例的外壳,并且响应于命令来调用应用。DNS***105执行名称解析,而主机***114b包含并且执行该应用。
特别地,调用事件在主机***114a上发生(例如,用户键入的命令、来自程序的指令或命令等)。通过示例的方式,以下路径条目可以驻留在主机***114a的配置文件215(图2)中:
path=/usr/bin;myapp.mydomain.com,
同时可以在外壳提示符处键入以下命令:
nsh>echo“input”|myapp
nsh>output.
所键入的命令通过可执行文件(例如,“myapp”)的对应名称来促进应用的执行,并且由分布式处理控制器模块210(例如,经由主机***114a)来处理。分布式处理控制器模块(例如,经由主机***114a)定位并且执行应用“myapp”,同时传递来自调用事件的输入数据(例如,“输入”)并且返回输出响应(“输出”)。分布式处理控制器模块(例如,经由主机***114a)从包括路径位置的配置文件215(图2)探知信息以搜索应用。分布式处理控制器模块(例如,经由主机***114a)以由配置文件中的结构所确定的优先级次序(例如,典型地在位置的序列中隐式的,可选地由单独的数据值以优先级指定的等)来搜索由配置文件所指定的路径位置。示例路径可以包括/bin;/usr/bin;myapp.mydomain.com。
当路径位置不使用限定的DNS名称(例如,“/usr/bin”)时,分布式处理控制器模块(例如,经由主机***114a)针对应用来搜索主机***114a的操作***的或安装到主机***114a的操作***的存储设备的本地目录结构。如果用于应用(“myapp”)的可执行文件依照路径(例如,“/usr/bin/myapp”)在存储设备的目录结构中被找到,则在本地操作***上产生子进程来执行该应用。在这种情况下,输入数据(例如,“输入”)被供应给子进程(或应用)的标准输入(例如,stdin)。响应被从子进程提供给分布式处理控制器模块。
相对于图4的示例,分布式处理控制器模块在以配置文件中的优先级次序通过路径条目针对应用(例如,“myapp”)的搜索期间会遇到限定的DNS名称(例如,“myapp.mydomain.com”),并且由已配置DNS服务或DNS***105在流程400处执行DNS查找。DNS***105提供使所限定的名称(例如,“myapp.mydomain.com”)与分配给主机***114b上的操作***的互联网协议(IP)地址相关联的域名服务(DNS)。在流程402处与所限定的名称相对应的IP地址被返回。在流程404处分布式处理控制器模块(例如,经由主机***114a)基于返回的IP地址将请求和输入数据(例如,“输入”)发送到主机***114b。主机***114b的进程管理器模块220(图2)接收并且处理该请求(例如,包括用于所期望的应用的标识符(例如,名称等)),并且发起(或者分叉出)远程分布式处理控制器模块(例如,经由远程主机***114b)确定应用的位置并且执行该应用的进程。应用被以用于执行本地应用的上面所描述的基本上相同的方式执行,其中搜索路径条目被分析以确定应用的位置,并且进程被发起以在主机***114b上在本地执行该应用。在这种情况下,从主机***114a接收以执行应用(“myapp”)的输入数据(例如,“输入”)被供应给进程(或应用)的标准输入(例如,stdin)。在流程406处来自应用包括输出和错误信息(例如,stdout和stderr)的响应被从主机***114b提供给主机***114a。
本实施例在数据在应用之间输送的情况下执行跨越主机***分布的应用的操作通过示例的方式在图5中被图示。首先,主机***114a、114b、114c以及114d每个都基本上与上面所描述的主机***114类似,同时DNS***105基本上与上面所描述的DNS***类似。主机***114a、114b、114c以及114d可以包括相同或不同的操作***205(图2),而主机***114a、114b、114c、114d和DNS***105优选地通过网络(未在图5中示出)互连。主机***114a可以包括本实施例的外壳,并且响应于命令来调用一个或多个应用。DNS***105执行名称解析,而主机***114b、114c、114d每个都包含并且执行对应的应用(例如,像图5中所看到的那样,主机***114b包含appA,主机***114c包含appB,以及主机***114d包含appC)。
特别地,调用事件在主机***114a上发生(例如,用户键入的命令、来自程序的指令或命令等)。通过示例的方式,以下路径条目可以驻留在主机***114a的配置文件215(图2)中:
path=/bin;/usr/bin;appA.mydomainA.com,
path=/bin;/usr/bin;appB.mydomainB.com,
path=/bin;/usr/bin;appC.mydomainC.com,
同时可以在外壳提示符处键入以下命令:
nsh>appA|appB|appC
nsh>Hello ABC.
所键入的命令通过可执行文件(例如,“appA”、“appB”以及“appC”)的对应名称来促进应用的执行,并且由分布式处理控制器模块210(例如,经由主机***114a)来处理。命令进一步指示(例如,经由“|”符号)在应用之间输送输入和输出。分布式处理控制器模块(例如,经由主机***114a)定位并且执行应用“appA”、“appB”以及“appC”,同时将输入数据从调用事件传递到初始应用(“appA”),并且在应用之间传递由应用执行所生成的标准输入(stdin)、输出(stdout)以及错误(stderr)数据。一旦应用已被执行了,最后的输出响应(例如,“ABC”)就被提供。
分布式处理控制器模块(例如,经由主机***114a)从包括路径位置的配置文件215(图2)探知信息以搜索初始应用(例如,“appA”)。分布式处理控制器模块以由配置文件中的结构所确定的优先级次序(例如,典型地在位置的序列中隐式的,可选地由单独的数据值以优先级指定的等)进一步搜索(例如,经由主机***114a)由配置文件所指定的路径位置。示例路径可以包括/bin;/usr/bin;appA.mydomainA.com,/bin;/usr/bin;appB.mydomainB.com和bin;/usr/bin;appC.mydomainC.com。
当路径位置未使用限定的DNS名称(例如,“/bin”、“/usr/bin”)时,分布式处理控制器模块(例如,经由主机***114a)针对初始应用来搜索主机***114a的操作***的或安装到主机***114a的操作***的存储设备的本地目录结构。如果应用(“appA”)的可执行文件依照路径(例如,“/bin”、“/usr/bin/myapp”)在存储设备的目录结构中被找到,则在本地操作***上产生子进程来执行初始应用。在这种情况下,输入数据(例如,“输入”)被供应给子进程(或应用)的标准输入(例如,stdin)。响应被从子进程提供给分布式处理控制器模块。
相对于图5的示例,分布式处理控制器模块在以配置文件中的优先级次序通过路径条目针对初始应用(例如,“appA”)的搜索期间会遇到限定的DNS名称(例如,“appA.mydomain.com”),并且由已配置DNS服务或DNS***105在流程500处执行DNS查找。DNS***105提供使所限定的名称(例如,“appA.mydomain,.com”、“appB.mydomain,.com”、“appC.mydomain,.com”)与分配给主机***114b、114c、114d上的操作***的互联网协议(IP)地址相关联的域名服务(DNS)。在流程502处与所限定的名称相对应的IP地址被返回。在流程504处分布式处理控制器模块(例如,经由主机***114a)基于返回的IP地址将请求和输入数据发送到主机***114b。主机***114b的进程管理器模块220(图2)接收并且处理该请求(例如,包括用于所期望的应用的标识符(例如,名称等)),并且发起(或者分叉出)远程分布式处理控制器模块的进程(例如,经由远程主机***114b)确定应用的位置并且执行该应用的进程。应用被以用于执行本地应用的上面所描述的基本上相同的方式来执行,其中搜索路径条目被分析以确定应用的位置,并且进程被发起以在主机***114b上在本地执行该应用。在这种情况下,从主机***114a接收以执行应用(“appA”)的输入数据被供应给子进程(或应用)的标准输入(例如,stdin)。在流程506处来自应用包括输出和错误信息(例如,stdout和stderr)的响应被从主机***114b提供给主机***114a。在流程506处可以进一步对来自主机***114b的结果得到的数据执行服务(例如,加密、压缩等)。
一旦数据在主机***114a处被接收到,就可以输送或者引导该数据以用于与待执行的后续应用(例如,“appB”)一起使用。可以以上面所描述的基本上相同的方式来执行后续应用。特别地,分布式处理控制器模块(例如,经由主机***114a)从包括路径位置的配置文件215(图2)探知信息以搜索后续应用(例如,“appB”)。分布式处理控制器模块(例如,经由主机***114a)以由配置文件中的结构所确定的优先级次序(例如,典型地在位置的序列中隐式的,可选地由单独的数据值以优先级指定的等)来搜索由配置文件所指定的路径位置。
当路径位置未使用限定的DNS名称(例如,“/bin”、“/usr/bin”)时,分布式处理控制器模块针对后续应用来搜索主机***114a的操作***的或安装到主机***114a的操作***的存储设备的本地目录结构。如果应用(例如,“appB”)的可执行文件依照路径在存储设备的目录结构中被找到,则在本地操作***上产生子进程来执行初始应用。在这种情况下,输入数据(例如,来自“appA”的执行的数据)被供应给子进程(或应用)的标准输入(例如,stdin)。响应被从子进程提供给分布式处理控制器模块。
相对于图5的示例,分布式处理控制器模块在以配置文件中的优先级次序通过路径条目针对应用(例如,“appB”)的搜索期间会遇到限定的DNS名称(例如,“appB.mydomain.com”),并且由已配置DNS服务或DNS***105在流程500处执行DNS查找。在流程502处与所限定的名称相对应的IP地址被返回。在流程508处分布式处理控制器模块(例如,经由主机***114a)基于返回的IP地址将请求和输入数据发送到主机***114c。主机***114c的进程管理器模块220(图2)接收并且处理该请求(例如,包括用于所期望的应用的标识符(例如,名称等)),并且发起(或者分叉出)远程分布式处理控制器模块(例如,经由远程主机***114c)确定应用的位置并且以上面所描述的基本上相同的方式来执行该应用的进程。在这种情况下,从主机***114a接收以执行应用(“appB”)的输入数据被供应给子进程(或应用)的标准输入(例如,stdin)。在流程510处来自应用包括输出和错误信息(例如,stdout和stderr)的响应被从主机***114c提供给主机***114a。在流程510处可以进一步对来自主机***114c的结果得到的数据执行服务(例如,加密、压缩等)。
一旦数据在主机***114a处被接收到,就可以输送或者引导该数据以用于与待执行的后续应用(例如,“appC”)一起使用。可以以上面所描述的基本上相同的方式来执行后续应用。特别地,分布式处理控制器模块(例如,经由主机***114a)从包括路径位置的配置文件215(图2)探知信息以搜索后续应用(例如,“appC”)。分布式处理控制器模块(例如,经由主机***114a)以由配置文件中的结构所确定的优先级次序(例如,典型地在位置的序列中隐式的,可选地由单独的数据值以优先级指定的等)来搜索由配置文件所指定的路径位置。
当路径位置未使用限定的DNS名称(例如,“/bin”、“/usr/bin”)时,分布式处理控制器模块(例如,经由主机***114a)针对后续应用来搜索主机***114a的操作***的或安装到主机***114a的操作***的存储设备的本地目录结构。如果用于应用(“appC”)的可执行文件依照路径在存储设备的目录结构中被找到,则在本地操作***上产生子进程来执行初始应用。在这种情况下,输入数据(例如,来自“appB”的执行的数据)被供应给子进程(或应用)的标准输入(例如,stdin)。响应被从子进程提供给分布式处理控制器模块。
相对于图5的示例,分布式处理控制器模块在以配置文件中的优先级次序通过路径条目针对应用(例如,“appC”)的搜索期间遇到限定的DNS名称(例如,“appC.mydomain.com”),并且由已配置DNS服务或DNS***105在流程500处执行DNS查找。在流程502处与所限定的名称相对应的IP地址被返回。在流程512处分布式处理控制器模块(例如,经由主机***114a)基于返回的IP地址将请求和输入数据发送到主机***114d。主机***114d的进程管理器模块220(图2)接收并且处理该请求(例如,包括用于所期望的应用的标识符(例如,名称等),并且发起(或者分叉出)远程分布式处理控制器模块(例如,经由远程主机***114d)确定应用的位置并且以上面所描述的基本上相同的方式来执行该应用的进程。在这种情况下,从主机***114a接收以执行应用(“appC”)的输入数据被供应给子进程(或应用)的标准输入(例如,stdin)。在流程514处来自应用包括输出和错误信息(例如,stdout和stderr)的响应被从主机***114d提供给主机***114a。在流程514处可以进一步对来自主机***114d的结果得到的数据执行服务(例如,加密、压缩等)。来自示例命令的最后应用(例如,“appC”)的执行的结果得到的数据被作为输出来提供。
将领会的是,上面所描述的并且在附图中图示的实施例仅表示实现用于跨越多个计算设备分布的应用的执行的实施例的许多方式中的几个。
本实施例的拓扑可以包括以任何期望的方式布置的任何数目的计算机或其它处理***(例如,主机***、DNS或其它服务器***等),其中这些实施例可以被应用于任何期望类型的计算环境(例如,云计算、客户端-服务器、网络计算等)。由这些实施例所采用的计算机或其它处理***(例如,主机***、DNS或其它服务器***等)可以由任何数目的任何个人或其它类型的计算机或处理***(例如,IBM兼容机、APPLE、膝上型计算机、平板等)来实现,并且可以包括任何商业上可用的操作***和任何商业上可用的或定制软件(例如,浏览器软件、通信软件、服务器软件、分布式处理控制器模块、进程管理器模块、DNS解析模块、可插服务模块等)。这些***可以包括任何类型的监视器和输入设备(例如,键盘、鼠标、语音识别、触摸屏等)以键入和/或查看信息。此外,主机***可以由任何个人或其它类型的计算机或处理设备(例如,膝上型计算机、笔记本、个人或其它计算机***、个人数字助理(PDA)、移动/蜂窝电话、移动计算设备(例如,板、平板等))来实现。
应当理解的是,本实施例的软件(例如,分布式处理控制器模块、进程管理器模块、DNS解析模块、可插服务模块等)可以用任何期望的计算机语言加以实现并且能够由计算机领域的普通技术人员基于在本说明书和流程图中包含的功能描述和/或在附图中所图示的图来开发。进一步地,执行各种功能的本文中的软件引用一般地指的是在软件控制下执行那些功能的计算机***或处理器。本实施例的计算机***可以替代地由任何类型的硬件和/或其它处理电路来实现。
计算机或其它处理***的各种功能可以被以任何方式分布在任何数目的软件和/或硬件模型或单元、处理或计算机***和/或电路之中,其中计算机或处理***可以被彼此在本地或者远程地布置并且经由任何适合的通信介质(例如,LAN、WAN、内部网、因特网、硬连线、调制解调器连接、无线等)通信。例如,本实施例的功能可以被以任何方式分布在各种主机和DNS服务器***和/或任何其它中间处理设备之中。可以以实现本文中所描述的功能的任何方式来修改上面所描述的并且在流程图和/或简图中所图示的软件和/或算法。此外,可以以实现期望操作的任何次序来执行流程图和/或简图或描述中的功能。
本实施例的软件(例如,分布式处理控制器模块、进程管理器模块、DNS解析模块、可插拔服务模块等)可以被制成可用作为包括用于在独立***或由网络或其它通信介质所连接的***上使用的非暂时性可记录或计算机可用或可读介质(例如,磁或光学介质、磁光介质、软磁碟、CD-ROM、DVD、内存设备等)的程序产品装置或设备,和/或可以经由网络或其它通信介质而被下载(例如,以载波、数据包等的形式)到***。
进一步地,本实施例的计算机***或设备的内存可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质设备、光学存储介质设备、闪存设备、电、光学或其它物理/有形内存存储设备。因此,一般而言,内存可以包括编码有包括计算机可执行指令的软件或逻辑并且当被(计算机***或设备的对应处理器)执行时软件可操作来执行本文中所描述的操作的一个或多个可读存储介质(例如,内存设备)。
通信网络可以由任何数目的任何类型的通信网络(例如,LAN、WAN、因特网、内部网、VPN等)来实现。本实施例的计算机或其它处理***可以包括经由任何常规或其它协议通过网络来进行通信的任何常规或其它通信设备。计算机或其它处理***可以利用任何类型的连接(例如,有线、无线等)以用于访问网络。本地通信介质可以由任何适合的通信介质(例如,局域网(LAN)、硬连线、无线链路、内部网等)来实现。
本实施例可以采用任何数目的任何常规或其它数据库、数据存储器或存储结构(例如,文件、数据库、数据结构、数据或其它储存库等)来存储信息。数据库***可以被包括在计算机或其它处理***内或者耦合到计算机或其它处理***。数据库***和/或存储结构可以远离或者在计算机或其它处理***本地,并且可以存储任何期望的数据。
本实施例可以执行跨越任何类型的计算设备中的一个或多个分布的任何数量的任何类型的应用或其它过程指令(例如,计算机程序、例行程序、宏、库、脚本、补丁等)。进一步地,本实施例可以使得能够执行跨越任何类型的计算设备中的一个或多个分布的任何类型的应用或其它过程指令(例如,计算机程序、例行程序、宏、库、脚本、补丁等)的任何数量的组件。
调用应用的执行的命令或指令可以源自于代码(例如,程序、脚本、宏等)内,或者在外壳的用户接口处被键入。分布式处理接口的输入可以进一步被从完全程序性源(不是用户发起的或用户牵涉的)供应,并且可以由诸如监视器和键盘之类的没有外部用户接口的计算设备来提供。可以以上面所描述的基本上相同的方式执行来自代码、外壳以及程序性源的命令以执行跨越计算设备分布的应用。搜索路径可以被以任何适合的方式(例如,在环境或其它变量内、在用户接口处键入的等的命令或指令)提供、具有任何数量,并且包括任何格式或数量的位置。可以以任何期望的方式(例如,在搜索路径、标志或变量等内指定的次序)在搜索路径内或外面对位置进行优先级排序。可以以任何期望的方式(例如,目录路径或位置、URL、网络或其它地址、命名约定、变量名称或替换等)在搜索路径内指定位置(例如,本地或远程)。搜索路径可以由以任何方式存储以供利用(例如,配置或其它文件或数据结构、环境或其它变量等)的任何数量的各个命令或条目来指示。
上面所描述的功能优选地在不高于OSI模型的第3层的水平处被执行。然而,可以在OSI模型的任何期望的水平执行功能中的任一个。
期望的应用驻留的位置可以由任何数量的任何适合的指示符(例如,网络或协议地址、可解析为位置的标识符、直接或间接地址方案等)来指定。位置可以表示在应用驻留(例如,远程计算设备、操作***或其它组件、所期望的应用的直接地址或位置等)处的任何适合的实体。
服务模块可以包括用于发往应用(例如,在其执行之前)和/或来自应用(例如,在其执行之后)的数据的任何期望的服务(例如,加密、压缩、编码(例如,XML)、服务质量(QoS)、事务控制、统计、日志、调试/追踪、负载平衡、故障转移、文件转移、动态DNS注册、策略强制执行等)。对服务的请求可以具有任何类型或格式,并且可以包括任何期望的信息(例如,服务、输入、输出、错误流等的标识符)。
对期望的应用的远程执行的请求可以具有任何类型或格式,并且可以包括任何期望的信息(例如,应用、输入、输出、错误流等的标识符)。应用标识符可以具有任何类型、格式或长度,并且包括任何数量的任何类型的字母数字或其它字符或符号。主机***可以发起任何数量的任何适合的进程或线程以处理应用的执行。此外,可以以任何适合的方式输送应用之间的数据(例如,一个或多个应用的输出可以被应用于一个或多个其它应用的输入,可以以任何方式(例如,服务、组合式等)来处理一个或多个应用的输出以用于转移到一个或多个其它应用的输入等)。
策略管理器的规则或策略可以具有任何期望的形式,并且包括用于控制应用的执行和/或服务的任何期望的准则。策略管理器可以基于任何外部策略确定准则(例如,容量、延迟、成本、安全、弹性、调整、当日时间、操作的顺序等)来提供工作负载管理策略。外壳可以提供用来接收命令的任何适合的用户接口(例如,GUI、命令行提示符、菜单画面等)。本实施例可以被利用来执行跨越任何计算***、设备和/或操作***分布的任何应用或其它过程指令。
本实施例的一个或多个计算设备(例如,主机***等)可以是虚拟的,其中操作***和关联的设备全部实际上是理论的物理计算***和设备的软件表示。类似地,网络可以是作为在任何类型的物理基础设施上的网络操作***软件配置的逻辑构造的虚拟网络,并且可以完全是在其中没有物理网络的遍历发生的相同物理机器上的两个虚拟计算设备之间的网络的虚拟表示以满足两个操作***之间的远程网络操作。
将理解的是,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”、“具有(has)”、“具有(have)”、“具有(having)”、“带有(with)”等等当被用在本说明书和权利要求中时,指定陈述特征的存在,但不排除一个或多个其它特征的存在或添加。
根据前面的描述,将领会的是,本文中所公开的技术对于跨越多个计算设备分布的应用的执行做出了可用的新颖实施例,其中这些实施例使得能够执行从在应用调用的位置的本地和远程分布以及跨越多个计算设备分布的各种应用。
已经描述了用于执行跨越多个计算设备分布的应用的新的且改进的技术的示例实施例,可以认为,其它修改、变化以及改变将鉴于本文中所阐述的教导而被建议给本领域的技术人员。因此应当理解的是,所有这样的变化、修改以及改变被认为落在如随附权利要求所限定的范围内。

Claims (27)

1.一种方法,其包括:
在计算设备上检测促进一个或多个应用的执行的调用事件,其中所述应用包括各自用于在对应的远程计算设备上执行的至少一个远程应用;
检查搜索路径以确定所述一个或多个应用的位置,其中所述搜索路径包括各自与对应的远程应用相关联并且指示用于执行所述对应的远程应用的远程位置的至少一个指示符;
解析与所述至少一个远程应用相关联的每个指示符以确定用于执行所述对应的远程应用的远程位置;以及
使能在所确定的位置处执行所述一个或多个应用,其中每个远程应用在所述对应的远程位置处的所述对应的远程计算设备上被执行。
2.根据权利要求1所述的方法,其中解析与所述至少一个远程应用相关联的每个指示符包括采用域名服务(DNS)来确定由该指示符所指示的所述远程位置的地址。
3.根据权利要求1所述的方法,进一步包括
识别驻留在所述计算设备上的一个或多个应用,以及向域名服务(DNS)注册所识别的应用以使所识别的应用与所述计算设备的位置相关联。
4.根据权利要求1所述的方法,其中检测所述调用事件包括从程序代码和外壳中的至少一个接收命令。
5.根据权利要求4所述的方法,其中使能执行所述一个或多个应用包括:
选择性地对与所述应用的执行相关联的数据应用服务,其中所述服务由所述命令来指定。
6.根据权利要求1所述的方法,其中使能执行所述一个或多个应用包括:
将由所述应用中的一个或多个的执行产生的数据引导至少一个其它应用。
7.根据权利要求1所述的方法,进一步包括:
使能响应于来自检测到促进该本地应用的执行的调用事件的远程计算设备的请求来执行所述计算设备的本地应用。
8.根据权利要求1所述的方法,其中所述计算设备和所述远程计算设备中的一个或多个包括不同的操作***。
9.一种***,其包括:
至少一个处理器,其配置成:
在计算设备上检测促进一个或多个应用的执行的调用事件,其中所述应用包括各自用于在对应的远程计算设备上执行的至少一个远程应用;
检查搜索路径以确定所述一个或多个应用的位置,其中所述搜索路径包括各自与对应的远程应用相关联并且指示用于执行所述对应的远程应用的远程位置的至少一个指示符;
解析与所述至少一个远程应用相关联的每个指示符以确定用于执行所述对应的远程应用的远程位置;以及
使能在所确定的位置处执行所述一个或多个应用,其中每个远程应用在所述对应的远程位置处的所述对应的远程计算设备上被执行。
10.根据权利要求9所述的***,进一步包括:
用来确定由在所述搜索路径内的每个指示符所指示的所述远程位置的地址的域名服务(DNS)***。
11.根据权利要求9所述的***,其中所述至少一个处理器被进一步配置成:
识别一个或多个应用并且向域名服务(DNS)注册所识别的应用以使所识别的应用与所述计算设备的位置相关联。
12.根据权利要求9所述的***,其中所述至少一个处理器被进一步配置成:
通过从程序代码和外壳中的至少一个接收命令来检测所述调用事件。
13.根据权利要求12所述的***,其中所述至少一个处理器被进一步配置成:
选择性地对与所述应用的执行相关联的数据应用服务,其中所述服务由所述命令来指定。
14.根据权利要求9所述的***,其中所述至少一个处理器被进一步配置成:
将由所述应用中的一个或多个的执行产生的数据引导至少一个其它应用。
15.根据权利要求9所述的***,其中所述至少一个处理器被进一步配置成:
使能响应于来自检测到促进该本地应用的执行的调用事件的远程计算设备的请求来执行所述计算设备的本地应用。
16.根据权利要求9所述的***,其中所述计算设备中的至少两个包括不同的操作***。
17.一个或多个计算机可读存储介质,其编码有包括计算机可执行指令的软件并且当所述软件被处理器被执行时可操作来:
在计算设备上检测促进一个或多个应用的执行的调用事件,其中所述应用包括各自用于在对应的远程计算设备上执行的至少一个远程应用;
检查搜索路径以确定所述一个或多个应用的位置,其中所述搜索路径包括各自与对应的远程应用相关联并且指示用于执行所述对应的远程应用的远程位置的至少一个指示符;
解析与所述至少一个远程应用相关联的每个指示符以确定用于执行所述对应的远程应用的远程位置;以及
使能在所确定的位置处执行所述一个或多个应用,其中每个远程应用在所述对应的远程位置处的所述对应的远程计算设备上被执行。
18.根据权利要求17所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
采用域名服务(DNS)来确定由所述搜索路径中的所述至少一个指示符所指示的所述远程位置的地址。
19.根据权利要求17所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
识别驻留在所述计算设备上的一个或多个应用并且向域名服务(DNS)注册所识别的应用以使所识别的应用与所述计算设备的位置相关联。
20.根据权利要求17所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
通过从程序代码和外壳中的至少一个接收命令来检测所述调用事件。
21.根据权利要求20所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
选择性地对与所述应用的执行相关联的数据应用服务,其中所述服务由所述命令来指定。
22.根据权利要求17所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
将由所述应用中的一个或多个的执行产生的数据引导至少一个其它应用。
23.根据权利要求17所述的计算机可读介质,其中所述计算机可执行指令进一步包括计算机可执行指令以:
使能响应于来自检测到促使该本地应用的执行的调用事件的远程计算设备的请求来执行所述计算设备的本地应用。
24.根据权利要求17所述的计算机可读介质,其中所述计算设备和所述远程计算设备中的一个或多个包括不同的操作***。
25.根据权利要求17所述的计算机可读介质,其中所述计算设备中的一个或多个包括虚拟计算设备。
26.根据权利要求1所述的方法,其中所述计算设备中的一个或多个包括虚拟计算设备。
27.根据权利要求9所述的***,其中所述至少一个处理器被进一步配置成:
将所述计算设备中的一个或多个实现为虚拟计算设备。
CN201280048624.XA 2011-10-03 2012-10-01 跨越多个计算设备分布的应用的执行 Pending CN103843308A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/251,538 US8424026B1 (en) 2011-10-03 2011-10-03 Execution of applications distributed across a plurality of computing devices
US13/251,538 2011-10-03
PCT/US2012/058278 WO2013052412A1 (en) 2011-10-03 2012-10-01 Execution of applications distributed across a plurality of computing devices

Publications (1)

Publication Number Publication Date
CN103843308A true CN103843308A (zh) 2014-06-04

Family

ID=47018579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280048624.XA Pending CN103843308A (zh) 2011-10-03 2012-10-01 跨越多个计算设备分布的应用的执行

Country Status (4)

Country Link
US (1) US8424026B1 (zh)
EP (1) EP2764676A1 (zh)
CN (1) CN103843308A (zh)
WO (1) WO2013052412A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107111508A (zh) * 2014-09-30 2017-08-29 亚马逊技术有限公司 用于执行程序代码的请求的程序性事件检测和消息生成

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US9160785B2 (en) 2011-05-26 2015-10-13 Candi Controls, Inc. Discovering device drivers within a domain of a premises
US10165036B1 (en) * 2011-12-21 2018-12-25 Amazon Technologies, Inc. Network resource remote process execution
US9794333B2 (en) * 2013-06-17 2017-10-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Workload and defect management systems and methods
CN104954413B (zh) * 2014-03-31 2018-07-13 阿里巴巴集团控股有限公司 提供互联网应用服务的方法、***、用户端设备及服务端
US10152987B2 (en) * 2014-06-23 2018-12-11 Google Llc Remote invocation of mobile device actions
US9836315B1 (en) * 2014-06-25 2017-12-05 Amazon Technologies, Inc. De-referenced package execution
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
KR102264992B1 (ko) 2014-12-31 2021-06-15 삼성전자 주식회사 무선 통신 시스템에서 서버 할당 방법 및 장치
US10681031B2 (en) * 2015-11-02 2020-06-09 International Business Machines Corporation Federating devices to improve user experience with adaptive security
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US10771394B2 (en) * 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US10542072B1 (en) * 2017-10-04 2020-01-21 Parallels International Gmbh Utilities toolbox for remote session and client architecture
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US11263540B2 (en) * 2018-05-07 2022-03-01 Apple Inc. Model selection interface
US20220188167A1 (en) * 2020-12-14 2022-06-16 Dell Products, Lp System and method to adapt memory usage of containerized workspaces
US11769506B1 (en) * 2022-05-09 2023-09-26 Amazon Technologies, Inc. Response orchestrator for natural language interface

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055875A1 (en) * 2001-08-27 2003-03-20 Carter Frederick H. Mechanism for facilitating invocation of a service
US20070226294A1 (en) * 2003-05-06 2007-09-27 Pruitt Joseph A Method and system for accessing network services
CN101136939B (zh) * 2006-08-29 2010-12-22 国际商业机器公司 分布式计算***和用于在其中执行应用的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376827B1 (en) 1999-11-05 2008-05-20 Cisco Technology, Inc. Directory-enabled network elements
US7249374B1 (en) 2001-01-22 2007-07-24 Cisco Technology, Inc. Method and apparatus for selectively enforcing network security policies using group identifiers
US7228359B1 (en) 2002-02-12 2007-06-05 Cisco Technology, Inc. Methods and apparatus for providing domain name service based on a client identifier
EP1887484B1 (de) * 2002-11-06 2009-10-14 Tellique Kommunikationstechnik GmbH Verfahren zum vorabübertragen strukturierter datenmengen zwischen einer clienteinrichtung und einer servereinrichtung
US7660901B1 (en) 2003-02-04 2010-02-09 Cisco Technology, Inc. Method and apparatus for defining a user specific configuration environment
US7499998B2 (en) 2004-12-01 2009-03-03 Cisco Technology, Inc. Arrangement in a server for providing dynamic domain name system services for each received request
US7543020B2 (en) 2005-02-10 2009-06-02 Cisco Technology, Inc. Distributed client services based on execution of service attributes and data attributes by multiple nodes in resource groups
US20090094312A1 (en) * 2007-10-03 2009-04-09 Powley John J Methods and systems for dynamic code extension

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055875A1 (en) * 2001-08-27 2003-03-20 Carter Frederick H. Mechanism for facilitating invocation of a service
US20070226294A1 (en) * 2003-05-06 2007-09-27 Pruitt Joseph A Method and system for accessing network services
CN101136939B (zh) * 2006-08-29 2010-12-22 国际商业机器公司 分布式计算***和用于在其中执行应用的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107111508A (zh) * 2014-09-30 2017-08-29 亚马逊技术有限公司 用于执行程序代码的请求的程序性事件检测和消息生成
CN107111508B (zh) * 2014-09-30 2020-12-11 亚马逊技术有限公司 用于执行程序代码的请求的程序性事件检测和消息生成

Also Published As

Publication number Publication date
WO2013052412A1 (en) 2013-04-11
US20130086594A1 (en) 2013-04-04
EP2764676A1 (en) 2014-08-13
US8424026B1 (en) 2013-04-16

Similar Documents

Publication Publication Date Title
CN103843308A (zh) 跨越多个计算设备分布的应用的执行
US7870255B2 (en) Access control system and method for wireless application provisioning
CN111290865A (zh) 一种服务调用方法、装置、电子设备和存储介质
US9123017B2 (en) Systems and methods for network inventory management utilizing mobile technology
CN103119907A (zh) 提供用于访问控制的智能组的***和方法
US11108871B2 (en) Dynamic generation of network routing configuration with service requirements
US7523492B2 (en) Secure gateway with proxy service capability servers for service level agreement checking
US11659066B2 (en) Dynamic computation in an information centric network
EP4020925B1 (en) Information centric network protocol for federated learning
US20140137230A1 (en) Provisioning proxy for provisioning data on hardware resources
WO2017192549A1 (en) System and method for secure and efficient communication within an organization
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
US9503351B1 (en) Deployment feedback for system updates to resources in private networks
US20070261045A1 (en) Method and system of configuring a directory service for installing software applications
US11989333B2 (en) Method and apparatus for managing identification of a virtual machine and a host within a virtual domain
CN116389599A (zh) 网关服务请求的处理、云原生网关***的管理方法及装置
US20220300611A1 (en) Run-time communications protocol parameter adjustment in containerized applications
CN114285859A (zh) 中间层区块链服务的数据处理方法、装置、设备及存储介质
CN101521592B (zh) 一种建立打印机snmp代理的方法及装置
KR101581127B1 (ko) 네트워크 시스템과 통신 방법, 및 네트워크 장치
CA2606036C (en) Access control system and method for wireless application provisioning
US20230362659A1 (en) Microwave design tool
CN116896565A (zh) 基于udp协议的报文快转方法及装置
CN117675561A (zh) 软件配置方法、装置和电子设备
CN112988385A (zh) 请求处理方法、装置、***、存储介质和电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140604

RJ01 Rejection of invention patent application after publication