CN104935488B - 面向服务的架构中的隧道代理及其方法 - Google Patents
面向服务的架构中的隧道代理及其方法 Download PDFInfo
- Publication number
- CN104935488B CN104935488B CN201510114470.5A CN201510114470A CN104935488B CN 104935488 B CN104935488 B CN 104935488B CN 201510114470 A CN201510114470 A CN 201510114470A CN 104935488 B CN104935488 B CN 104935488B
- Authority
- CN
- China
- Prior art keywords
- node
- service
- tunnel
- web services
- characteristic
- 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
Classifications
-
- 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/14—Session management
- H04L67/148—Migration or transfer of sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5015—Service provider selection
-
- 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
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请案涉及一种在面向服务的架构中的隧道代理。一种计算机装置包含经配置以实施隧道代理的逻辑。所述隧道代理经配置以:从客户端装置接收对系统中的服务的请求,所述服务具有所请求服务特性;选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点;及建立具有在所述客户端装置处的第一端及在所述选定第一节点处的第二端的通信隧道。所述隧道代理进一步经配置以:确定所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一节点已变得不可到达;选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点;及将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。
Description
技术领域
本发明大体来说涉及面向服务的架构系统中的隧道代理。
背景技术
装置网络可经由网络通信且可形成提供大量各种服务的系统的部分。不同装置可在不同时间提供不同服务且系统可需要保持追踪哪些服务在哪些装置处可用。举例来说,当添加、移除或修改装置时,系统的配置会改变。在具有大量装置的系统中,这可导致需要频繁地进行重新配置,此会消耗系统资源。因此,保持追踪不同装置处的可用服务可成为一项具挑战性的任务。
发明内容
根据一个方面,一种由计算机装置执行的方法可包含:由所述计算机装置从客户端装置接收对系统中的服务的请求,所述服务具有所请求服务特性;由所述计算机装置选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点;由所述计算机装置在所述客户端装置与所述选定第一节点之间建立通信隧道,其中所述通信隧道包含在所述客户端装置处的第一端及在所述第一节点处的第二端;由所述计算机装置选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点;及由所述计算机装置将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。
此方法的可能优点是,为了建立通信隧道,使用或访问服务的客户端装置仅必须提供所述服务的规范,而不需要发现或提供所述服务的网络地址。此方法的另一可能优点是,如果在第一装置处服务失败,那么将隧道的第二端移动到托管所述服务的第二装置,而无需对客户端装置的中断且无需客户端装置发现隧道的第二端已被移动。另一可能优点是,客户端装置可能不知晓所述客户端装置正通过通信隧道访问服务。这些优点可导致减少处理时间及节省系统资源的技术效果。相比上文所描述的优点,所述方法可包含更少的优点、不同的优点或额外优点。
另外,所述方法可包含:将规定所述所请求服务特性的搜索查询发送到服务注册表,其中所述服务注册表包含在所述系统的一或多个节点中可用的服务的列表;从所述服务注册表接收搜索结果,其中所述搜索结果包含具有所述所请求服务特性的一或多个节点的列表;且选择所述系统中托管具有所述所请求服务特性的所述第一服务实例的所述第一节点可包含从具有所述所请求服务特性的一或多个节点的所述列表选择所述第一节点。将搜索查询发送到服务注册表及接收包含具有所请求服务特性的一或多个节点的列表的搜索结果可提供识别托管满足所请求服务特性的要求的服务的节点的优点。
另外,所述方法可包含确定应更新所述通信隧道;且选择所述系统中托管具有所述所请求服务特性的所述第二实例的所述第二节点可以是基于确定应更新所述通信隧道。确定应更新所述通信隧道及基于确定应更新所述通信隧道而选择所述第二节点可提供对改变的条件做出响应借此继续经由通信隧道为客户端提供对具有所请求服务特性的服务的访问的优点。
另外,确定应更新所述通信隧道可包含:以特定间隔将所述搜索查询重新发送到所述服务注册表;及从所述服务注册表接收经更新搜索结果,其中所述经更新搜索结果包含所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。以特定间隔将所述搜索查询重新发送到所述服务注册表及从所述服务注册表接收经更新搜索结果可提供保持追踪哪些服务在哪些节点处可用的优点。
另外,确定应更新所述通信隧道可包含以下操作中的至少一者:从所述服务注册表接收所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示;从所述客户端装置接收表示所述第一节点不可到达的消息;或从所述第一节点接收表示所述第一节点不能将所述第一服务提供到所述客户端装置的消息。从服务注册表接收一节点不再托管具有所请求服务特性的服务实例或所述服务实例不再具有所述所请求服务特性的指示可提供确定何时应将通信隧道的第二端移动到另一节点的优点。
另外,确定应更新所述通信隧道可包含:确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配;且选择所述系统中托管具有所述所请求服务特性的所述第二实例的所述第二节点可以是基于确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配。确定系统中的另一节点是对所请求服务特性的更佳匹配及基于确定系统中的另一节点是对所请求特性的更佳匹配而选择第二节点可提供管理通信隧道以为客户端装置提供对所请求服务特性的最佳可能匹配的优点。
另外,确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配可包含以特定间隔将所述搜索查询重新发送到所述服务注册表;及从所述服务注册表接收经更新搜索结果,其中所述经更新搜索结果包含所述系统中的另一节点是对所述所请求服务特性的更佳匹配的指示。以特定间隔将所述搜索查询重新发送到所述服务注册表及从所述服务注册表接收经更新搜索结果可提供保持追踪哪些服务在哪些节点处可用的优点。
另外,确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配可包含从所述服务注册表接收所述第二节点托管所述第二服务实例的指示,其中所述第二服务实例是对所述所请求服务特性的更佳匹配。从服务注册表接收所述系统中的另一节点是对所述所请求服务特性的更佳匹配的指示可提供使隧道代理能够确定应将通信隧道的第二端移动到另一节点的优点。
另外,所述方法可包含确定从所述客户端装置到具有所述所请求服务特性的一或多个节点的所述列表中所包含的所述节点中的特定节点的连接的一或多个网络连接度量;且从具有所述所请求服务特性的一或多个节点的所述列表选择所述第一节点可以是基于所述所确定一或多个网络连接度量。确定从所述客户端装置到特定节点的连接的一或多个网络连接度量可提供使隧道代理能够选择将经由通信隧道提供到所述客户端装置的更佳连接的节点的优点。
另外,可相对于所述客户端装置透明地来完成将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。相对于所述客户端装置透明地使所述通信隧道的第二端移动可提供使所述客户端装置能够在无任何所感知中断的情况下访问服务的优点。
另外,所请求服务特性可包含以下各项中的一或多者:特定服务接口;与服务相关联的特定操作系统;与服务相关联的特定处理容量;与服务相关联的特定存储容量;与服务相关联的特定带宽;与服务相关联的特定位置;与服务相关联的特定编解码器;与服务相关联的特定域;或与服务相关联的特定安全等级。将隧道代理配置为基于这些特性而选择节点可通过使客户端装置能够请求包含所述特性中的至少一者的服务而有益于所述系统。
根据另一方面,一种计算机装置可包含:逻辑,其经配置以实施隧道代理,所述隧道代理经配置以:从客户端装置接收对系统中的服务的请求,所述服务具有所请求服务特性;选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点;在所述客户端装置与所述选定第一节点之间建立通信隧道,其中所述通信隧道包含在所述客户端装置处的第一端及在所述第一节点处的第二端;选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点;及将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。
此计算机装置的可能优点是,为了建立通信隧道,使用或访问服务的客户端装置仅必须提供所述服务的规范,而不需要发现或提供所述服务的网络地址。此计算机装置的另一可能优点是,如果在第一装置处服务失败,那么所述隧道代理可将隧道的第二端移动到托管所述服务的第二装置,而无需对客户端装置的中断且无需客户端装置发现隧道的第二端已被移动。另一可能优点是,客户端装置可能不知晓所述客户端装置正通过通信隧道访问服务。这些优点可导致减少处理时间及节省系统资源的技术效果。相比上文所描述的优点,所述计算机装置可包含更少的优点、不同的优点或额外优点。
另外,所述隧道代理可进一步经配置以:将规定所述所请求服务特性的搜索查询发送到服务注册表,其中所述服务注册表包含在所述系统的一或多个节点中可用的服务的列表;从所述服务注册表接收搜索结果,其中所述搜索结果包含具有所述所请求服务特性的一或多个节点的列表;且其中当选择所述系统中托管具有所述所请求服务特性的所述第一服务实例的所述第一节点时,所述隧道代理可进一步经配置以从具有所述所请求服务特性的一或多个节点的所述列表选择所述第一节点。将搜索查询发送到服务注册表及接收包含具有所请求服务特性的一或多个节点的列表的搜索结果可提供识别托管满足所请求服务特性的要求的服务的节点的优点。
另外,所述隧道代理可进一步经配置以确定应更新所述通信隧道;且所述隧道代理可经配置以基于确定应更新所述通信隧道而选择所述系统中托管具有所述所请求服务特性的所述第二实例的所述第二节点。确定应更新所述通信隧道及基于确定应更新所述通信隧道而选择所述第二节点可提供对改变的条件做出响应借此继续经由通信隧道为客户端提供对具有所请求服务特性的服务的访问的优点。
另外,当确定应更新所述通信隧道时,所述隧道代理可进一步经配置以:以特定间隔将所述搜索查询重新发送到所述服务注册表;及从所述服务注册表接收经更新搜索结果,其中所述经更新搜索结果包含所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。以特定间隔将所述搜索查询重新发送到所述服务注册表及从所述服务注册表接收经更新搜索结果可提供使隧道代理能够保持追踪哪些服务在哪些节点处可用的优点。
另外,当确定应更新所述通信隧道时,所述隧道代理可进一步经配置以进行以下操作中的至少一者:从所述服务注册表接收所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示;从所述客户端装置接收表示所述第一节点不可到达的消息;或从所述第一节点接收表示所述第一节点不能将所述第一服务提供到所述客户端装置的消息。从服务注册表接收一节点不再托管具有所请求服务特性的服务实例或所述服务实例不再具有所述所请求服务特性的指示可提供使隧道代理能够确定应将通信隧道的第二端移动到另一节点的优点。
另外,当确定应更新所述通信隧道时,所述隧道代理可进一步经配置以:确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配;且所述隧道代理可经配置以基于确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配而选择所述系统中托管具有所述所请求服务特性的所述第二实例的所述第二节点。确定系统中的另一节点是对所请求服务特性的更佳匹配及基于确定系统中的另一节点是对所请求特性的更佳匹配而选择第二节点可提供使隧道代理能够管理通信隧道以为客户端装置提供对所请求服务特性的最佳可能匹配的优点。
另外,当确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配时,所述隧道代理可进一步经配置以从所述服务注册表接收所述第二节点托管所述第二服务实例的指示,其中所述第二服务实例是对所述所请求服务特性的更佳匹配。以特定间隔将所述搜索查询重新发送到所述服务注册表及从所述服务注册表接收经更新搜索结果可提供使隧道代理能够保持追踪哪些服务在哪些节点处可用的优点。
另外,所述隧道代理可经配置以相对于所述客户端装置透明地将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。相对于所述客户端装置透明地使所述通信隧道的第二端移动可提供使所述客户端装置能够在无任何所感知中断的情况下访问服务的优点。
根据又一方面,一种计算机装置可包含经配置以实施隧道代理的逻辑,所述隧道代理经配置以:从客户端装置接收对系统中的服务的请求,所述服务具有所请求服务特性;将规定所述所请求服务特性的搜索查询发送到服务注册表,其中所述服务注册表包含在所述系统的一或多个节点中可用的服务的列表;从所述服务注册表接收搜索结果,其中所述搜索结果包含具有所述所请求服务特性的一或多个节点的列表;从具有所述所请求服务特性的一或多个节点的所述列表选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点;在所述客户端装置与所述选定第一节点之间建立通信隧道,其中所述通信隧道包含在所述客户端装置处的第一端及在所述第一节点处的第二端;确定所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一节点已变得不可到达;响应于确定所述第一节点不再托管具有所述所请求服务特性的所述第一服务实例或所述第一节点已变得不可到达,选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点;及相对于所述客户端装置透明地将所述通信隧道的所述第二端从所述第一节点移动到所述第二节点。
此计算机装置的可能优点是,为了建立通信隧道,使用或访问服务的客户端装置仅必须提供所述服务的规范,而不需要发现或提供所述服务的网络地址。此计算机装置的另一可能优点是,如果在第一装置处服务失败,那么所述隧道代理可将隧道的第二端移动到托管所述服务的第二装置,而无需对客户端装置的中断且无需客户端装置发现隧道的第二端已被移动。另一可能优点是,客户端装置可能不知晓所述客户端装置正通过通信隧道访问服务。这些优点可导致减少处理时间及节省系统资源的技术效果。相比上文所描述的优点,所述计算机装置可包含更少的优点、不同的优点或额外优点。
附图说明
图1是图解说明根据下文所描述的一或多个实施例的示范性环境的框图;
图2是图解说明图1的装置的示范性组件的框图;
图3是图解说明图1的装置的示范性功能层的框图;
图4A是图解说明图3的服务层的示范性功能组件的框图;
图4B是图解说明图4A的服务注册表的功能性的框图;
图4C是图解说明图4A的服务注册表的示范性功能组件的框图;
图4D是可由图4A的服务注册表存储的特定服务的示范性特性表的框图;
图5A是图解说明图3的覆盖网络层的功能组件的框图;
图5B是示范性功能覆盖网络的树的框图;
图6是图解说明隧道代理的功能组件的框图;
图7A是图解说明可存储于图4A的服务注册表中的组件的框图;
图7B是图解说明可存储于图6的隧道数据库中的组件的框图;
图8是根据本文中所描述的实施方案用于设置及管理通信隧道的过程的流程图;以及
图9A到9C是根据本文中所描述的实施方案设置及管理通信隧道的示范性情景的图。
具体实施方式
以下详细描述参考附图。不同图式中的相同参考编号识别相同或类似元件。
例如监控系统等系统可包含可提供服务的大量装置。如果客户端装置请求特定服务,那么可使用隧道协议来经由所述客户端装置与提供所述服务的装置之间的通信隧道封装业务。可由所述客户端装置或由隧道代理手动地设置隧道,所述隧道代理选择隧道的端点并在所述端点之间建立所述隧道。为了建立隧道,所述客户端装置或所述隧道代理需要知晓网络的拓扑。举例来说,所述客户端装置可需要知晓提供服务的装置的网络地址且将请求将在客户端装置的网络地址与提供所述服务的装置的网络地址之间设置隧道。因此,所述客户端装置可首先需要确定提供服务的装置的网络地址。此外,如果提供服务的装置变得不可用,如果服务变得不可用或如果服务的特性改变,那么客户端装置可需要定位系统中提供所述服务的另一装置,可需要确定新装置的网络地址,且可需要请求隧道代理设置到新装置的新通信隧道。在具有大量具改变的服务能力的装置的系统中,此过程可为缓慢的且消耗大量资源。这些问题导致需要解决方案的技术问题。
本文中所描述的实施方案涉及基于面向服务的架构(SOA)的系统中的隧道代理。在基于SOA的系统中,将功能性离散化成若干服务。一服务是自含式功能性凝聚单元。通过具有经定义消息格式的服务接口来执行与服务的通信。通信过程独立于服务的实施方案。服务可提供最终用户功能性且服务接口可被设计成为商业人员可理解的。此外,每一服务独立于其它服务且服务的边界是明确的。因此,如果一个服务崩溃,那么其它服务将不受影响。因此,举例来说,每一服务可作为不同进程运行。
由系统中的节点提供的服务存储于服务注册表中。所述服务注册表存储每一服务的特性,例如服务识别符、与服务相关联的操作系统、服务正在其上运行的节点的位置坐标、与服务相关联的处理容量、与服务相关联的带宽容量,及/或与服务相关联的其它类型的特性。并非系统中的所有节点均可包含服务注册表。因此,一些服务注册表可存储在系统中的其它节点处可用的服务。此外,系统中的服务注册表可在拓扑上互连,且第二服务注册表可通过第一服务注册表访问。如果第一服务注册表接收到搜索查询且未识别出对所述搜索查询的匹配,那么第一服务注册表可将所述搜索查询转发到第二服务注册表。因此,对于提交用以定位服务的搜索查询的客户端来说,系统中的各服务注册表可显现为单个分布式服务注册表。
为了解决上文所描述的技术问题,SOA系统包含隧道代理。所述隧道代理经配置以建立及管理从客户端装置到具有所请求服务特性的服务的通信隧道。所述通信隧道可具有在所述客户端装置处的第一端及在提供具有所请求服务特性的服务的装置处的第二端。所述隧道代理可以对于所述客户端装置透明的方式来改变通信隧道的第二端处的装置。举例来说,代替基于网络地址或装置识别符而请求通信隧道(例如,网络地址 12.11.1.43:1233与网络地址143.223.123.1:22之间的隧道),客户端可请求具有服务特性 VIDEO_MONITORING_SERVICE的服务主机与具有服务特性CAMERA_FRONT_DOOR的服务主机之间的通信隧道。所述隧道代理可识别具有服务特性CAMERA_FRONT_DOOR的装置且可设置到客户端装置(例如, VIDEO_MONITORING_SERVICE服务主机)的通信隧道。所述客户端装置可能不知晓提供CAMERA_FRONT_DOOR服务的装置的实际网络地址或装置识别符。此外,如果提供CAMERA_FRONT_DOOR服务的装置变得不可用或停止托管所述服务,那么隧道代理可识别系统中托管具有所请求CAMERA_FRONT_DOOR服务的服务的另一装置,且可相对于所述客户端装置透明地将通信隧道的第二端切换为所述另一装置。
所述隧道代理可从客户端装置接收对具有所请求服务特性的服务的请求且可将对托管具有所请求服务特性的服务的系统节点的列表的搜索查询发送到服务注册表。所述服务特性可规定特定服务接口、特定操作系统、特定处理容量、特定存储容量、特定带宽及/或位速率、特定位置、特定编解码器、特定网络域、特定安全等级,及/或另一类型的服务特性。所述请求可规定多个所请求服务特性。因此,短语“所请求服务特性”可指代多个所请求服务特性。所述服务注册表可返回托管具有所请求的一或多个服务特性的服务实例的一或多个系统节点的列表,且所述隧道代理可从所述列表选择所述系统节点中的一者。可基于对所请求的一或多个服务特性的最佳匹配及/或基于例如连接度量等其它因素而选择所述系统节点。举例来说,如果两个节点均托管具有所请求特性的服务实例且所述节点中的一者具有到客户端装置的较高质量连接,那么所述隧道代理可选择具有较高质量连接的节点。
所述隧道代理可建立具有在所述客户端装置处的第一端及在提供所请求服务的选定系统节点处的第二端的通信隧道。可使用(举例来说)隧道设置协议(TSP)来设置隧道。在设置通信隧道之后,所述隧道代理可确定应更新所述通信隧道。作为一实例,所述隧道代理可以特定间隔将搜索查询重新发送到服务注册表且可从服务注册表接收经更新搜索结果。所述经更新搜索结果可指示:选定系统节点为不可用的,选定系统节点不再托管所述服务,所托管服务的特性不再匹配所请求服务特性的要求,及/或另一系统节点托管更佳地匹配所请求服务特性的要求的服务实例。
作为另一实例,所述隧道代理可在不重新发送搜索查询的情况下从服务注册表接收更新。举例来说,所述隧道代理可设置对匹配搜索查询的服务的改变的预订,且所述服务注册表可将周期性更新发送到所述隧道代理。作为又一实例,所述隧道代理可从所述客户端装置接收表示选定节点无法经由通信隧道到达的消息或可从选定节点接收表示选定节点不再托管所请求服务的消息。
响应于确定应更新所述通信隧道,所述隧道代理可选择托管具有所请求服务特性的服务实例的另一节点且可将通信隧道的第二端从第一选定节点移动到第二选定节点。所述客户端装置可在未检测到隧道代理已使通信隧道的第二端移动的情况下继续使用所述服务。
在一些实施方案中,可由所述隧道代理建立及维持一对多通信隧道。举例来说,客户端装置可请求到具有所请求服务特性的特定数目个服务实例的通信隧道。因此,隧道代理可设置具有在客户端装置处的第一端且具有多个第二端的通信隧道,每一第二端连接到具有所请求特性的特定服务实例。
因此,如本文中所描述,所述隧道代理提供如下可能优点:为了建立通信隧道,使用或访问服务的客户端装置仅必须提供所述服务的规范,而不需要发现或提供所述服务的网络地址。隧道代理的另一可能优点是,如果在第一装置处服务失败,那么将隧道的第二端移动到托管所述服务的第二装置,而无需对客户端装置的中断且无需客户端装置发现隧道的第二端已被移动。另一可能优点是,客户端装置甚至可能不知晓所述客户端装置正通过通信隧道访问服务。
图1是可在其中实施所描述的系统及/或方法的示范性环境100的框图。如图1的实施例中所展示,环境100包含网络110、子网络120-A到120-N(统称为“子网络120”且个别地称为“子网络120”)、装置130-A-A到130-N-K(统称为“装置130”且个别地称为“装置130”)及管理装置150。装置130-N-K是指子网络120-N中的第K个装置 130。在此实施例中,环境100中的组件形成面向服务的架构(SOA)系统服务总线140。
网络110使得子网络120及/或装置130能够彼此通信。网络110可包含一或多个电路交换网络及/或包交换网络。举例来说,在一个实施例中,网络110可包含局域网(LAN)、广域网(WAN)、城域网(MAN)、公共交换电话网络(PSTN)、特设网络、内联网、因特网、基于光纤的网络、无线网络及/或这些或其它类型网络的组合。
子网络120可包含LAN(例如,层2网络)及/或专用网络(例如,层3网络)。子网络120可互连一或多个装置130。举例来说,子网络120-A可互连装置130-A-A到130-A-J。举例来说,装置130可包含经配置以经由SOA系统服务总线140通信的任何装置。
装置130可包含:服务器计算机装置,例如超文本预处理器(PHP)服务器装置、C 程序服务器装置、Linux服务器装置、Windows服务器装置及/或另一类型的服务器装置;个人计算机装置,例如桌上型计算机、膝上型计算机、平板计算机、移动通信装置及/ 或运行Windows、Linux、Android、iOS及/或另一操作系统的另一类型的个人计算机装置;监视装置,例如可见光摄像机、红外(IR)摄像机、热标志摄像机;麦克风;报警传感器,例如运动传感器、热传感器、压力传感器及/或另一类型的报警传感器;微控制器计算机装置;及/或另一类型的计算机装置。尽管将装置130展示为连接到子网络120,但特定装置130可直接连接到网络110。
在一个实施例中,在现有网络拓扑的顶部上于装置130之间实施SOA系统服务总线140。SOA系统服务总线140可使得不同类型的装置130及/或使用不同平台实施的装置130能够使用面向服务的架构进行通信。SOA系统服务总线140可使得第一装置130 能够向任何装置130(例如,本身或另一装置130)请求特定服务。因此,由第一装置130 托管的客户端(例如,本身为“服务”或“客户端服务”)可请求由第二装置130托管的服务(例如,当所述服务在第一装置130中为不可用时)。请求另一服务(例如,在第二装置130中)的第一服务(例如,在第一装置130中)由于已起始请求而称为“客户端”或“客户端服务”。举例来说,第一服务还可向网络中的其它服务提供服务。
在一个实施例中,经由标准化服务接口来访问服务。每一类型的服务均可与特定服务接口(例如,不同服务接口)相关联。因此,请求服务的客户端可与服务接口通信,且所述客户端关于所述服务的实际实施方案可能是不可知的。换句话说,服务的实施方案使用由服务接口界定的协议彼此进行通信,使得每一实施方案不必与其它服务的实施方案有关。与特定服务接口相关联的运行服务实施方案可称为服务实例。包含服务主机(例如,托管服务的装置)的装置130可借助服务注册表(例如,服务列表或数据库)来保持追踪可用服务实例。SOA系统服务总线140可使得装置130之间的通信能够通过搜索装置 130中的服务主机的服务注册表而定位所请求服务。
管理装置150可使得管理员能够配置或以其它方式管理SOA系统服务总线140。举例来说,管理装置150可包含便携式通信装置(例如,移动电话、智能电话、平板电话装置、全球定位系统(GPS)装置及/或另一类型的无线装置);个人计算机或工作站;服务器装置;膝上型计算机、平板计算机或另一类型的便携式计算机;及/或具有通信能力的任何类型的装置。
如同网络110,子网络120可包含一或多个电路交换网络及/或包交换网络。举例来说,子网络120可包含LAN、WAN、MAN、PSTN、特设网络、内联网、因特网、基于光纤的网络、无线网络及/或这些或其它类型的网络的组合。
虽然图1展示环境100的示范性组件,但在其它实施方案中,环境100相比图1中所描绘的组件可包含更少的组件、不同的组件、不同布置的组件或额外组件。另外或替代地,环境100中的任一装置(或任何装置群组)可执行描述为由环境100中的一或多个其它装置执行的功能。
图2是图解说明装置130的示范性组件的框图。如图2中所展示,装置130可包含总线210、处理器220、存储器230、输入装置240、输出装置250及通信接口260。
总线210可包含准许装置130的组件当中的通信的路径。处理器220可包含任何类型的单核心处理器、多核心处理器、微处理器、基于锁存器的处理器及/或解译并执行指令的处理逻辑(或处理器、微处理器及/或处理逻辑的族群)。在其它实施例中,处理器220 可包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)及/或另一类型的集成电路或处理逻辑。
存储器230可包含可存储供由处理器220执行的信息及/或指令的任何类型的易失性及/或动态存储装置,及/或可存储供由处理器220使用的信息的任何类型的非易失性存储装置。举例来说,存储器230可包含随机存取存储器(RAM)或另一类型的动态存储装置、只读存储器(ROM)装置或另一类型的静态存储装置、内容可寻址存储器(CAM)、磁性及/或光学记录存储器装置及其对应驱动器(例如,硬盘驱动器、光学驱动器等等)及/ 或可装卸形式的存储器,例如快闪存储器。
输入装置240可允许操作者将信息输入到装置130中。举例来说,输入装置240可包含键盘、鼠标、笔、麦克风、遥控器、音频捕获装置、图像及/或视频捕获装置、触摸屏显示器及/或另一类型的输入装置。在一个实施例中,装置130可经远程地管理且可不包含输入装置240。换句话说,装置130可为“无头的”,且举例来说,可不包含键盘。
输出装置250可将信息输出给装置130的操作者。输出装置250可包含显示器、打印机、扬声器及/或另一类型的输出装置。举例来说,装置130可包含显示器,其可包含用于将内容显示给客户的液晶显示器(LCD)。在一个实施例中,装置130可经远程地管理且可不包含输出装置250。换句话说,装置130可为“无头的”,且举例来说,可不包含显示器。
通信接口260可包含使得装置130能够与其它装置及/或系统通信的收发器(例如,发射器及/或接收器)。通信接口260可经由无线通信(例如,射频、红外及/或视觉光学器件等等)、有线通信(例如,导电线、双绞线电缆、同轴电缆、传输线、光纤电缆及/或波导等等)或无线与有线通信的组合进行通信。网络接口260可包含将基带信号转换为射频 (RF)信号的发射器及/或将RF信号转换为基带信号的接收器。网络接口260可耦合到用于发射及接收信号的天线。
网络接口260可包含逻辑组件,所述逻辑组件包含输入及/或输出端口、输入及/或输出系统及/或促进将数据发射到其它装置的其它输入及输出组件。举例来说,网络接口260可包含用于有线通信的网络接口卡(例如,以太网卡)及/或用于无线通信的无线网络接口(例如,WiFi)卡。网络接口260还可包含用于经由电缆通信的通用串行总线(USB) 端口、BluetoothTM无线接口、射频识别(RFID)接口、近场通信(NFC)无线接口及/或将数据从一种形式转换为另一形式的任何其它类型的接口。
如下文所描述,装置130可执行与隧道代理有关的某些操作,所述隧道代理经配置以基于所请求服务特性而建立及管理通信隧道。装置130可响应于处理器220执行计算机可读媒体(例如存储器230)中所含有的软件指令而执行这些操作。计算机可读媒体包含非暂时性存储器装置。存储器装置可实施于单个物理存储器装置内或跨越多个物理存储器装置散布。可将软件指令从另一计算机可读媒体或从另一装置读取到存储器230中。存储器230中所含有的软件指令可致使处理器220执行本文中所描述的过程。或者,可代替或结合软件指令来使用硬连线(例如,固定)电路以实施本文中所描述的过程。因此,本文中所描述的实施方案并不限于硬件电路及软件的任何特定组合。
虽然图2展示装置130的示范性组件,但在其它实施方案中,装置130相比图2中所描绘的组件可包含更少的组件、不同的组件、额外组件或不同布置的组件。另外或替代地,装置130的一或多个组件可执行描述为由装置130的一或多个其它组件执行的一或多个任务。管理装置150可类似地被配置为装置130。
图3是图解说明装置130的示范性通信层的框图。装置130的功能组件可(举例来说) 由执行来自存储器230的指令的处理器220实施。另外或替代地,装置130的功能组件可经由一或多个ASIC的硬连线(例如,固定)电路来实施。如图3中所展示,装置130 可包含服务层310、覆盖网络层320及装置层330。
在一个实施例中,服务层310使得客户端能够搜索特定服务类型的服务实例且使得客户端能够将请求发送到特定服务实例。可经由在一个实施例中对服务的实际实施方案不可知的标准化服务接口来访问所述服务。服务实例可与明确边界相关联。在此实施例中,在装置130上运行的特定过程及/或存储于装置130上的特定数据无歧义地驻存在服务实例内或服务实例外部。一服务实例相对于其它服务实例可为自主的。举例来说,可修改特定服务实例(例如,可重写代码),而不会负面地影响与所述特定服务实例交互的其它服务实例。一服务可能与(相同类型或不同类型的)其它服务实例共享模式及/或合约,但在一个实施例中,不共享服务实施方案。模式规定由服务接口发送或接收的消息的格式及内容。合约规定由服务接口发送或接收的容许消息序列。
可将一或多个服务共同地部署为一捆绑件。捆绑件可对应于充当系统中的部署单元的服务。系统中能够部署特定捆绑件、对应于一或多个服务的群组的节点充当捆绑件主机。捆绑件存储库服务可将捆绑件集合存储于系统中。因此,当服务管理器选择部署服务时,所述服务管理器可需要定位能够部署与所述服务相关联的捆绑件的捆绑件主机。所述服务管理器可联系服务注册表以定位捆绑件存储库服务。所述服务管理器可接着联系所述捆绑件存储库服务以识别捆绑件。所述服务管理器可选择捆绑件且可接着搜索服务注册表以识别可部署选定捆绑件的适合捆绑件主机。所述服务管理器可接着联系所述捆绑件主机且可指示捆绑件主机部署与所述服务相关联的捆绑件。
在一个实施例中,覆盖网络层320在现有网络拓扑的顶部上实施覆盖网络。覆盖网络层320可负责将业务路由穿过防火墙及/或处理基础网络拓扑中的网络地址转译 (NAT)。在一个实施例中,覆盖网络拓扑(例如,其可不同于基础网络拓扑)包含以树状结构组织的节点。覆盖网络拓扑在逻辑上连接所述节点。在其它实施例中,覆盖网络拓扑可包含不同类型的结构(例如,网状拓扑)。装置130中的每一服务主机可对应于覆盖网络中的节点且可被指派节点识别符(ID)。如上所提及,装置130可包含多个服务主机及/或多个节点。可将装置130描述为包含对应于一个节点的一个主机。所述节点可经由网络拓扑(例如路由树)来连接,且节点可经由路由树将消息发送到另一节点。在一个实施例中,节点可经由基础网络拓扑将消息发送到另一节点,而所述消息并不遍历覆盖网络拓扑。每一节点可存储用以到达其在覆盖网络(以及例如网络110等基础网络)中的相邻者的信息(例如,基础网络的地址)。覆盖网络层320可对应于节点之间的通信层且可使用多个网络拓扑来实现特定功能。举例来说,当针对特定类型的服务搜索服务注册表时,覆盖网络层320可在于服务注册表中搜索的同时遍历节点树的边缘。在一个实施例中,当将消息从第一节点发送到第二节点时,覆盖网络层320可将消息从第一节点直接发送到第二节点,而非通过沿循树的边缘。覆盖网络层320可将节点ID提供到服务层 310,且服务层310可将消息发送到特定节点ID,而不需要知晓基础网络拓扑。
在一个实施例中,装置层330在SOA系统服务总线140的初始安装期间执行装置发现。装置层330及/或覆盖网络层320还可在初始安装之后执行节点发现,及/或可重新发现曾离线且在稍后时间重新加入覆盖网络的丢失节点。在一个实施例中,覆盖网络层320管理覆盖网络的共享秘密(例如证书),所述共享秘密使得节点能够验证彼此的身份。覆盖网络层320可基于一或多个接近度度量而形成覆盖网络的拓扑(例如,路由树或网格)。然而,从第一节点到第二节点的消息不需要遍历路由树且可代替地从第一节点被直接发送到第二节点。在另一实施例中,从第一节点到第二节点的消息遍历路由树。此外,覆盖网络层320可基于多播群组而发送多播消息。此外,覆盖网络层320可为服务层310提供服务质量(QoS)保证。
尽管网络层320通常涉及“节点”,但装置层330通常涉及“装置”。装置层330 对应于装置130的下部功能性层级,包含使用基础网络拓扑(例如,网络110及/或子网络120)进行通信所需的功能性。举例来说,在一些实施方案中,装置层330可实施开放系统互连(OSI)模型的层1到6(例如,物理层、数据链路层、网络层、输送层、会话层及呈现层)。这些层的实施方案可包含路由以太网帧、路由因特网协议(IP)包、会话管理、加密及解密包、重新发射丢失的包等等。
虽然图3展示装置130的示范性功能组件,但在其它实施方案中,装置130相比图 3中所描绘的功能组件可包含更少的功能组件、不同的功能组件、不同布置的功能组件或额外功能组件。另外,装置130的组件中的任一者(或任何组件群组)可执行描述为由装置130的一或多个其它功能组件执行的功能。
图4A是图解说明服务层310的示范性功能组件的框图。如图4A中所展示,服务层310包含服务主机415。服务主机415可包含一或多个服务410-A到410-N(统称为“服务410”且个别地称为“服务410”)、一或多个客户端420-A到420-K(统称为“客户端 420”且个别地称为“客户端420”)、消息调派器430及服务注册表440。
服务410对应于与装置130的服务层310的服务主机415相关联的服务实例。在一个实施例中,服务410包含服务接口412及服务实施方案414。服务接口412可包含通信协议,例如标准化通信协议。在一个实施方案中,通信协议包含唯一名称及版本。可使用简单对象访问协议(SOAP)接口规范、JavaScript对象记法(JSON)接口规范及/或另一类型的接口规范来规定服务接口412。服务实施方案414包含服务410的实施方案。服务实施方案414处理经由服务接口412接收的请求及/或通过服务接口412对服务请求做出响应。服务接口412可将从服务实施方案414接收的响应转换成与客户端420用来与服务410交换消息的恰当协议兼容的特定格式。
在一个实施例中,客户端420通过将请求发送到服务注册表440来请求特定服务类型的服务实例。一旦识别并选择了服务实例,客户端420便可经由消息调派器430将请求发送到经识别及选择的特定服务实例。如上文所论述,客户端420也可为服务410。术语“客户端”或“客户端服务”将服务识别为正请求另一服务的服务。
消息调派器430从客户端420接收传入消息并将其引导到为传入消息的既定接收方的服务410。此外,消息调派器430可从服务接收消息并将所述消息发送到特定客户端420。如果传入消息的目的地不在与消息调派器430相同的装置130上,那么可将所述消息转发到覆盖网络层320以供转发到正确的装置130。服务410及客户端420可充当由覆盖网络层320实施的覆盖网络中的端点。因此,在一个实施例中,覆盖网络层320 可维持基于覆盖网络的路由树的路由表。所述路由表可包含特定节点ID的下一些跳跃目的地的列表。消息调派器430可识别传出ID的下一跳跃目的地且可将消息提供到覆盖网络层320以供递送。因此,在此实施例中,消息调派器430实施请求-响应消息接发机制。
服务注册表440维持经部署服务410的列表连同与所述经部署服务(例如,服务的实例)相关联的特性。下文参考图4C更详细地描述服务注册表440的示范性组件。服务410可通过给服务注册表440提供所述服务的描述(例如,包含服务的特性)而在服务注册表440中注册。由于客户端420也可为服务410,因此客户端420也可在服务注册表440 中注册。
图4B是图解说明服务注册表440的功能性的框图。如图4B中所展示,服务注册表440可从客户端420接收搜索查询。搜索查询可规定特定服务类型、特定服务类型的一或多个所请求特性、所请求命中数目及/或一或多个其它参数。服务注册表440可识别满足搜索查询的服务410。如果服务注册表440不满足所请求命中的数目,那么服务注册表440可将查询转发到覆盖网络中的另一服务注册表440(例如,邻近服务注册表440)。在一个实施例中,服务注册表440并不基于搜索查询而选择特定服务实例。而是,在此实施例中,服务注册表440将查询的结果返回到客户端420,且曾发起所述查询的客户端420可从搜索结果选择特定服务实例。在另一实施例中,服务注册表440基于搜索查询而从查询的结果选择特定服务实例。
虽然图4A及4B展示服务层310的示范性功能组件,但在其它实施方案中,服务层310相比图4A及4B中所描绘的功能组件可包含更少的功能组件、不同的功能组件、不同布置的功能组件或额外功能组件。另外,服务层310的组件中的任一者(或任何组件群组)可执行描述为由服务层310的一或多个其它功能组件执行的功能。
图4C是图解说明服务注册表440的示范性功能组件的框图。如图4C中所展示,服务注册表440可包含主机服务注册表数据库(DB)442、查询处置器444及服务注册表高速缓冲存储器446。
主机服务注册表DB 442可维持由服务主机415托管的服务410的列表及/或那些服务的特性。下文关于图4D来提供在主机服务注册表DB 442中列出的服务及所述服务的特性的实例。可通过在服务注册表440中注册的服务410来填充主机服务注册表DB 442。主机服务注册表DB 442还可暴露用于添加或移除所列出服务及读取或写入由服务主机 415托管的服务的特性的接口及/或写入服务特性。在一个实施例中,举例来说,主机服务注册表DB442可维持由不同装置130上的服务主机415托管的服务410的列表。不同装置上的服务主机415可使用所暴露接口在另一装置上的服务注册表中列出其服务。此外,主机服务注册表DB442可暴露可由其它服务注册表访问的搜索查询服务接口。因此,其它服务注册表可使用所述搜索查询服务接口来确定主机服务注册表DB 442是否包含满足特定查询的条目。在一个实施例中,在主机服务注册表DB 442中列出的服务可过期(例如,在一时间周期之后如果未被刷新则被从DB 442移除)以帮助防止DB 442 存储过时的信息。
主机服务注册表442可从服务管理器接收预订请求,可存储预订请求,且可将预订请求转发到所有邻近服务注册表。主机服务注册表442可确定是否有服务匹配所述预订请求,且可在识别出匹配服务的情况下将预订通知发送回到曾发起所述预订请求的服务管理器。此外,主机服务注册表442可确定对所存储服务的更新是否与预订相关联。如果更新与预订相关联,那么主机服务注册表442可将预订通知发送到曾发起对相关联预订的预订请求的服务管理器(或另一类型的服务)。
查询处置器444可处置从客户端420接收的查询。在一个实施例中,假定一查询,查询处置器444首先搜索本地主机服务注册表DB 442、之后搜索服务注册表高速缓冲存储器446。举例来说,如果尚未满足所述查询,那么查询处置器444可发出对其它服务注册表的调用。服务注册表高速缓冲存储器446可存储来自远程服务注册表440的数据。每一服务主机415可维持本地服务注册表440,且在服务主机415中注册的服务410被注册于本地服务注册表440中。可将来自客户端420的不能被本地服务注册表440满足的查询发送到一或多个相邻服务主机415以查看相邻服务主机415是否具有包含满足所述查询的服务的服务注册表440。远程服务注册表440可将查询的结果返回到本地服务注册表440,且可将所述结果存储在服务注册表高速缓冲存储器446中。在一些实施方案中,父节点可高速缓存其子节点的数据,而子节点可不高速缓存其父节点的数据。在一个实施例中,在服务注册表高速缓冲存储器446中列出的服务可过期(例如,在一时间周期之后如果未被刷新则被从高速缓冲存储器446移除)以帮助防止高速缓冲存储器446 存储过时的信息。
虽然图4C展示服务注册表440的示范性功能组件,但在其它实施方案中,服务注册表440相比图4C中所描绘的功能组件可包含更少的功能组件、不同的功能组件、不同布置的功能组件或额外功能组件。另外,服务注册表440的组件中的任一者(或任何组件群组)可执行描述为由服务注册表440的一或多个其它功能组件执行的功能。
图4D是可由服务注册表440存储的特定服务的示范性特性表460的框图。在一个实施例中,服务的实例(例如,每一实例)与一特性表(例如表460)相关联。主机服务注册表数据库DB 442可存储在对应服务注册表440中注册的每一服务的特性表。在一个实施例中,如上文所描述,存储于任一个服务注册表DB 442中的信息可不同于存储于其它服务注册表数据库中的信息。示范性特性表460包八个字段:ID字段462、接口字段 464、服务格式字段468、输送协议字段470、CPU排名472、磁盘空间字段474及RAM 字段476。
实例ID字段462唯一地界定特定服务的实例。实例ID(可能连同节点ID一起)可唯一地将服务实例与网络中的(相同类型或不同类型的)任何其它服务识别开。在一个实施例中,实例ID字段462为整数。在表460中,作为一实例,实例ID是6529。
接口字段464识别服务的接口的名称。在此情况中,接口字段464还可通过接口的类型来识别服务的类型。举例来说,表460将接口识别为“存储服务”。服务格式字段 468识别由服务的实例使用的格式。作为一实例,表460将服务格式识别为“JSON”。输送协议字段470识别由服务的实例使用的协议。作为一实例,表460将服务格式识别为“节点协议”。
CPU排名字段472识别与服务实例相关联的CPU的性能。在一个实施例中,使用标度(例如,1到100)。表460在CPU排名字段472中将服务的CPU排名识别为20/100。 RAM字段476识别可用于服务的随机存取存储器的量。表460在字段476中将可用RAM 识别为2GB。
虽然图4D展示特性表460的示范性组件,但在其它实施方案中,特性表460相比图4D中所描绘的组件可包含更少的组件、不同的组件、不同布置的组件或额外组件。
图5A是图解说明覆盖网络层320的功能组件的框图。如图5A中所展示,覆盖网络层320可包含节点管理器510、通信管理器520及多播管理器530。
节点管理器510可将例如节点ID等节点信息提供到覆盖网络中的其它节点。此外,节点管理器510可维持覆盖网络中的节点的列表。节点管理器510可执行节点发现以识别添加到覆盖网络的新节点及/或重新发现已重新加入覆盖网络的丢失节点。节点管理器 510还可确定网络的拓扑,如下文所描述(例如,哪些节点最接近其它节点)。
通信管理器520可使得节点能够彼此通信。通信管理器520可实施用以遍历覆盖网络的树的机制。可结合服务注册表的搜索查询或在与另一节点的直接通信方法不可用时执行树遍历。此外,通信管理器520可实施可使得覆盖网络的特定节点能够直接通信而不必遍历覆盖网络的树的直接通信方法。
多播管理器530可实施多播机制。所述多播机制可用于将消息发送到多播群组的成员(例如,所有成员)。此外,多播机制可用于实施预订-通知消息接发型式。因此,与特定服务实例相关联的事件可用于触发发送到已向所述特定服务实例预订消息的节点的消息。多播管理器530可包含应用层多播管理器或来自下部OSI层的多播管理器。
虽然图5A展示覆盖网络层320的示范性功能组件,但在其它实施方案中,覆盖网络层320相比图5A中所描绘的功能组件可包含更少的功能组件、不同的功能组件、不同布置的功能组件或额外功能组件。另外,覆盖网络层320的组件中的任一者(或任何组件群组)可执行描述为由覆盖网络层320的一或多个其它功能组件执行的功能。
图5B是覆盖网络540的示范性拓扑的框图。如图5B的实例中所展示,覆盖网络 540包含节点N1到N7。节点N1及N2处于多播群组560-1中。节点N1包含服务端点 S1及S3以及客户端端点C1。节点N3是节点N1及N2的父节点。节点N3包含服务端点S7及客户端端点C3。
节点N6及N7处于多播群组560-2中且节点N7包含客户端端点C2以及服务端点 S5及S6。节点N5是节点N6及N7的父节点且包含服务端点S9。节点N3及N5处于多播群组560-3中。节点N4是节点N3及N5的父节点且是覆盖网络540的根节点。此外,节点N4处于多播群组560-4中且包含服务端点S8。虽然网络540的拓扑中的父节点具有两个子节点,但在其它实施方案中,父节点可具有两个以上子节点。
假设每一服务端点与服务注册表440相关联,则搜索查询可如下遍历覆盖功能网络 540。假设节点N3中的服务端点S7执行搜索查询以识别服务端点S1及服务端点S5中所包含的特定服务(即,对于此,S1及S5为匹配)。服务端点S7可将搜索查询发送到其本地服务注册表,这可导致搜索查询中的不匹配。本地服务注册表可接着识别覆盖网络中的邻近服务注册表,所述邻近服务注册表可包含节点N1中的服务注册表及节点N4 中的服务注册表(节点N2可不包含服务注册表,因为不存在与节点N2相关联的服务端点)。节点N1中的服务注册表可返回识别服务端点S1的命中。节点N4中的服务注册表可不返回命中且可将搜索查询转发到其邻近服务注册表,在此情况中,所述邻近服务注册表包含节点N3及N5中的服务注册表。然而,由于节点N3中的服务注册表已处理所述搜索,因此可将搜索查询仅发送到中节点N5的服务注册表。节点N5处的服务注册表可未提供命中且可将搜索查询转发到节点N7处的服务注册表。节点N7可将服务端点S5识别为命中且可将搜索查询的结果返回到节点N4,且节点N4可将搜索结果转发到节点N3中的服务端点S7。
服务端点S7可接着选择与节点N1处的服务端点S1或节点N7处的服务端点S5通信。在一些实施方案中,服务端点S7可经由节点N4及N5向服务端点S5发送消息。在其它实施方案中,服务端点S7可通过与节点N7直接通信而向服务端点S5发送消息。
作为另一实例,服务端点S7可仅需要对搜索查询的第一匹配。节点可以将在沿着树进一步向下之处的节点优先化的优先级次序将搜索查询转发到其它节点。因此,节点N3将在将搜索查询转发到节点N4之前将搜索查询转发到节点N1及N2,因为节点N1 及N2在沿着树进一步向下之处(即,为节点N3的子代),而节点N4在沿着树进一步向上之处(即,为节点N3的父代)。由于节点N1识别对搜索查询的匹配,且服务端点S7 仅需要一个匹配,因此搜索可在搜索查询被发送到节点N4之前终止。
图6是图解说明隧道代理600的功能组件的框图。隧道代理600可经配置以基于所请求服务特性而建立及管理通信隧道。如图6中所展示,隧道代理600可包含客户端接口610、服务注册表接口620、节点选择器630、节点接口640,且可与隧道DB 650通信。
客户端接口610可与客户端420通信。客户端接口610可从客户端420接收对到具有所请求服务特性的服务的通信隧道的请求且可将已接收到所述请求的应答发送到客户端420。此外,客户端接口610可针对通信隧道的第一端来配置客户端420。举例来说,客户端接口610可将托管客户端420的节点(例如,装置130)配置为接收及/或发送用与通信隧道相关联的隧道标头封装的包或其它类型的数据单元。
服务注册表接口620可与服务注册表440通信。举例来说,服务注册表接口620可基于由客户端接口610接收的请求而产生搜索查询且可将所述搜索查询发送到服务注册表440。此外,服务注册表接口620可将接收与搜索查询有关的更新的预订请求发送到服务注册表440。服务注册表接口620可从服务注册表440接收搜索结果且可将所述搜索结果提供到节点选择器630。
节点选择器630可选择特定节点及由所述节点托管的特定服务实例来作为通信隧道的第二端。节点选择器630可基于由服务注册表接口620获得的搜索结果而选择所述特定节点及/或服务实例。举例来说,节点选择器630可对搜索结果进行排名且可选择最佳匹配所请求服务特性的节点及/或服务实例。另外或替代地,节点选择器630可基于额外准则而选择节点。举例来说,节点选择器630可确定所接收搜索结果中的节点的一或多个连接度量。连接度量可对应于客户端420与所接收搜索结果中的每一特定节点之间的连接质量的量度。连接度量可包含:总可用带宽;百分比带宽容量;最高、最低或平均位速率;最高可用服务质量(QoS);客户端及特定节点是否处于相同域中;客户端与特定节点之间是否需要网络地址转译(NAT);客户端与特定节点之间是否存在防火墙;及/ 或基于其它类型的连接度量。
节点接口640可与系统中的特定节点通信。举例来说,节点接口640可针对通信隧道的第二端来配置节点(例如,装置130)。举例来说,节点接口640可将所述节点配置为接收及/或发送用与通信隧道相关联的隧道标头封装的包或其它类型的数据单元。
隧道DB 650可存储与由隧道代理600管理的通信隧道有关的信息。下文参考图7B来描述可存储于隧道DB 650中的示范性信息。
虽然图6展示隧道代理600的示范性功能组件,但在其它实施方案中,隧道代理600相比图6中所描绘的功能组件可包含更少的功能组件、不同的功能组件、不同布置的功能组件或额外功能组件。另外,隧道代理600的组件中的任一者(或任何组件群组)可执行描述为由隧道代理600的一或多个其它功能组件执行的功能。
图7A是图解说明可存储于服务注册表440中的组件的框图。如图7A中所展示,服务注册表440可包含一或多个服务条目701。每一服务条目701可存储与由和服务注册表440相关联的服务主机托管的特定服务有关的信息。服务条目701可包含服务字段 710、节点字段712、特性字段714、部署字段716及预订字段718。
服务字段710可识别与服务条目相关联的特定服务。举例来说,服务字段710可识别与特定服务相关联的服务接口。节点字段712可识别与特定服务相关联的特定节点(例如,装置130)。在一些实施方案中,第一节点可维持用于第二节点的服务注册表且可在所述服务注册表中识别与第二节点相关联的服务。特性字段714可存储识别与特定服务相关联的特性的信息。举例来说,特性字段714可包含识别以下各项的信息:与服务相关联的位置、与服务相关联的操作系统、与服务相关联的处理负载、与服务相关联的带宽容量、与服务相关联的存储器容量、与服务相关联的存储容量、与服务相关联的子网络及/或网络域、与服务相关联的安全等级、与服务相关联的编解码器类型,及/或另一类型的特性。
部署字段716可包含识别是否部署服务或服务是否可用于部署的信息。预订字段718 可包含识别与服务相关联的预订的信息。服务可与一或多个预订相关联。举例来说,预订信息可识别已预订关于对服务的改变的通知的特定隧道代理600(例如,基于节点ID)。因此,如果服务经部署、变得不可用,如果服务的特性改变及/或如果检测到另一类型的改变,那么可向隧道代理600发送通知。
虽然图7A展示服务注册表440的示范性组件,但在其它实施方案中,服务注册表440相比图7A中所描绘的组件可包含更少的组件、不同的组件、不同布置的组件或额外组件。
图7B是图解说明可存储于隧道DB 660中的组件的框图。隧道DB 650可存储一或多个隧道记录751。每一隧道记录751可存储与由隧道代理600管理的特定通信隧道有关的信息。隧道记录751可包含隧道ID字段760、服务特性字段762、客户端字段764 及一或多个节点字段770。
隧道ID字段760可存储唯一地识别特定通信隧道的识别符。此外,隧道ID字段760可存储与特定通信隧道相关联的隧道标头信息(例如,路由标签)。服务特性字段762可存储识别例如以下各项的一或多个所请求服务特性的信息:特定服务接口、特定操作系统、特定处理容量、特定存储容量、特定带宽及/或位速率、特定位置、特定编解码器、特定网络域、特定安全等级及/或另一类型的服务特性。
客户端字段764可存储与曾做出对通信隧道的请求的客户端420有关的信息。举例来说,客户端ID字段764可存储与覆盖网络中的客户端420相关联的节点ID。此外,客户端ID字段764可存储与基础网络(例如,网络110、子网络120等)中的客户端420 相关联的网络地址。
每一节点字段760可存储与系统中已被识别为托管匹配隧道记录751的服务特性字段762中所规定的要求的服务的特定节点有关的信息。节点字段760可包含节点ID字段772、特性字段774及状态字段776。
节点ID字段772可存储识别特定节点的信息。举例来说,节点ID字段764可存储与覆盖网络中的特定节点相关联的节点ID。此外,节点ID字段764可存储与基础网络(例如,网络110、子网络120等)中的特定节点相关联的网络地址。
特性字段774可存储与由特定节点托管的匹配与通信隧道相关联的请求的服务实例的特性有关的信息。举例来说,特性字段774可包含识别服务实例的信息、识别服务实例的服务接口的信息及/或与服务实例相关联的一或多个特性。可以特定间隔来更新特性字段774中的信息。举例来说,隧道代理600可基于由隧道代理600提交到服务注册表 440的预订请求而以特定间隔从服务注册表440接收更新。
状态字段776可包含与特定节点相关联的状态信息。举例来说,所述状态信息可包含:特定节点的搜索结果排名、是否针对特定节点建立通信隧道的第二端、与从客户端到特定节点的连接相关联的一或多个连接度量及/或与特定节点相关联的其它类型的状态信息。
虽然图7B展示能力DB 640的示范性组件,但在其它实施方案中,能力DB 640相比图7B中所描绘的组件可包含更少的组件、不同的组件、不同布置的组件或额外组件。
图8是根据本文中所描述的实施方案用于设置及管理通信隧道的过程的流程图。在一个实施方案中,图8的过程可由装置130中的隧道代理600执行。在其它实施方案中,图8的过程的一些或全部可由另一装置或与隧道代理600分离及/或包含隧道代理600 的装置的群组执行。
图8的过程可包含从客户端接收对具有所请求服务特性的服务的请求(框810)。举例来说,装置130可包含充当请求具有特定服务特性的服务的客户端的服务。客户端420 可首先联系服务注册表440以请求最近隧道代理的位置。服务注册表440可将识别隧道代理600的节点ID返回到客户端420。客户端420可随后将建立到具有所请求服务特性的服务的通信隧道的请求发送到隧道代理600。所请求服务特性可包含以下各项中的一或多者:特定服务接口、特定操作系统、特定处理容量、特定存储容量、特定带宽及/ 或位速率、特定位置、特定编解码器、特定网络域、特定安全等级及/或另一类型的服务特性。
可将搜索查询发送到服务注册表(框820),且可从服务注册表接收搜索结果(框830)。举例来说,隧道代理600可从客户端420接收请求,可基于所请求服务特性而产生搜索查询且可将所产生搜索查询发送到最近服务注册表440。服务注册表440可评估搜索查询且可返回包含系统中匹配所请求服务特性的一或多个节点的列表的搜索结果。如果服务注册表440返回空列表,从而指示具有所请求特性的服务在系统中是不可用的,那么隧道代理600可产生提醒且可将所述提醒发送到客户端420及/或管理装置150。
在一些实施方案中,服务注册表440可返回最紧密匹配要求的节点及/或服务实例的列表,即使无任何节点及/或服务实例满足所有要求。在此类情形中,隧道代理600可选择最佳匹配与所请求服务特性相关联的要求的节点及/或服务实例。
在一些实施方案中,客户端可请求一对多通信隧道。举例来说,客户端可请求到具有所请求特性的特定数目个服务实例的通信隧道。作为一实例,视频监视服务客户端可请求到来自特定位置处的摄像机的五个不同视频流的通信隧道。在此类实施方案中,隧道代理600可请求针对搜索查询的特定数目个搜索结果。
可基于所接收搜索结果而选择托管具有所请求服务特性的第一服务实例的第一节点(框840)。举例来说,隧道代理600可选择最佳匹配所请求服务特性的节点及/或由所述节点托管的服务实例。在一些实施方案中,隧道代理600可基于额外准则而选择第一节点。举例来说,隧道代理600可基于和搜索结果中的每一特定节点与客户端装置之间的连接相关联的一或多个连接度量而选择第一节点。连接度量的实例包含:连接的总可用带宽;连接的百分比带宽容量;连接的最高、最低或平均位速率;连接的最高可用服务质量(QoS);客户端及特定节点是否处于相同域中;客户端与特定节点之间是否需要网络地址转译(NAT);客户端与特定节点之间是否存在防火墙;及/或基于其它类型的连接度量。
在其中客户端请求一对多通信隧道的情形中,隧道代理600可选择用于通信隧道的多个第二端的多个节点且可针对每一选定节点个别地设置通信隧道的第二端。
可建立具有在客户端装置处的第一端及在选定第一节点处的第二端的通信隧道(框 850)。举例来说,隧道代理600可使用TSP或另一协议在客户端420与选定第一节点之间设置通信隧道。举例来说,隧道代理600可产生一或多个隧道标头及/或标签,可将托管客户端420的装置130配置为用所产生隧道标头及/或标签封装包或其它类型的数据单元,且可将选定第一节点配置为用所产生隧道标头及/或标签封装包或其它类型的数据单元。通信隧道可包含多协议标签交换(MPLS)隧道、通用路由封装(GRE)隧道、因特网协议(IP)安全(IPSec)隧道、虚拟局域网(VLAN)隧道、虚拟私有网络(VPN)隧道及/或另一类型的通信隧道。
可做出应更新通信隧道的确定(框860)。作为一实例,隧道代理600可以特定间隔将搜索查询重新发送到服务注册表440且可从服务注册表440接收经更新搜索结果。经更新搜索结果可指示第一节点为不可用的,第一节点不再托管服务(例如,服务实例不再被部署),所托管服务的特性不再匹配所请求服务特性的要求及/或另一系统节点托管更佳匹配所请求服务特性的要求的服务实例。
作为另一实例,隧道代理600可在不重新发送搜索查询的情况下从服务注册表440接收更新。举例来说,隧道代理600可设置对匹配搜索查询的服务的改变的预订,且服务注册表440可将周期性更新发送到隧道代理600。作为又一实例,隧道代理600可从客户端420接收表示第一节点无法经由所建立通信隧道到达的消息,或可从第一节点接收表示第一节点不再托管所请求服务的消息。
可将搜索查询重新发送到服务注册表(框870),且可从服务注册表接收经更新搜索结果(框880)。在其中基于从服务注册表440接收的更新而未做出对更新通信隧道的确定的情形中,隧道代理600可将搜索查询重新发送到服务注册表440且可从服务注册表 440接收经更新搜索结果。
可基于经更新搜索结果而选择托管具有所请求服务特性的第二服务实例的第二节点(框890)。举例来说,隧道代理600可基于经更新搜索结果及/或基于额外准则(例如经更新搜索结果中所包含的节点的所确定连接度量)而选择最佳匹配所请求服务特性的第二节点及/或由第二节点托管的服务实例。
可将通信隧道的第二端从第一节点移动到第二节点(框895)。举例来说,隧道代理600可使用TSP或另一协议来结束客户端420与第一节点之间的通信隧道且在客户端 420与选定第二节点之间设置通信隧道。举例来说,隧道代理600可将第一节点配置为停止用与通信隧道相关联的所产生隧道标头及/或标签封装包或其它类型的数据单元,且可将选定第二节点配置为用所产生隧道标头及/或标签封装包或其它类型的数据单元。每当隧道代理600确定应更新通信隧道时,便可重复框870、880、890及895。
图9A到9C是根据本文中所描述的实施方案设置及管理通信隧道的示范性情景的图。图9A图解说明包含节点N1、N2、N3、N4及N5的覆盖网络910。节点N3包含对应于视频监视服务客户端910的服务S3。节点N4包含对应于隧道代理服务920的服务 S4。节点N1包含对应于摄像机服务930的服务实例S1A及对应于摄像机服务940的服务实例S1B。节点N2包含对应于摄像机服务950的服务实例S2,且节点N5包含对应于摄像机服务960的服务实例S5。
视频监视服务客户端910可需要以特定分辨率且以特定位速率从特定位置提供视频流的摄像机服务。因此,视频监视服务客户端910可将对通信隧道的请求发送到节点 N4处的隧道代理920且可在所述请求中规定所需服务特性。隧道代理920可基于所述请求而产生搜索查询且可将所述搜索查询提交到节点N4处的服务注册表。节点N4处的服务注册表可将搜索查询转发到其它节点处的服务注册表,且其它节点可继续转发搜索查询直到获得所需数目个搜索结果为止或直到所有服务注册表均已处理所述搜索查询为止。
假设摄像机服务930、940及950满足位置及分辨率要求,但无任何可用摄像机服务完全满足位速率要求。此外,假设隧道代理920确定从节点N3到节点N1的连接在质量上比从节点N3到节点N2的连接高。因此,隧道代理服务920可选择节点N1。此外,假设摄像机服务930具有比摄像机服务940高的位速率且因此隧道代理服务920选择摄像机服务930。隧道代理服务920可接着在视频监视服务客户端910与摄像机服务 930之间建立隧道970。视频监视服务客户端910现在可经由隧道970从摄像机服务930 接收流式视频信号。
继续到图9B,假设与摄像机服务940相关联的位速率由于摄像机服务940而改进,从而空出处理资源。节点N1的服务注册表可包含来自隧道代理920的对接收与摄像机服务930及摄像机服务940相关联的服务特性的更新的预订。因此,节点N1的服务注册表可将预订更新发送到隧道代理920。隧道代理920可确定摄像机服务940现在是对通信隧道的更佳匹配且可将通信隧道970的第二端切换为摄像机服务940以建立通信隧道980。
继续到图9C,假设节点N1经历节点故障990。视频监视服务客户端910可停止从摄像机服务940接收视频流且可将指示节点N1已变得不可用的消息发送到隧道代理服务920。作为响应,隧道代理服务920可基于与基于由视频监视服务客户端910产生的通信隧道请求的搜索查询相关联的最近搜索结果来选择下一最佳可用服务。隧道代理服务920可选择节点N2处的摄像机服务950且可将隧道的第二端从节点N1移动到节点 N2处的摄像机服务950以产生隧道995。因此,视频监视服务客户端910可继续以最佳可用位速率及分辨率从所规定位置接收视频流。
在前述说明书中,已参考附图描述了各种优选实施例。然而,将显而易见,可对本发明做出各种修改及改变且可实施额外实施例,此并不背离如所附权利要求书中所陈述的本发明的较宽广范围。因此,应将本说明书及图式视为具有说明性意义而非限制性意义。
举例来说,尽管已关于图8描述了若干系列的框且已关于图9A到9C描述了信号流的次序,但在其它实施方案中可修改所述框及/或信号流的次序。此外,可并行地执行非相依框及/或信号流。
将明了,在图中所图解说明的实施方案中,可以许多不同形式的软件、固件及硬件来实施如上文所描述的系统及/或方法。用于实施这些系统及方法的实际软件代码或专门化控制硬件并不限于所述实施例。因此,在不参考特定软件代码的情况下来描述所述系统及方法的操作及行为--应理解,软件及控制硬件可经设计以基于本文中的描述而实施所述系统及方法。
此外,可将上文所描述的某些部分描述为执行一或多个功能的组件。如本文中所使用,组件可包含硬件(例如处理器、ASIC或FPGA)或硬件与软件的组合(例如,执行软件的处理器)。如本文中所使用的词语“示范性”意指“作为图解实例”。
应强调,当在本说明书中使用时术语“包括(comprise/comprising)”应理解为规定所陈述特征、整数、步骤或组件的存在,但并不排除一或多个其它特征、整数、步骤、组件或其群组的存在或添加。
如本文中所使用,术语“逻辑”可指代经配置以执行存储于一或多个存储器装置中的指令的一或多个处理器的组合,可指代硬连线电路,及/或可指代其组合。此外,逻辑可包含于单个装置中或可跨越多个及可能远程装置分布。
出于描述及定义本发明的目的,另外应注意,术语“实质上”在本文中用于表示可归属于任何定量比较、值、测量值或其它表示的固有不确定性程度。术语“实质上”也在本文中用于表示定量表示在不会导致所讨论标的物的基本功能的改变的情况下可与所陈述参考相差的程度。
本申请案中所使用的元件、动作及指令不应理解为对所述实施例至关重要或必不可少,除非明确如此描述。而且,如本文中所使用,冠词“一”打算包含一或多个项目。此外,短语“基于”打算意指“至少部分地基于”,除非另有明确陈述。
Claims (11)
1.一种由计算机装置(920)执行的方法,其包括:
由所述计算机装置(920)从客户端装置(910)接收对系统中的服务的请求,所述服务具有所请求服务特性;
由所述计算机装置基于从服务注册表接收的搜索结果,选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点(930);
由所述计算机装置(920)在所述客户端装置(910)与所述第一节点(930)之间建立通信隧道(970),其中所述通信隧道(970)包含在所述客户端装置(910)处的第一端及在所述第一节点(930)处的第二端,其中建立所述通信隧道(970)包含:
产生隧道标签;
将所述客户端装置(910)配置为用所述隧道标签封装数据单元;以及
将所述第一节点(930)配置为用所述隧道标签封装数据单元;
由所述计算机装置(920)基于从所述服务注册表接收的经更新的搜索结果,确定应更新所述通信隧道(970);
由所述计算机装置(920)基于确定应更新所述通信隧道,且基于所述经更新的搜索结果,选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点(940);以及
响应于选择所述第二节点(940),由所述计算机装置(920)相对于所述客户端装置(910)透明地将所述通信隧道(970)的所述第二端从所述第一节点(930)移动到所述第二节点(940),其中,将所述通信隧道(970)的所述第二端从所述第一节点(930)移动到所述第二节点(940)包括:
将所选择的第一节点(930)配置为停止用所产生的隧道标签封装数据单元;以及
将所选择的第二节点(940)配置为用所产生的隧道标签封装数据单元。
2.根据权利要求1所述的方法,其进一步包括:
将规定所述所请求服务特性的搜索查询发送到所述服务注册表(440),其中所述服务注册表包含在所述系统的一或多个节点(130)中可用的服务的列表;
从所述服务注册表(440)接收搜索结果,其中所述搜索结果包含具有所述所请求服务特性的一或多个节点(130)的列表;且
其中选择所述系统中托管具有所述所请求服务特性的所述第一服务实例的所述第一节点(930)包含从具有所述所请求服务特性的一或多个节点(130)的所述列表选择所述第一节点(930)。
3.根据权利要求2所述的方法,其中确定应更新所述通信隧道(970)包含:
以特定间隔将所述搜索查询重新发送到所述服务注册表(440);以及
从所述服务注册表(440)接收所述经更新的搜索结果,其中所述经更新的搜索结果包含所述第一节点(930)不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。
4.根据权利要求1所述的方法,其中确定应更新所述通信隧道(970)包含以下操作:
从所述服务注册表(440)接收所述第一节点(930)不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。
5.根据权利要求1所述的方法,其中确定应更新所述通信隧道(970)包含:
确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配;且
其中选择所述系统中托管具有所述所请求服务特性的所述第二服务实例的所述第二节点(940)是基于确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配。
6.根据权利要求2所述的方法,其进一步包括:
确定从所述客户端装置(910)到具有所述所请求服务特性的一或多个节点的所述列表中所包含的所述节点中的所述一或多个节点的连接的一或多个网络连接度量;且
其中从具有所述所请求服务特性的一或多个节点的所述列表选择所述第一节点(930)是进一步基于所确定的一或多个网络连接度量。
7.一种计算机装置,其包括:
存储指令的存储器;以及
处理器,其经配置以执行所述指令以实施隧道代理(600),所述隧道代理(600)经配置以:
从客户端装置(910)接收对系统中的服务的请求,所述服务具有所请求服务特性;
基于从服务注册表接收的搜索结果选择所述系统中托管具有所述所请求服务特性的第一服务实例的第一节点(930);
在所述客户端装置(910)与所述第一节点(930)之间建立通信隧道(970),其中所述通信隧道(970)包含在所述客户端装置(910)处的第一端及在所述第一节点(930)处的第二端,其中当建立所述通信隧道(970)时,所述逻辑进一步经配置以:
产生隧道标签;
将所述客户端装置(910)配置为用所述隧道标签封装数据单元;以及
将所述第一节点(930)配置为用所述隧道标签封装数据单元;
基于从所述服务注册表接收的经更新的搜索结果,确定应更新所述通信隧道(970);
基于确定应更新所述通信隧道,且基于所述经更新的搜索结果,选择所述系统中托管具有所述所请求服务特性的第二服务实例的第二节点(940);以及
相对于所述客户端装置(910)透明地将所述通信隧道(970)的所述第二端从所述第一节点(930)移动到所述第二节点(940),其中,当将所述通信隧道(970)的所述第二端从所述第一节点(930)移动到所述第二节点(940)的时候,所述逻辑进一步经配置以:
将所选择的第一节点(930)配置为停止用所产生的隧道标签封装数据单元;以及
将所选择的第二节点(940)配置为用所产生的隧道标签封装数据单元。
8.根据权利要求7所述的计算机装置,其中所述隧道代理(600)进一步经配置以:
将规定所述所请求服务特性的搜索查询发送到所述服务注册表,其中所述服务注册表包含在所述系统的一或多个节点中可用的服务的列表;
从所述服务注册表接收所述搜索结果,其中所述搜索结果包含具有所述所请求服务特性的一或多个节点的列表;且
其中当选择所述系统中托管具有所述所请求服务特性的所述第一服务实例的所述第一节点(930)时,所述隧道代理(600)进一步经配置以:
从具有所述所请求服务特性的一或多个节点的所述列表选择所述第一节点(930)。
9.根据权利要求8所述的计算机装置,其中当确定应更新所述通信隧道(970)时,所述隧道代理(600)进一步经配置以:
以特定间隔将所述搜索查询重新发送到所述服务注册表;以及
从所述服务注册表接收所述经更新的搜索结果,其中所述经更新的搜索结果包含所述第一节点(930)不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。
10.根据权利要求7所述的计算机装置,其中当确定应更新所述通信隧道(970)时,所述隧道代理(600)进一步经配置以进行以下操作:
从所述服务注册表接收所述第一节点(930)不再托管具有所述所请求服务特性的所述第一服务实例或所述第一服务实例不再具有所述所请求服务特性的指示。
11.根据权利要求7所述的计算机装置,其中当确定应更新所述通信隧道(970)时,所述隧道代理(600)进一步经配置以:
确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配;且
其中所述隧道代理(600)经配置以基于确定所述系统中的另一节点是对所述所请求服务特性的更佳匹配而选择所述系统中托管具有所述所请求服务特性的所述第二服务实例的所述第二节点(940)。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/218,601 US9860325B2 (en) | 2014-03-18 | 2014-03-18 | Tunnel broker in a service oriented architecture |
US14/218,601 | 2014-03-18 | ||
EP141615039 | 2014-03-25 | ||
EP14161503.9A EP2922275B1 (en) | 2014-03-18 | 2014-03-25 | Tunnel broker in a service oriented architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104935488A CN104935488A (zh) | 2015-09-23 |
CN104935488B true CN104935488B (zh) | 2018-07-13 |
Family
ID=50389259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510114470.5A Active CN104935488B (zh) | 2014-03-18 | 2015-03-16 | 面向服务的架构中的隧道代理及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9860325B2 (zh) |
EP (1) | EP2922275B1 (zh) |
CN (1) | CN104935488B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
WO2015078497A1 (en) * | 2013-11-27 | 2015-06-04 | Huawei Technologies Co., Ltd. | Method and controller for clustering applications in a software-defined network |
US20160135107A1 (en) * | 2014-11-06 | 2016-05-12 | Qualcomm Incorporated | Migration of local anchors in a wireless mesh network |
WO2016164899A1 (en) * | 2015-04-09 | 2016-10-13 | Convida Wireless, Llc | Registration management in the service layer |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US9887936B2 (en) * | 2015-08-03 | 2018-02-06 | Cisco Technology, Inc. | Application identification and overlay provisioning as a service |
CN105553809B (zh) * | 2015-12-08 | 2019-02-15 | 浙江宇视科技有限公司 | 一种stun隧道管理方法及装置 |
US10469390B2 (en) * | 2016-03-23 | 2019-11-05 | International Business Machines Corporation | Load balancing with software defined network controllers |
CN107370675B (zh) * | 2016-05-13 | 2021-02-23 | 华为技术有限公司 | 路由散播的方法和节点 |
CN107818122A (zh) * | 2016-09-14 | 2018-03-20 | 深圳市优朋普乐传媒发展有限公司 | 一种代理组件、搜索管理方法及搜索管理系统 |
US10700865B1 (en) * | 2016-10-21 | 2020-06-30 | Sequitur Labs Inc. | System and method for granting secure access to computing services hidden in trusted computing environments to an unsecure requestor |
CN106878138B (zh) * | 2017-01-18 | 2019-10-11 | 新华三技术有限公司 | 一种报文传输方法和装置 |
EP3767494B1 (en) | 2017-08-28 | 2023-02-15 | Bright Data Ltd. | Method for improving content fetching by selecting tunnel devices |
US11190374B2 (en) | 2017-08-28 | 2021-11-30 | Bright Data Ltd. | System and method for improving content fetching by selecting tunnel devices |
CN107733726B (zh) * | 2017-11-29 | 2021-07-06 | 新华三云计算技术有限公司 | 一种服务请求的处理方法及装置 |
US10951518B2 (en) * | 2018-12-31 | 2021-03-16 | Schweitzer Engineering Laboratories, Inc. | Packet routing architecture using a registry |
US11411922B2 (en) | 2019-04-02 | 2022-08-09 | Bright Data Ltd. | System and method for managing non-direct URL fetching service |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102083102A (zh) * | 2011-01-26 | 2011-06-01 | 北京交通大学 | 实现移动接入网关可靠性的保障方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001089232A2 (de) * | 2000-05-16 | 2001-11-22 | Siemens Aktiengesellschaft | Verfahren zum umlegen eines tunnels zwischen knoten eines gprs-systems |
US7421489B2 (en) | 2000-12-29 | 2008-09-02 | Nortel Network Limited | Network protocols for distributing functions within a network |
US7779086B1 (en) | 2004-05-04 | 2010-08-17 | Oracle America, Inc. | Methods and apparatus for performing a remote procedure call |
US8868779B2 (en) * | 2004-06-15 | 2014-10-21 | Accenture Global Services Limited | Method and apparatus to accomplish peer-to-peer application data routing between service consumers and service providers within a service oriented architecture |
US8271998B2 (en) * | 2007-04-27 | 2012-09-18 | International Business Machines Corporation | Dynamic discovery and definition of mappings of parameters used by service oriented architecture services at runtime |
US8650618B2 (en) * | 2009-07-22 | 2014-02-11 | Cisco Technology, Inc. | Integrating service insertion architecture and virtual private network |
CN103220735A (zh) | 2012-01-18 | 2013-07-24 | 北京三星通信技术研究有限公司 | 一种rn移动后的用户平面建立方法 |
US9699135B2 (en) * | 2012-06-20 | 2017-07-04 | Openvpn Technologies, Inc. | Private tunnel network |
US9110844B2 (en) * | 2012-08-27 | 2015-08-18 | Microsoft Technology Licensing, Llc | State maintenance as a service |
-
2014
- 2014-03-18 US US14/218,601 patent/US9860325B2/en active Active
- 2014-03-25 EP EP14161503.9A patent/EP2922275B1/en active Active
-
2015
- 2015-03-16 CN CN201510114470.5A patent/CN104935488B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102083102A (zh) * | 2011-01-26 | 2011-06-01 | 北京交通大学 | 实现移动接入网关可靠性的保障方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150271270A1 (en) | 2015-09-24 |
CN104935488A (zh) | 2015-09-23 |
EP2922275B1 (en) | 2016-03-23 |
US9860325B2 (en) | 2018-01-02 |
EP2922275A1 (en) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104935488B (zh) | 面向服务的架构中的隧道代理及其方法 | |
CN104935454B (zh) | 用于管理网络中可用的服务的能力的方法和系统 | |
CN104935625B (zh) | 在面向服务的架构(soa)网络中发现服务的方法及系统 | |
US10673747B2 (en) | Device deployment and network management using a self-service portal | |
EP3881495A1 (en) | Algorithmic problem identification and resolution in fabric networks by software defined operations, administration, and maintenance | |
US20140355441A1 (en) | Method and apparatus of delivering assured services over unreliable internet infrastructure by using virtual overlay network architecture over a public cloud backbone | |
CN103795768B (zh) | 远程访问的方法及设备 | |
CN108370379A (zh) | 带有隧道的设备管理 | |
KR101701158B1 (ko) | 홈 네트워크의 장치에 대한 원격 접속 제공 방법 및 시스템 | |
CN102546267A (zh) | 网络设备的自动配置方法和管理服务器 | |
CN107113892A (zh) | 一种网关设备自动组网的方法及装置 | |
CA3148051A1 (en) | Peer discovery process for disconnected nodes in a software defined network | |
CN105612773B (zh) | 为启用快速漫游而进行零配置配置文件传输 | |
CN108390774A (zh) | 一种基于软件定义的广域网组网方法和系统 | |
CN106936935B (zh) | 一种远程控制方法及装置 | |
US11201921B2 (en) | Virtual devices in internet of things (IoT) nodes | |
CN105516121B (zh) | 无线局域网中ac与ap通信的方法及系统 | |
US11509622B2 (en) | Facilitating communication between resources in different network environments | |
CN111181903B (zh) | 信息获取方法和装置、存储介质及电子装置 | |
CN106559271B (zh) | 一种资源接入方法及系统 | |
US10135695B1 (en) | System and method for managing a remote device | |
US11212177B2 (en) | Hosted physical layer management or automated infrastructure management system having software only configuration and/or local hardware appliance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |