动态寻址主机的连接的实例组的制作方法

文档序号:7913586阅读:109来源:国知局

专利名称::动态寻址主机的连接的实例组的制作方法动态寻址主机的连接的实例组相关申请的交叉引用本申请渉及并要求2009年7月20日递交的、题目为“Connectedinstancegroupofdynamicallyaddressedhostsinanon-multicastenvironment(非多路广播环境中的动态寻址主机的连接的实例组)”的美国临时专利申请No.61/227,036的优先权,该申请通过引用被并入本文。
背景技术
:域名系统(DNS)是针对以下内容的分层命名系统计算机、服务(services)或与提供在IP地址和主机(host)名称之间的映射的因特网或者私用网络(privatenetwork)连接的任何资源。在给定主机名称的情况下,DNS提供将返回IP地址的方便的方式。DNS并不具有逻辑分组的概念,并且因此使用者会无法询问DNS并且请求某一组。此外,利用DNS,当使用者希望与特定机器通信时,他们首先必须以DNS查找该机器的IP地址。使用者可以背得出(recite)URL或者主机而不知晓IP地址并且无需知晓机器将如何定位到网站。因此,每当使用者希望浏览URL或者发送电子邮件时,就会在DNS中查找机器的IP地址。对等(P2P)网络是由这样的参与者构成的分布式网络,所述参与者将其资源中的一部分设为是对其他网络参与者可用的,而无需中央协调实例(instance)。如果使用者正在请求来自实例中的一个的资源,则其他的实例可以得知该实例。但是P2P不会创建实例的完全连接,因而在P2P网络中并不是所有的实例都会相互得知。在一类网络(例如云计算网络)中,机器不具有永久静态IP地址,从而IP地址不断变化,并且其中广播是未被启用的,仍旧需要应用程序来实现逻辑上相关的实例的群集或组的概念,该逻辑上相关的实例具有始终相互连接的能力。仍旧需要组中的实例全都相互得知。
发明内容公开的是在联网计算环境中的连接的实例组中的机器,用于使机器与在联网计算环境中的连接的实例组连接的方法,以及如果机器失败用于恢复连接的实例组的方法。总体地,根据一方面,一种用于将机器加入联网计算环境中的实例组的方法包括确定所述机器的IP地址;将与所述实例组相关联的组名信息和所述IP地址传输到数据源;从所述数据源接收与所述实例组相关联的其他机器的IP地址;以及连接到所述实例组。所述机器可以连接到与所述实例组相关联的消息传递(messaging)服务,并且该消息传递服务根据该机器是否为加入该实例组的第一个机器而可以为消息传递服务客户端或者消息传递服务服务器。总体地,根据另一方面,如果该实例组中的主控机器(mastermachine)失败,一种用于与连接的实例组中重启的主控机器重新连接的方法包括确定对等机器和失败的主控机器之间缺少连接;周期性地尝试连接到与所述失败的主控机器相关联的消息传递服务服务器;以及在所述失败的主控机器重启之后,连接到与所述重启的主控机器相关联的消息传递服务服务器。总体地,根据再一方面,一种在联网计算环境中的实例组的机器可以包括处理器部件、存储器部件、通信部件以及消息传递服务部件。所述处理器部件可以操作来确定所述机器的IP地址。所述存储器部件可以操作来储存与所述机器相关联的本地主机文件。所述通信部件可以操作来通过传输总线将与所述实例组相关联的组名信息和所述IP地址传输到与所述联网计算环境相关联的数据源,并且通过所述传输总线从所述数据源接收与所述实例组相关联的其他机器的IP地址。所述消息传递服务部件可以操作来连接所述实例组。在附图中以示意性的方式图示说明实施方案,在附图中图1是图示说明根据本公开的联网计算系统的示意图2是图示说明根据本公开创建连接的实例组的流程图3是图示说明根据本公开的用于实例组连接的系统的示意图4是图示说明根据本公开创建组的示意图5是图示说明根据本公开将主控机器加入实例组的示意图6是图示说明根据本公开的加入的机器在实例组中寻找其他机器的流程图图7是图示说明根据本公开将对等机器加入实例组的示意图8是图示说明根据本公开将另一对等机器加入实例组的示意图9是图示说明根据本公开的主控机器失败的流程图10是图示说明根据本公开的主控机器失败的示意图11是图示说明根据本公开的主控机器恢复的示意图;以及图12是图示说明根据本公开的数据源的示意图。具体实施例方式本公开涉及用于建立和维持机器的连接的实例组的技术,所述机器的IP地址在其实例化时是被动态分配的。如本文所提及的,连接的实例组是在联网计算环境中的一组机器,在该联网计算环境中每个机器持有该组中所有其他机器的IP地址。因此,该机器可以相互连接并且相互通信(例如,通过TCP)。图1是联网计算系统100的示意图。联网计算系统100具有机器集合102。在实施方案中,联网计算系统100为具有机器集合102的云计算环境。在动作109,使用者/控制器108可以通过在与联网计算系统100相关联的数据源104处创建实例组来发起(initiate)联网计算系统100中实例组的创建。在动作110,使用者/控制器108创建第一实例。在实施方案中,第一实例是主控机实例(masterinstance)0当主控机实例106被启动时,其附接到网络102并且基础(underlying)操作系统将给予其一IP地址。在动作112,作为操作系统启动的一部分,运行一组软件,并且该组软件将会连接主控机实例106到数据源104并且通告(announce)其IP地址。主控机器106可以从数据源104接收关于实例组中其他机器(如果存在的话)的信息。主控机器106还启动消息传递服务服务器114并且监听对等机器连接,该消息传递服务服务器114可以提供公开信息和订阅信息。消息传递服务服务器114可以提供加入实例组的实例的通知到主控机(master)106。如在下面进一步详细论述的,除了将消息传递服务客户端用在对等机器之外,对等机器以相似的方式加入组。图2是图示说明实例组创建的高级流程图200。在动作202,由控制器/使用者创建实例组。在动作204,创建主控机器或者主机。在动作206,启动对等机器。在动作208,主控机器和对等机器被连接。针对其他对等机器加入该实例组的情况,可以重复进行在动作206创建对等机器的操作。在每个对等机器加入该实例组之后,主控机器和对等机器通过本公开所公开的过程被连接。在加入该实例组之前,机器可以不具有该实例组中其他机器的先验知识,而利用该先验知识它们可以就IP地址询问中央服务器。使用一通信协议来管理机器的动态组的连接,该动态组不具有预定义的成员条件(membership),该通信协议在处理过程中(onthefly)可以添加、删减以及重新引入失败的(或停止的)机器。因此,在实施方案中,机器被给定实例化时所限定的动态IP地址并且不具有其自身IP地址、该组中其他(或者要被添加到该组的)机器的IP地址以及被重新实例化的失败的或停止的机器的修正的IP地址的先验知识。在另一实施方案中,广播和多路广播网络通信都是未被启用的,因而不能用来实现发现协议(discoveryprotocol)。本公开涉及用于建立和维持连接的实例组的协议。本公开包括用于实例组创建(例如,动作202)的协议;用于主控机器创建(例如,动作204)、操作和恢复的协议;以及用于对等机器创建(例如,动作206)、操作和恢复的协议。这些协议允许每个机器建立本地机器主机识别文件,例如在Unix/Linux系统上的/etc/hosts文件,该本地机器主机识别文件包含该组中其他机器的名称和IP地址,因而提供该实例组中机器之间的网络连接(例如,动作208)。图3是图示说明用于实例组连接的系统的示意图。一小组软件被安装在组304中的每个机器302上。作为启动操作系统的一部分,运行该组软件。例如,消息(message)服务服务器/客户端是该软件组的一部分。消息服务/客户端是实现公开和订阅(例如,Java消息传递服务,JMQ概念的消息传递技术。消息服务服务器是消息传递服务的服务器部分,而消息服务客户端是服务的客户端部分。一小组参数也被传递至每个机器302作为来自控制器306的启动命令的一部分。例如,机器302所属的组304的名称以字符串参数的形式被传递并且数据源310的位置也一起被传递。实例组304可以被认为是机器的逻辑容器。机器302典型地具有正常工作(functioning)的操作系统,例如Linux或MicrosoftWindows,并且连接到网络。控制器306是控制机器302的生命周期(例如,启动机器、停止机器等)的外部应用程序。控制器306可以为外部事件发生器,例如图形用户界面(GUI)。数据源310可以为具有固定地址和永久储存器的公知的服务装置。所描述的部件通过因特网或其他通信网络320进行通信。实例组创建在实施方案中,使用者可以通过在数据服务装置310处的数据库(例如,Amazon的SimpleDB)中创建表来创建新的实例组304。数据源310应当具有可以存留信息的公知的接入点或地址(例如,http://sdb.amazonaws.com)。数据库和表具有对实例组304来说是唯一的名称。图4是图示说明创建组的示意图。通过控制器406,实例组412在数据服务器410被发起。控制器406可以通过HTTP协议与数据服务器进行通信。在实施方案中,控制器406使用HTTP协议调用网页服务来创建实例组412。在这种操作情况下,逻辑边界或容器(实例组404)被创建,并且属于该实例组404的实例可以被认为是在该逻辑边界之内的。实例组412是在数据服务器410处创建的有形数据(tangibledata)。实例组404为将会属于组404的实例限定逻辑边界。在数据源410创建实例组412的过程中,在数据源410的数据库中创建数据库表。在数据库中的表中可以追踪被创建或删除的实例。在加入组404、412之后,每个机器可以保持实例组404、412中机器的基本上完整的映射。主控机器创津和连接图5是图示说明第一机器522加入实例组504的示意图。控制器506创建第一机器522。在实施方案中,第一机器是主控机器522。名称(例如,“M”)被分配到主控机器522。因为机器522的名称是任意的,所以还可以使别名(例如,“topdog(领导者)”)与主控机器522相关联。因此,访问“M”等同于访问“topdog”,并且反之亦然。当主控机器522被启动时,其附接到网络并且基础操作系统将给予其IP地址(例如,192.168.1.1)。—组软件作为启动操作系统的一部分被运行,并且该组软件将使主控机器522连接到数据源510并且通告其IP地址。更具体地,主控机522连接到数据源510并且告知数据源510其名称(例如,M)、其别名(例如,topdog)以及其IP地址(例如,192.168.1.1)。在用于实例组512的数据库表处,该信息可以被储存在数据源510中。该别名可以被硬编码到主控机M522中。主控机M522可以通过其本地主机文件确定其别名和IP地址。该别名还可以被之后将会加入的机器使用来指代主控机。在实施方案中,软件将两条记录(entry)写入数据库表512—个用于主控机实例,一个用于主控机实例的别名。所述记录在本质上是等同的。数据源510知晓处于特定IP地址的主控机522。主控机522还可以获取包含在数据源510中的用于其实例组512的任何其他信息。当主控机522被创建为实例组504中的第一机器时,数据服务器510将仍不会包含关于其他机器的信息。主控机522然后更新被接收到其本地主机文件(例如,基于Linux的/etc/hosts文件)中的任何信息。主控机522还启动可以提供公开和订阅信息的消息传递服务服务器530并且监听对等连接。消息传递服务530可以提供加入实例组504的实例的通知到主控机522。在实施方案中,消息传递服务530为Java消息传递服务。图6是图示说明机器连接到实例组的流程图600。在动作602,加入的机器在其被启动之后确定其自身的IP地址。在动作604,机器与数据源连接并且通告其IP地址、别名以及实例组名称。在动作606,该机器接收该实例组中其他机器的IP地址。在动作608,该机器连接到实例组。对等机器创建和连接图7是图示说明对等机器7M加入实例组704的示意图。控制器706发起对等机器7加入实例组704并且分配其名称(例如,“Cl”)。与主控机器722类似地,对等机器724将会联络数据源710并且以其IP地址和其他信息更新实例组数据表712。同样,与主控机器722类似地,对等机器7M将会读回储存在实例组数据库表712中的信息。对等机器7M可以更新其自身的本地主机文件,并且因此,得知主控机的地址(例如,通过在本地主机文件中查找“topdog”)。对等机器7还启动消息传递服务客户端,该消息传递服务客户端可以提供到主控机的消息服务服务器730的连接。一旦连接,对等机器7M可以将自身通告给主控机器722。在实施方案中,对等机器7M通过消息服务730就关于其自身存在和自身信息的主题进行通告。因为主控机器722正在聆听该主题,所以主控机器722被通知该对等机器724,并且可以以与对等机器7M相关联的新的记录更新其本地主机文件。对等机器7M得知主控机器722并且主控机器722得知对等机器724。图8是另一对等机器拟6加入包含主控机器822和对等机器824的实例组804的示意图。类似于图5和图7中所描述的方式,控制器可以创建新的对等机器拟6到实例组804中,并且将名称(例如,“C2”)分配给新的对等机器826。控制器806启用实例组804中的新的对等机器826。同样类似于图5和图7的方式,新的对等机器拟6联络数据源810并且以其IP地址更新实例组对象812。然后,新的对等机器拟6可以读回实例组对象812中的所有信息并且更新其本地主机文件。新的对等机器拟6得知主控机器822和另一对等机器824。新的对等机器拟6正运行消息服务客户端并且其连接到主控机器822处的消息服务服务器830。一旦连接,其将就关于其自身存在的公知的主题通告消息服务830。因为主控机器822正在聆听该主题,所以其将被通知该新的对等机器拟6并且可以以新的记录更新其本地主机文件。主控机822和新的对等机器拟6相互得知。同样,因为另一对等机器824正在聆听该主题,所以其被通知该新的对等机器826并且以新的记录更新其本地主机文件。新的对等机器拟6和另一对等机器拟4相互得知。因此,主控机822和两个对等机器824、拟6相互得知。可以以类似的方式将任一数目的机器添加到实例组804,形成连接的实例组。机器恢复图9是图示说明主控机器失败和恢复的流程图900。该过程开始于步骤901。主控机失败发生在动作903。在动作905,对等机器尝试与主控机器处的消息传递服务通信,但无法实现这一点,因为主控机器已经失败。在主控机器尚未被重启之时(动作907后的“否”循环),在动作905,对等机器将继续尝试与主控机器连接。在这种操作情况下,对等机器无法连接消息传递服务,并且无法连接数据源以获得主控机器的IP地址。当主控机器尚未恢复时,数据源持有失败的主控机器的IP地址并且将继续提供该IP地址至请求的对等机器。因此,对等机器仍旧无法连接主控机器并且将继续连接数据源来获得主控机器的IP地址。一旦主控机器恢复(动作907之后的“是”路径),数据源以主控机器的新IP地址进行更新(如上面在图5和图6的方式中所论述的),并且在对等机器从数据源请求主控机器的新IP地址时,在动作909该对等机器接收该新IP地址。在动作911,主控机器和对等机器再次被连接作为连接的实例组,并且该过程结束于步骤999。下面更加详细地论述该过程。图10是图示说明主控机器1022失败的示意图。由于主控机器1022曾寄宿有(host)消息传递服务服务器1030,所以如果主控机器1022失败或者从网络消失,则对等机器1024、10将失去与主控机器1022的连接。对等机器1024、10将周期性地尝试重新连接到消息服务服务器1030。在实施方案中,对等机器1024、10将联络数据源1010并且读回实例组对象1012的当前值。此时,实例组对象1012仍持有主控机器1022的先前IP地址值,因此对等机器对重新连接的尝试将继续失败。对等机器1024、10将继续试图进行重新连接。图11是图示说明实例组1104中的主控机器1122恢复的示意图。控制器可以发起主控机器1122的重启。在实施方案中,主控机器1122被自动重新初始化。在重启时,新IP地址(例如,192.168.1.9)可以被分配到主控机器1122。主控机器1122将联络数据服务器1110并且以其新IP地址更新实例组对象1112。主控机器1122将读回储存在实例组对象1112中的信息并且更新其本地主机文件。作为重新连接尝试的一部分,对等机器11对、11沈将联络数据源1110并且读回实例组对象1112的内容。实例组对象1112持有主控机器1122的新IP地址,因而对等机器1124,1126将读取主控机器1122的新的值。利用主控机器1122的新的值,对等机器11M、11可以连接消息服务服务器1130。主控机器1122和对等机器1124、11沈相互得知。如果对等机器失效(die),则启动过程类似于结合图7和图8所描述的启动过程。图12是图示说明储存在数据源1210上的一组实例组定义1212的示意图。数据源1210将信息储存为一组实例组定义1212,每个都是唯一的命名空间(namespace)。在每个实例组1212中,储存一组命名值对(namedvaluepairs)。尽管上面已经描述了根据所公开的原理的各种实施方案,应当理解的是,它们仅通过示例性的方式被呈现,而非限制性的。因此,本发明(一个或多个)的宽度和范围不应被任何上面描述的示意性实施方案所限,而是应当仅根据权利要求及其由本公开所得到的等同形式来限定。此外,上面的优点和特征在所描述的实施方案中被提供,而不应限制这样的授权权利要求被应用到实现上述优点中的任一个或全部的处理过程和结构中。例如,如本文所提及的,机器可以为虚拟机器、计算机、节点、实例、主机或联网计算环境中的机器。同样如本文所提及的,联网计算环境是通过便利机器之间的通信并且允许机器共享资源的通信信道连接的机器的集合。再如本文所提及的,服务器是被部署来执行程序的机器并且可以包括软件实例,该程序操作为套接字监听程序(socketlistener)0资源可以囊括用于运行实例的任何类型的资源,包括硬件(例如,服务器、客户端、大型计算机、网络、网络储存器、数据源、存储器、中央处理单元时间、科学仪器以及其他计算设备)和软件、软件许可、可用网络服务以及其他非硬件资源或其组合。联网计算环境可以包括,但不限于,计算网格系统(computinggridsystem)、分布式计算环境、云计算环境等。这样的联网计算环境包括硬件和软件基础架构,该硬件和软件基础架构被配置来形成包括多个资源的虚拟组织,该多个资源可以在地理上是分散在多个位置的。尽管HTTP通信协议可以在本文被描述,但是本申请和由此获得的任何专利的覆盖范围均可以延伸到其他局域网、广域网或者使用其他通信协议操作的其他网络。在本申请中使用可替换的术语描述服务和应用程序。服务可以为Java服务或者操作代码的其他实例。服务/应用程序是联网计算环境中的机器或机器群集上运行的程序。服务可以是可移植的(transportable)并且可以在多个机器上运行和/或可以从一个机器迁移(migrate)到另一个机器。本文所使用的各种术语具有本
技术领域
中的特定含义。具体术语是否应当被认为是这样的“技术术语”取决于该术语被用于的上下文。“连接到”、“与……通信”或者其他类似的术语一般地应当被广义地认为是包括这样的两种情况的,其中通信和连接在所涉及的部件之间是直接的或者是通过所涉及的部件之间的一个或更多个中间物的,包括通过因特网或者某些其他通信网络。“网路”、“系统”、“环境”以及其他类似的术语一般地涉及体现本公开的一个或更多个方面的联网计算系统。这些和其他术语将根据在本公开中被用于的上下文来理解,并且将被理解为本领域普通技术人员中的一个都会理解的那些术语,所述本领域技术人员将会理解在所公开的上下文中的那些术语。上面的限定并不排除基于所公开的上下文可以被赋予那些术语的其他含义。比较、度量和时间选择(timing)的词汇,例如“此时”、“等同形式”、“在……期间”、“完全”等,应当被理解为意指“基本上此时”、“基本上等同形式”、“基本上在……期间”、“基本上完全”等,其中“基本上”意指,对实现隐含地或明确地阐述的期望结果来讲,这样的比较、度量和时间选择是实际可行的。此外,本文的段落标题是被提供来与37CFR1.77的建议一致,或者用于提供本文的结构线索。这些标题不应限制或表征可以从该公开公布的任何权利要求中所阐述的一个或多个发明。具体地并且作为示例,尽管标题指“
技术领域
”,但是权利要求书不应被该标题下所选择的语言限制为描述所谓的
技术领域
。进一步,“
背景技术
”中的技术的描述不是要被解读为承认该技术是该公开中的任意一个或多个发明的现有技术。“
发明内容”也不是要被认为是在公布的权利要求书中所阐述的一个或多个发明的特征描述。另外,该公开中对单数的“发明”的任何引用不应被用于证明在该公开中仅有一个新颖点。根据从该公开公布的多个权利要求的限定,可以阐述多个发明,并且这些权利要求相应地定义了由其保护的一个或多个发明,以及它们的等同形式。在所有例子中,这些权利要求的范围应根据该公开按照这些权利要求本身的实质来理解,而不应被本文的标题限制。权利要求1.一种用于将机器加入联网计算环境中的实例组以连接与所述实例组相关联的其他机器的方法,所述方法包括确定所述机器的IP地址;就与所述实例组相关联的组名信息和所述IP地址,同与所述联网计算环境相关联的数据源进行通信;从所述数据源接收与所述实例组相关联的其他机器的IP地址;以及连接到所述实例组。2.如权利要求1所述的方法,还包括连接到与所述实例组相关联的消息传递服务。3.如权利要求2所述的方法,还包括通过所述消息传递服务通告所述IP地址和与所述机器相关联的名称。4.如权利要求2所述的方法,还包括如果所述实例组为空,将所述机器命名为与主控主机相关联的名称。5.如权利要求2所述的方法,其中连接到所述消息传递服务的步骤包括启动消息传递服务服务器。6.如权利要求2所述的方法,还包括监听加入所述实例组的对等机器。7.如权利要求2所述的方法,其中连接到所述消息传递服务的步骤包括启动消息传递服务客户端。8.如权利要求1所述的方法,还包括以有规律的时段,对与所述实例组相关联的其他机器的IP地址的所述数据源执行Ping操作。9.如权利要求1所述的方法,还包括在所述数据源创建所述实例组。10.如权利要求1所述的方法,还包括如果所述实例组已具有主控主机,将所述机器命名为与对等机器相关联的名称。11.如权利要求1所述的方法,还包括将与所述实例组相关联的其他机器的所述IP地址写入本地主机文件。12.如权利要求1所述的方法,还包括将所述机器的所述IP地址写入本地主机文件。13.一种用于在联网计算环境中与连接的实例组中重启的主控机器重新连接的方法,所述方法包括确定对等机器和失败的主控机器之间缺少连接;周期性地尝试连接到与所述失败的主控机器相关联的消息传递服务服务器;以及在所述失败的主控机器重启之后,连接到与所述重启的主控机器相关联的消息传递服务服务器。14.如权利要求13所述的方法,其中所述周期性地尝试连接的步骤还包括联络与所述联网计算环境相关联的数据源;以及读取实例组对象的当前值。15.如权利要求14所述的方法,还包括在所述主控机器重启之后,读取所述实例组对象的所述当前值并且以与所述重启的主控机器相关联的新IP地址更新本地主机文件。16.如权利要求13所述的方法,还包括自动重启所述失败的主控机器。17.如权利要求13所述的方法,还包括发起重启所述失败的主控机器的控制器。18.—种联网计算环境中的实例组的机器,所述机器包括处理器部件,所述处理器部件用于确定所述机器的IP地址;存储器部件,所述存储器部件用于储存与所述机器相关联的本地主机文件;通信部件,所述通信部件用于通过传输总线将与所述实例组相关联的组名信息和所述IP地址传输到与所述联网计算环境相关联的数据源,并且用于通过所述传输总线从所述数据源接收与所述实例组相关联的其他机器的IP地址;以及消息传递服务部件,所述消息传递服务部件用于连接所述实例组。19.如权利要求18所述的机器,其中所述消息传递服务部件包括消息传递服务客户端和消息传递服务服务器中的一个。20.如权利要求18所述的机器,其中所述处理器可操作来确定所述机器和与所述实例组相关联的失败的主控机器之间缺少连接;并且其中,在缺少所述连接时,所述通信部件可操作来周期性地尝试连接到与所述失败的主控机器相关联的消息传递服务服务器;并且其中,在所述失败的主控机器重启之后,所述消息传递服务部件可操作来重新连接到与所述重启的主控机器相关联的消息传递服务服务器。全文摘要一种用于建立和维持机器的连接的实例组的系统包括用于实例组创建的协议;用于主控机器创建、操作和恢复的协议;以及用于对等机器创建、操作和恢复的协议。这些协议允许每个机器连接数据源并且建立包含所述实例组中的机器的名称和IP地址的本地主机文件,由此在所述实例组中的机器之间提供网络连接。文档编号H04L29/06GK102577249SQ201080041480公开日2012年7月11日申请日期2010年7月20日优先权日2009年7月20日发明者K·梁,M·王申请人:泰必高软件公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1