CN107667517B - 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 - Google Patents
用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 Download PDFInfo
- Publication number
- CN107667517B CN107667517B CN201680032286.9A CN201680032286A CN107667517B CN 107667517 B CN107667517 B CN 107667517B CN 201680032286 A CN201680032286 A CN 201680032286A CN 107667517 B CN107667517 B CN 107667517B
- Authority
- CN
- China
- Prior art keywords
- microservice
- software container
- agent
- implanted
- container
- 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
Images
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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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/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/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- 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/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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
- H04L67/563—Data redirection of data network streams
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
呈现了一种由包括被植入代理器的第一软件容器所执行的方法,其中被植入代理器配置成运行在所述第一软件容器中。该方法包括由被植入代理器所执行的下列步骤:解析第一软件容器的因特网协议IP地址和端口;以及在第一分布式哈希表中注册微服务身份、第一软件容器的IP地址和端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在第二软件容器中的反向代理。
Description
技术领域
本发明涉及用于使用被植入代理器以能够实现反向代理的方法、数据处理系统、计算机程序和计算机程序产品。
背景技术
在工具和云平台方面存在持续发展,以使得更易于开发新应用和服务,同时还降低与在线托管关联的运营成本。服务的示例能够是基于web的视频会议或者在线合作工具。另一个示例能够是多媒体TV服务或者实际上是能够被容器化的任何应用。
为了以成本高效的方式来提供服务,重要的是开发成本、资本支出(Capex)和托管服务的成本、运营支出(Opex)被保持为尽可能低。因此,需要自动管理应用组件,诸如微服务。
微服务近来已成为构建现代Web服务的流行架构。通过将复杂单片应用分解为小的独立服务,这变得有可能开发更加可缩放并且对差错更有弹性的应用。例如,如果某个微服务出现故障,则它不影响整个应用(假定微服务在多个实例上被重复)。但是,如果将是单片服务的组成部分出现故障,则整个服务将必须重启。另外,缩放单片服务的唯一方式是通过添加它的更多实例来复制整个单片。另一方面,在微服务架构中,只有需要被缩放的微服务才需要被重复。
对于一些应用,动态启动和停止微服务并且仅将它们运行持续有限时间量能够是有意义的。例如,在视频会议应用中,对每个新通信会话或会议室启动新视频混合器微服务能够是有意义的。因此,在按需部署新视频混合器时视频会议应用变得易于横向缩放。另外,如果视频混合器崩溃,则故障被隔离到单个会话,且不影响整个应用的稳定性。
反向代理服务器是微服务架构中的重要组件。简言之,反向代理是一种服务器组件,其接收来自客户端(例如Web浏览器客户端)的请求并建立到服务器的新连接,并且然后向客户端再发送服务器应答,使得应答看来像是其源自代理服务器而不是服务器。
反向代理服务器常用于实现负荷平衡、高速缓存和管理软件升级。它还能够用来提供对运行于内部网络上的内部组件的外部访问。通常,在许多云环境中,服务器组件,诸如微服务,仅被指派私有IP地址,并且动态地被指派从因特网不可访问的TCP/UDP端口。在这种情况下,反向代理能够用来将外部业务重定向到特定微服务。这要求灵活和可缩放配置框架来动态配置微服务和代理服务器,特别是如果微服务是瞬态的并且频繁地被启动和停止的话,或者如果存在部署的大量微服务的话。
软件容器是用于构建有效微服务架构的另一个重要组件。容器使微服务能够是沙箱式的,并且甚至是在同一主机上也与其他微服务独立地运行。与虚拟机形成对照,容器是更轻量的,并且能够即刻启动(类似于标准Unix进程)。软件容器的另一个优点在于,它们提供可靠的执行环境,其允许开发人员在将微服务上传到数据中心之前在本地开发计算机上开发和测试微服务,同时仍然确信容器与在本地运行它们时类似地表现。
过去数十年来,已经进行了与配置管理相关的大量工作。动态地重新配置运行于多个节点上的服务器或服务(例如web服务或者微服务)的一种方法是提供全局注册表服务,并且当修改注册表中的配置设置时使用运行于远程服务器上的使用客户端来重新配置服务器。Etcd是专门设计用于配置管理和协调配置操作的分布式数据库的一示例。在Etcd中,客户端能够当修改配置设置时使用悬挂的HTTP请求来获得通知,并且然后执行诸如重新配置和重启底层服务器进程之类的动作。这与提供API (应用编程接口)的Netflix的Eureka相似,API能够由诸如微服务的组件用来向Eureka注册表服务进行注册,并且然后接收重新配置事件。
已开发了若干框架以简化服务器进程的重新配置。Confd是使用在数据库后端(诸如Zookeeper或Etcd)中存储的数据来用于使本地配置文件保持为最新的轻量配置管理工具。它允许开发人员表达模板,以便易于修改配置文件和重启服务器进程。
还已经进行了提供云环境中的自动配置管理的工作。例如,Bamboo是专门设计用于Mesos/Marathon平台和HAProxy(其是反向代理服务器)的自动配置和服务发现框架。它允许开发人员或操作人员使用与Confd类似的模板语言来表达ACL (访问控制列表)规则。Bamboo服务器则监视底层平台,以及当它接收到来自Marathon的事件时,它相应地重新配置并重启HAProxy服务器至指定的模板。由于模板被存储在Apache Zookeeper中,所以Bamboo能够在一个操作中同步和同时重新配置多个HAProxy服务器。
发明内容
目的是提供一种在其中能够无需中央控制的情况下来配置反向代理的解决方案。
根据第一方面,呈现一种由包括被植入代理器的第一软件容器所执行的方法,其中被植入代理器配置成运行在所述第一软件容器中。所述方法包括由所述被植入代理器执行的下列步骤:解析所述第一软件容器的因特网协议IP地址和端口;以及在第一分布式哈希表(hash table)中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理。
所述注册步骤可还包括注册与所述微服务身份关联的生存时间值。
所述注册步骤可以按照小于所述生存时间值的间隔有规律地被重复。
所述方法还可包括如下步骤:部署用于配置反向代理服务器的第二软件容器;以及部署所述第一软件容器的更多实例。
部署所述第二软件容器和部署所述第一软件容器的更多实例的所述步骤可在所述第一软件容器过载时被执行。
根据第二方面,呈现了一种数据处理系统,包括:第一软件容器,所述第一软件容器包括被植入代理器,所述代理器与处理器关联;以及存储器。所述存储器存储有指令,所述指令在由所述处理器执行时使所述代理器执行如下步骤:解析所述第一软件容器的因特网协议IP地址和端口;以及在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理。
所述注册指令可包括在由所述处理器执行时使所述代理器还注册与所述微服务身份关联的生存时间值的指令。
所述注册指令可以按照小于所述生存时间值的间隔有规律地被重复。
所述数据处理系统还可包括在由所述处理器执行时使所述代理器执行如下步骤的指令:部署用于配置反向代理服务器的第二软件容器;以及部署所述第一软件容器的更多实例。
所述数据处理还可包括在由所述处理器执行时使所述代理器在所述第一软件容器过载时执行如下步骤的指令:部署用于配置反向代理服务器的第二软件容器;以及部署所述第一软件容器的更多实例。
根据第三方面,呈现了一种数据处理系统,其包括:用于解析所述第一软件容器的因特网协议IP地址和端口的部件,所述部件用于解析所述数据处理系统的第一软件容器的被植入代理器的形成部分;以及用于在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理的部件,所述部件用于注册所述被植入代理器的形成部分。
根据第四方面,呈现了一种用于第一软件容器中的被植入代理器的计算机程序。所述计算机程序包含计算机程序代码,所述计算机程序代码在被植入代理器上运行时使所述被植入代理器执行如下步骤:解析所述第一软件容器的因特网协议IP地址和端口;以及在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理。
根据第五方面,呈现了一种计算机程序产品,其包括根据第四方面的计算机程序以及所述计算机程序被存储在其上的计算机可读部件。
根据第六方面,呈现了一种由包括第二被植入代理器的第二软件容器所执行的方法。所述方法包括由所述第二被植入代理器执行的如下步骤:获取在第一分布式哈希表中注册的微服务身份,所述微服务身份已由第一软件容器的第一被植入代理器进行注册;以及使用所述微服务身份来配置在所述第二软件容器中运行的反向代理。
所述获取步骤可包括获取与所述微服务身份关联地被存储的所述第一软件容器的IP地址和端口;以及其中配置所述反向代理的所述步骤包括使用所述IP地址和端口。
所述方法还可包括如下步骤:当缺席的微服务身份已从所述第一分布式哈希表中被删除时,通过从所述代理删除所述缺席的微服务身份来配置运行在所述第二软件容器中的所述反向代理。
所述方法还可包括如下步骤:获取针对微服务身份的协议类型、前端后缀路径和目标路径;以及将所述反向代理配置成使用所述协议类型、前端后缀路径和目标路径。
根据第七方面,呈现了一种数据处理系统,其包括:第二软件容器,所述第二软件容器包括与处理器关联的被植入代理器;以及存储器。所述存储器存储指令,所述指令在由所述处理器执行时使所述代理器执行如下步骤:获取在第一分布式哈希表中注册的微服务身份,所述微服务身份已由第一软件容器的第一被植入代理器进行注册;以及使用所述微服务身份来配置在所述第二软件容器中运行的反向代理。
所述获取指令可包括在由所述处理器执行时使所述代理器获取与所述微服务身份关联地被存储的所述第一软件容器的IP地址和端口的指令;以及配置所述反向代理的所述指令可包括在由所述处理器执行时使所述代理器使用所述IP地址和端口的指令。
所述数据处理系统还可包括在由所述处理器执行时使所述代理器执行如下步骤的指令:当缺席的微服务身份已从所述第一分布式哈希表中被删除时,通过从所述代理删除所述缺席的微服务身份来配置运行在所述第二软件容器中的所述反向代理。
所述数据处理系统还可包括在由所述处理器执行时使所述代理器执行如下步骤的指令:获取针对微服务身份的协议类型、前端后缀路径和目标路径;以及将所述反向代理配置成使用所述协议类型、前端后缀路径和目标路径。
根据第八方面,呈现了一种数据处理系统,其包括:用于获取在第一分布式哈希表中注册的微服务身份的部件,所述微服务身份已由第一软件容器的第一被植入代理器进行注册,其中所述数据处理系统包括第二软件容器,所述第二软件容器包括与处理器关联的被植入代理器;以及用于使用所述微服务身份来配置在所述第二软件容器中运行的反向代理的部件。
根据第九方面,呈现了一种包含计算机程序代码、用于第一软件容器中的被植入代理器的计算机程序,所述计算机程序代码在被植入代理器上运行时使所述被植入代理器执行如下步骤:解析所述第一软件容器的因特网协议IP地址和端口;以及在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理。
根据第十方面,呈现了一种计算机程序产品,其包括根据第九方面的计算机程序以及所述计算机程序被存储在其上的计算机可读部件。
所有现有配置管理工具和框架都是通用的,而不是专门设计用于微服务路由配置。将值得期望的是具有允许微服务管理它们自己的路由的框架。例如,允许微服务通过从代理服务器撤消注册来温和地自行停止,以阻止新连接并且一直等到现有连接关闭为止。还将是被期望的是微服务按照即插即用方式来创建它们自己的聚簇。这在现有工具和框架中当前是不被支持的。
而且,许多现有工具要求其本身能够是难以部署和管理的平台。另一个缺点在于,开发人员变成被厂商锁定到特定平台,这使得难以切换平台或者同时利用多个平台。因此,将值得期望的是允许容器在不依赖于外部平台的情况下管理它们自己的路由。
现有的当前技术存在的还有的另一个问题在于,它们通常要求对微服务代码的修改。例如,微服务必须修改成使用Netflix的Eureka服务发现框架。从可再用性观点来看,能够采取任何现有容器图像并且仅仅是在不对运行在容器中的微服务进行定制的情况下来部署它将会是有益的。
因此,实施例解决如何管理由容器化微服务所组成的应用内的路由、特别是如何管理负荷平衡以及对运行在数据中心中的微服务的外部访问以创建微服务的宽松耦合且分散的网络的问题。这在设计和实现具有高变动率的微服务的应用时或者在由大量微服务所组成的复杂部署(其中配置变得困难和费时)中是特别重要的。
根据本文所呈现的实施例,允许微服务按照分散方式来管理路由(路线),而不是使用集中控制器来管理路由(如当今所有现有平台中所做的)。
在所提出的实施例中,配置数据存储在分布式数据库中,其由远程配置客户端来跟踪,以重新配置代理服务器。主要差别在于,所提出的实施例不要求外部平台支持或者中央控制器来管理代理服务器的配置。另一个差别在于,Bamboo主要设计用于服务发现,其中所提出的实施例主要设计成提供外部访问和负荷平衡,以管理在微服务的宽松连接的网络中的路由。
还已经进行了提供分散配置管理的工作。CFEngine是一种用于建立和维持跨主机的网络的配置的工具。通过使每一个装置或服务组件运行CFEngine代理器,全局定义的策略能够由代理器来实施。虽然它是基于代理器的,但它更为静态,并且要求对微服务的修改以支持CFEngine(与Netflix Eureka相似)。而且,虽然配置管理本身是分散的,但是它没有设计成实现自我管理和分散微服务(其能够动态重新配置代理服务器以管理路由)。
实施例与现有的当前技术相比,它们之间的一个差别在于,所提出的解决方案设计成创建容器化微服务的自我管理的分散网络。为了允许微服务管理它们自己的路由,诸如允许它们建立它们自己的聚簇并且管理负荷平衡或者建立它们自己的外部网关—并且不要求对容器化的微服务作任何修改。
实施例基于两种类型的代理器,即服务代理器和路由代理器,它们经由被称作Bitverse的分布式哈希表(DHT)间接地交互。服务代理器配置成负责在Bitverse中注册微服务,以及路由代理器配置成负责相应地配置代理服务器。
此外,实施例基于在不修改现有微服务和容器图像的情况下,透明地操控服务注册和代理配置的进程注入。在部署容器图像之前,它被植入有服务代理器进程(其负责将容器注册到Bitverse)。
实施例的容器配置成托管Bitverse节点本身,使得有可能实现一种分散系统,其中Bitverse网络由容器来管理,或者有可能建立外部Bitverse网络。从这一点来看,Bitverse与Etcd或Zookepper相似,只是有可能实现一种分散系统,其中容器本身共同负责提供实施例所要求的全部功能。
当基于所提出的实施例来构建应用时,存在两种主要类型的容器,即微服务容器,其是配置成运行普通微服务但是植入有服务代理器的容器。另一种容器类型称作路由容器,其配置成充当到其他微服务的网关。路由容器例如能够用来为特定微服务容器提供到因特网的外部访问或者负荷平衡进来业务,因而使得有可能创建微服务的聚簇。
路由容器配置成内部运行反向代理服务器或者配置成能够路由或代理网络连接的某个其他组件/网络功能,例如SDN(软件定义的网络)功能。与微服务容器相似,路由容器也被植入有代理器、即所谓的路由代理器,其负责配置内部反向代理服务器。路由代理器配置成读Bitverse DHT网络中的路由配置信息。通过预订到Bitverse中存储的容器注册和配置信息,它配置成相应地自动配置反向代理服务器。由于所有状态都存储在Bitverse网络中,所以变得有可能实现容器的宽松连接的网络,其中微服务容器和路由容器均能够动态地被添加或删除。通过使用实施例,还变得有可能使微服务容器按需部署新路由容器,以动态创建聚簇,即,无需依靠中央控制器来建立聚簇。下面更进一步地来论述这个特征。
根据实施例的第一方面,提供第一软件容器及其方法。第一软件容器包括被植入代理器,其配置成运行在所述第一软件容器中,其中所述代理器配置成在分布式哈希表中注册微服务身份,从而使运行在第二软件容器中的第二被植入代理器能够配置运行在第二软件容器中的反向代理。
根据另一方面,提供一种包括被植入代理器的第一软件容器。所述代理器与处理器关联;以及存储器,其存储指令,所述指令在由所述处理器执行时使所述代理器执行如下步骤:运行在所述第一软件容器中,并且在分布式哈希表中注册微服务身份,从而使运行在第二软件容器中的第二被植入代理器能够配置运行在第二软件容器中的反向代理。
根据另一方面,提供一种包括被植入代理器的第一软件容器。所述代理器包括用于运行在所述第一软件容器中的部件;以及用于在分布式哈希表中注册微服务身份从而使运行在第二软件容器中的第二被植入代理器能够配置运行在第二软件容器中的反向代理的部件。
根据另一方面,提供一种用于第一软件容器中的被植入代理器的计算机程序。所述计算机程序包括计算机程序代码,所述计算机程序代码在被植入代理器上运行时使所述被植入代理器执行如下步骤:运行在所述第一软件容器中,并且在分布式哈希表中注册微服务身份从而使运行在第二软件容器中的第二被植入代理器能够配置运行在第二软件容器中的反向代理。
根据还有的另一方面,提供一种计算机程序产品。所述计算机程序产品包括根据上述方面的计算机程序以及所述计算机程序被存储在其上的计算机可读部件。
根据实施例的另外方面,提供第二软件容器及其方法。第二软件容器包括第二被植入代理器,其适应于通过使用在分布式哈希表中注册的微服务身份来配置运行在第二软件容器中的反向代理。微服务身份由第一软件容器中的第一被植入代理器进行注册。
根据另一方面,提供一种包括被植入代理器的第二软件容器。所述代理器与处理器关联;以及存储器,其存储指令,所述指令在由处理器执行时使所述代理器执行如下步骤:通过使用在分布式哈希表中注册的微服务身份来配置运行在第二软件容器中的反向代理。微服务身份由第一软件容器中的另一个被植入代理器来注册。
根据另一方面,提供一种包括被植入代理器的第二软件容器。所述代理器包括用于通过使用在分布式哈希表中注册的微服务身份来配置运行在第二软件容器中的反向代理的部件。微服务身份由第一软件容器中的另一个被植入代理器来注册。
根据另一方面,提供一种用于第二软件容器中的被植入代理器的计算机程序。所述计算机程序包括计算机程序代码,所述计算机程序代码在被植入代理器上运行时使所述被植入代理器执行如下步骤:通过使用在分布式哈希表中注册的微服务身份来配置运行在第二软件容器中的反向代理。微服务身份由第一软件容器中的另一个被植入代理器来注册。
根据还有的另一方面,提供一种计算机程序产品。所述计算机程序产品包括根据上述方面的计算机程序以及所述计算机程序被存储在其上的计算机可读部件。
存在所提出的实施例的若干优点,这些优点能够实现分散微服务的创建并且允许微服务自行管理。下文更详细地论述可能的优点。
灵活性:微服务(或容器)能够管理其自己的路由。这具有若干有益效果。例如,它通过允许微服务修改外部路由并且通过阻止新进入连接以使自身匮乏来允许微服务温和地停止。
实施例还允许微服务在需要时动态建立聚簇,从而允许微服务本身重新配置微服务基础设施的拓扑。例如,如果微服务确定负荷过高,则它能够克隆自身并且部署反向代理微服务,以创建和配置与Kubernetes Pod类似的聚簇,只不过该聚簇能够在运行时动态地被创建。还变得有可能的是按照即插即用方式动态地添加更多前端服务器(反向代理服务器)。在这种情况下,新代理服务器能够通过读Bitverse网络中存储的配置数据自动地配置它们自身。
安全性:所提出的实施例还能够用来允许微服务暂时在外部(例如在因特网上)暴露其自身。微服务能够注册临时URL(统一资源定位符),并且然后在它不再应当被访问时自行撤消注册。这在集中架构中实现将会更加复杂得多,特别是如果部署了大量微服务的情况下。
但是,应当提到的是,如实施例中所提出的分散对安全性施加更多要求,例如对管理证书和加密密钥的更多需求。但是,管理加密密钥并提供安全公有密钥基础设施(PKI)超出了本文所呈现的实施例的范围。
平台独立性:通过使得有可能使微服务自行管理而不是依靠外部平台(比如Kubernetes或Mesos),变得有可能易于切换到另一个平台或者甚至同时使用多个平台,例如使用Docker和Mesos,甚至是运行于不同的数据中心上。这还能够开启被称作Liquid容器的令人感兴趣的想法,其中容器能够在执行环境(包括末端用户装置(诸如膝上型计算机或智能电话)或者电信设备(诸如无线电基站))之间无缝地移动,以创建普遍存在的云执行环境。显然,这在如果微服务极为依赖底层平台的情况下实现起来将是更加困难得多的。
可再用性:在将代理器注入容器图像时,实施例能够在任何现有容器图像上被使用并且无需修改运行在容器中的微服务。这是在开发可再用微服务组件时的重要性质。
一般来说,权利要求中使用的所有术语要按照它们在技术领域中的普通含意来被解释,除非本文中另加明确定义。对“一(a)/一(an)/该(the)元件、设备、组件、部件、步骤等”的所有引用要开放式地解释为指代元件、设备、组件、部件、步骤等的至少一个实例,除非另加明确声明。本文所公开的任何方法的步骤不必须按照所公开的确切顺序来被执行,除非明确声明。
附图说明
现在作为示例、参照附图来描述本发明,其中:
图1是示出容器图像如何被植入有服务代理器并且然后被部署的示意图;
图2是示出运行在数据中心中的四个微服务容器和两个路由容器的部署的示意图;
图3是示出基于Kademlia的Bitverse P2P (对等)网络的示意图;
图4是示出在本文中呈现的实施例中使用的分布式哈希表的示意图;
图5A-B是示出由第一软件容器执行的对其自身进行注册以与反向代理配合使用的方法的流程图;
图6A-B是示出由第二软件容器执行的以配置反向代理的方法的流程图;
图7是能够用来执行图2的路由代理器和/或服务代理器的服务器的组件的示意图;
图8是示出按照一个实施例、图7的服务器的服务代理器的功能模块的示意图;
图9是示出按照一个实施例、图7的服务器的路由代理器的功能模块的示意图;以及
图10示出包括计算机可读部件的计算机程序产品的一个示例。
具体实施方式
现在将在下文中参照附图更全面地描述本发明,附图中示出本发明的某些实施例。但是,本发明可通过许多不同形式来实施,而不应被理解为局限于本文所阐述的实施例;相反,这些实施例作为示例来被提供,使得本公开将是透彻和全面的,并且将向本领域的技术人员全面地传达本发明的范围。在通篇的描述中,相似标号指代相似元件。
图1示出容器图像如何被植入有服务代理器并且然后被部署到云平台的过程。
植入工具6提供有容器图像URL和代理器URL以便一个或多个代理器被植入。容器图像和代理器是包括可执行计算机代码的软件模块,并且从URL所指向的容器注册表7被下载。然后构建新容器图像,其包括主要容器图像和被植入代理器二者。一旦完成,植入工具6则向容器注册表7上传被植入的容器图像1’。被植入的容器图像1’包含Bitverse SetMap(下面更详细描述)、被植入的代理器2和微服务或代理5 (其也包含在容器图像1中)。
部署工具8下载被植入的容器图像,并且将其部署到平台9。
图2示出由运行在数据中心12中的四个微服务容器13a-d和两个路由容器14a-b所组成的部署的一示例。微服务容器13a-d采用“S”来标记,以及路由容器14a-d采用“R”来标记。在图2顶部的路由容器14a充当外部网关,而第二路由容器14b充当负荷平衡器,以创建聚簇。
各路由容器14a-b包含Bitverse SetMap 3、被植入代理器2和微服务或代理5。类似地,各服务容器13a-d包含Bitverse SetMap 3、被植入代理器2和微服务或代理5。所有路由容器14a-b和所有服务容器13a-d是对等DHT网络15的部分。
客户端10例如能够是智能电话、计算机等,其通过网络11、例如因特网来连接到数据中心12。客户端10能够执行在web浏览器中运行的JavaScript app或专门应用,以连接到数据中心。
在这类环境中,向微服务的每个分派配置代理服务器的职责以创建自行管理系统而不是将配置逻辑集中到控制器或编排器(其能够易于成为瓶颈或者单故障点)能够是有意义的。
Docker是近来已得到普及的容器运行时间的一示例。通过允许容器图像堆叠在所谓的联合文件系统中,能够有效地分布容器图像。联合文件系统还开启用于称作进程注入的机制。进程注入使得有可能将附加进程透明地植入容器图像中,例如管理代理服务器的自行配置机制。
在这里,各路由容器14a-b充当反向代理,该反向代理具有朝客户端指引的(即在图2中向上)前端和朝资源指引的(即在图2中向下)后端。
图3是示出基于称作Bitverse的Kademlia的P2P网络的示意图。Bitverse是构建分散对等应用的框架。Bitverse基于Kademlia DHT算法,但是也将可能使用其他DHT算法,诸如Chord或Pastry。但是,本小节的目的却是要用作底层DHT框架的通用要求规范以及使得更易于理解稍后呈现的伪代码。
Bitverse由两种不同类型的节点、即超级节点和边缘节点来组成。(还将有可能仅使用超级节点,但是NAT (网络地址转化)遍历技术然后被采用以将超级节点连接在一起(若超级节点位于防火墙后面的话)。)边缘节点使用Web套接字来连接到超级节点,并且因而形成星形拓扑。边缘节点能够作为web浏览器客户端中的库运行或者在服务器组件中直接运行。为了提供完整分散解决方案,容器本身能够操作超级节点,但是还将有可能单独运行超级节点以建立外部Bitverse网络。
超级节点使用UDP (用户数据报协议)进行通信。消息使用Kademlia所提供的路由表16来被路由。路由表16由160个桶(bucket)来组成,其中每个桶由超级节点所发现的联络点(通常为20个)的有限列表来组成。XOR(异或)用来确定网络中的两个不同节点之间的距离以及联络点应当存储于哪一个桶中。这使得有可能实现迭代协议,其中节点计算在具有到特定字符串或者字符串的SHA-1 (安全哈希算法1)的最短距离的其的路由表中的哪些联络点是更为特定的。然后问询这些联络点,直到不存在要问询的更多节点。这使得有可能查找具有到特定字符串的最短距离的整个网络中的节点。与所有DHT相似,这个规程极为有效,通常O(log n)个消息需要被发送,其中n是网络中的节点的数量,并且O指示阶数。
通过计算关键字的SHA-1,变得有可能计算特定关键字-值对应当存储于或位于网络中的哪些节点,并且因而实现分布式数据存储,其中数据在Bitverse网络中在若干超级节点上被重复。在Bitverse中,值表示为无序集合,这使得有可能存储与特定关键字关联的多个值。这个特殊的关键字-值对被称作SetMap。下面是存储通过关键字“mykey”所标识的5个值的称作“hello”的SetMap的一示例。
SetMap提供简单关键字-值存储API,例如
还有可能对SetMap中存储的值设置生存时间(TTL),例如
在这种情况下,value7在2秒之后自动清除。
还有可能跟踪特定关键字,并且在添加或删除值时接收事件,例如
func(all, added, removed)是对每个事件所调用的闭合函数。它在首次调用TrackKey函数时也被调用。这能够用来通过迭代all自变量(其包含用于关键字的所有值)来初始化算法。
与这个跟踪机制相结合的TTL机制提供实现分布式和分散服务发现机制的基础。如果客户端停止添加具有TTL的特定值,则该值在TTL到期时将自动被清除,因而引起对其他客户端的跟踪事件,其他客户端然后能够采取适当动作,诸如重新配置代理服务器。
图4是示出在本文所呈现实施例中使用的被实现为Bitverse SetMap的分布式哈希表的示意图。SetMap被路由代理器和服务代理器访问。
当启动路由代理器时,它被提供有Bitverse凭证,由此路由代理器能够得到由开发人员/操作人员或者运行在所部署的微服务容器中的服务代理器所发布的配置信息。路由代理器和服务代理器使用三个不同SetMap进行交互。微服务SetMap 20包含当前使用中的微服务ID。微服务ID (或者微服务身份)是特定微服务的身份。微服务提供功能,并且使用本文所呈现实施例是外部可访问的。如下面更详细说明,每个微服务ID能够在许多实例中实现,其在容器SetMap 22中被反映。
在图4的示例中,存在注册的两个不同微服务ID,cmm和统计。通过跟踪微服务SetMap中的microservices关键字,路由代理器能够找出哪些微服务ID在使用中,并且当引入或删除新微服务ID时重新配置内部代理。
容器SetMap 22包含到提供某个微服务ID的不同容器的连接信息(IP地址和端口)。注意,能够存在提供同一微服务ID的许多容器。在这种情况下,路由容器负荷平衡在容器之间的业务。
协议设置SetMap 21包含配置内部代理服务器所需的配置信息,例如要使用哪一个协议(例如TCP或HTTP等)、粘滞会话属性或者应当被代理到特定微服务ID的容器的前端后缀路径(或regexp)。在图4的示例中,路径HTTP/stat在192.168.18.34:1111和192.168.23.217:2222被代理到(目标)路径/容器上。这使用“statistics”关键字来利用协议设置SetMap 21和容器SetMap二者。由于两个容器提供statistics微服务ID,所以进来业务将在所述两个容器之间被进行负荷平衡。
要注意,微服务SetMap 20中的微服务关键字的值(例如cmm)被用作在容器SetMap22中用来查找运行容器或者在协议设置SetMap 21中用来查找协议配置的关键字。
当路由代理器首先启动时,它查找其所了解的对于每一个微服务ID的所有协议设置。对于每个微服务ID,它相应地配置代理服务器,即,配置后缀路径和任何其他前端相关设置。它然后查找Container SetMap,以找出哪些容器提供这个微服务ID。所有被发现的容器作为映射到代理服务器配置中的微服务ID的后端服务器来被添加。
可选地,通过使用Bitverse所提供的跟踪机制,路由代理器能够在修改不同SetMap时接收事件。跟踪机制能够通过例如获得何时值在Bitverse的DHT中已被更新的消息来被使用。哈希表中的这个条目既包含值也包含所有订户的SHA地址的列表。因此,如果任何人改变那个值,Bitverse知道应当向谁发送消息。因此,要使用跟踪机制,只要求将相关边缘节点注册为订户。
例如,事件在部署新容器时被接收,并且因而能够将容器作为后端服务器动态地添加到代理服务器。
运行在微服务容器中的服务代理器的作用是通过询问底层平台来解析托管微服务的IP地址和端口。它然后向Container SetMap发布所解析IP和端口。如先前所述,这将生成对路由代理器的事件,其将重新配置和重启路由容器中的代理服务器。要注意,服务代理器需要知道它们在表示哪个微服务ID以便使上述情形能够工作。微服务ID能够在植入服务代理器时被设置,或者它能够在部署微服务容器时作为环境变量来被设置。
下列伪代码示出服务代理器和路由代理器如何进行交互。该规程被称作动态代理重新配置算法,并且被反映在图5A-B和图6A-B的流程图中。要注意,下列代码中所指示的步骤涉及图5A和图6B的流程图的步骤。
动态代理重新配置算法
在容器中运行的服务代理器然后需要注册到容器SetMap。
服务代理器在值(myIP+myPorts)上设置TTL,并且周期地重新添加它,这使Bitverse在如果容器终止并且停止重新添加值时从容器SetMap中自动删除容器连接信息。
要注意,在服务代理器与路由代理器之间仅存在弱关系,因为它们仅使用Bitverse SetMaps间接地通信。这使得有可能按照即插即用方式来部署新微服务容器或路由容器。如以下所论述的,还有可能允许微服务容器动态添加和配置路由容器。
动态创建聚簇
在一些情况下,允许微服务容器配置或者甚至部署新路由容器以创建自行重新可编程微服务基础设施能够是有意义的。例如,视频会议微服务能够生成到会议室的临时URL,其在某个时间之后到期。通过修改协议设置SetMap 21,变得有可能添加或改变到特定微服务的URL,从而使得微服务有可能生成临时URL。
对于微服务还能够有可能检测它被过载。过载检测能够是依赖于服务的。检测能够通过测量容器中的CPU(中央处理器单元)负荷或者连接的数量来进行,或者可能基于某些时间测量(例如,响应始终应当在X毫秒之内被生成)。
它然后能够配置和部署路由容器,并且添加其本身的更多实例,以便动态创建聚簇。传统上,集中编排器已经负责做这个任务。但是,所呈现的实施例开启用于通过注入适当工具来创建分散系统,其中容器本身能够建立和管理聚簇,这在一些情形中能够是更为可缩放和稳健的解决方案。要注意,这要求容器能够访问平台并且具有准许来部署容器,这可要求更强的安全管理框架。
所提出实施例的另一个特征在于,对于微服务容器有可能找出哪些路由容器当前被使用并且它们是如何被配置的。通过查找微服务SetMap 20中的proxy_servers关键字,对于微服务有可能自省地找出路由容器的公共IP+Port(或域名)。微服务然后能够通知客户端关于如何从公共因特网来连接到它。能够达成该通知,因为微服务有权访问用来配置代理(诸如HA代理)的信息,其外部IP地址能够例如在微服务响应客户端请求时被包含。
这意味着微服务能够部署新路由容器,并且然后跟踪微服务SetMap 20中的proxy_server关键字,以便在新路由容器加入和运行时接收事件,并且然后开始使用它。这种自省使得有可能创建重新可编程微服务基础设施,这能够开启用于新的令人感兴趣的设计模式,从而与现有技术相比提供大的动态灵活性。
图5A-B是示出由第一软件容器执行的对其自身进行注册以与反向代理配合使用的方法的流程图。首先看图5A,这种方法在服务代理器(其是如上所述的并且在图2中示出的被植入代理器)中执行。
当该方法开始时,服务代理器运行在微服务容器(在这里标示为第一软件容器)中。
在解析IP和端口步骤40中,第一软件容器的IP地址和端口被解析,即从执行第一软件容器的环境来得到。
在注册容器步骤42中,采用配置的微服务ID以及可选地还有与该微服务ID关联的TTL来将容器注册到容器SetMap 22。因此,微服务身份(又标示为微服务ID)、第一软件容器的IP地址和端口在第一分布式哈希表,诸如容器SetMap 22中被注册。这个注册使运行在第二软件容器中的第二被植入代理器(诸如路由代理器)能够配置运行在第二软件容器中的反向代理。换言之,第一分布式哈希表包含服务代理器的容器的IP地址和端口,使得运行在第二软件容器中的第二被植入代理器(路由代理器)能够配置运行在第二软件容器中的反向代理。
在睡眠步骤43中,服务代理器进入睡眠模式或者不活动模式。睡眠的时长应当少于TTL,以便能够在SetMap 22中重新激活注册。
该方法然后通过返回到注册容器步骤42(或者可选地返回到解析IP和端口步骤40)来重复进行。
现在来看图5B,这个流程图示出由第一软件容器所执行的可选过程。
在可选的条件句过载步骤45中,确定第一软件容器是否经历过载。过载检测能够是依赖于服务的。如上面所说明的,检测能够通过测量容器中的CPU负荷或者连接的数量来进行,或者基于某些时间测量(例如响应始终应当在X毫秒之内被生成)来进行。如果第一软件容器被确定为过载,则该方法继续进行到部署第二软件容器步骤46。否则,该方法可选地经由延迟(未示出)返回到可选的条件句过载步骤45。
在可选的部署第二软件容器步骤46中,部署第二软件容器以用于配置反向代理服务器。第二软件容器包含以上更详细描述的路由代理器。
在可选的部署针对第一软件容器的更多实例步骤48中,部署第一软件容器的至少再多一个实例。
图6A-B是示出由第二软件容器执行的以配置反向代理的方法的流程图。首先描述在图6A中所示出的方法。第二软件容器包括第二被植入代理器,诸如路由代理器。该方法由第二被植入代理器来执行。
在查找注册的容器步骤50中,得到在第一分布式哈希表中注册的微服务身份。如上所述,微服务身份已由第一软件容器的第一被植入代理器进行了注册。因此,这个步骤包括在DHT(诸如容器SetMap 22)中对用于微服务身份的注册容器的查找。
在配置代理服务器步骤52中,运行在第二软件容器中的反向代理使用微服务身份来被配置。
现在来看图6B,这是也包括图6A的步骤的扩展实施例,其将不再被描述。
当该方法开始时,路由代理器运行在路由容器中,路由容器在本文中也被称作第二软件容器。
在可选的跟踪微服务关键字步骤53中,在微服务SetMap 20中跟踪微服务关键字,以便在添加或删除微服务ID时接收事件。
在可选的等待事件步骤54中,该方法一直等到在步骤53中所跟踪的事件发生。当事件发生时,该方法继续进行到可选的条件句添加了微服务ID步骤55。
在可选的条件句添加了微服务ID步骤55中,确定事件是否涉及添加的微服务ID。如果情况是这样,则该方法继续进行到可选的查找协议设置步骤51,并且对所添加的微服务ID执行这个步骤。如果事件没有涉及添加的微服务ID,则该方法继续进行到可选的条件句删除了微服务ID步骤56。
在可选的条件句删除了微服务ID步骤56中,确定事件是否涉及被删除的微服务ID。如果情况是这样,则该方法继续进行到可选的配置代理服务器步骤57。否则,该方法返回到可选的等待事件步骤54。
在可选的配置代理服务器步骤57中,代理服务器配置通过从代理前端删除事件的微服务ID来被更新。
在可选的查找所有微服务ID步骤58中,微服务SetMap 20中的所有微服务ID使用微服务关键字来被查找。
在可选的对每个微服务ID步骤59中,对在可选步骤58中找到的每个微服务ID开始循环。对微服务ID的每一个执行其余步骤。
在可选的查找协议设置步骤51中,路由代理器采用讨论中的微服务ID作为关键字来查找协议设置SetMap 21中的用于微服务ID的协议设置。
在可选的配置代理服务器步骤52中,路由代理器通过按照在步骤51所得到的协议设置配置前端来配置代理服务器。
在可选的跟踪微服务ID步骤60中,在容器SetMap 22中跟踪讨论中的微服务ID。为了获得在添加或删除容器时的事件。
在可选的等待事件步骤61中,该方法一直等到在步骤60中所跟踪的事件发生。当事件发生时,该方法继续进行到可选的条件句添加了容器步骤62。
在可选的条件句添加了容器步骤62中,确定事件是否涉及添加的容器。如果情况是这样,则该方法继续进行到可选的配置代理服务器步骤64。否则,该方法继续进行到可选的条件句删除了容器步骤63。
在可选的条件句删除了容器步骤63中,确定事件是否涉及删除的容器。如果情况是这样,则该方法继续进行到可选的配置代理服务器步骤65。否则,该方法返回到等待事件步骤61。
在可选的配置代理服务器步骤64中,代理服务器配置通过添加作为代理后端的容器来被更新。
在可选的配置代理服务器步骤65中,代理服务器配置通过从代理后端删除容器来被更新。
图7是示出能够用来执行图2的路由代理器和/或服务代理器的服务器70的组件的示意图。如所示,服务器70包括至少一个处理器71,其经由互连耦合到网络接口82。存储器73能够由硬盘驱动器、闪速存储器或只读存储器来实现,并且存储计算机可读指令。所述至少一个处理器71执行计算机可读指令,并且实现上述功能性。网络接口72使服务器70能够与网络内的其他节点进行通信。本发明的备选实施例可包括附加组件,其负责提供附加功能性,包括上述任何功能性和/或支持上述解决方案所必需的任何功能性。
图8是示出按照一个实施例、图7的服务器的服务代理器的功能模块的示意图。模块使用软件指令(诸如在服务器70中执行的计算机程序)来实现。备选或另外地,模块能够使用硬件,例如使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或分立逻辑组件来实现。模块对应于图5A和图5B中示出的方法中的步骤。
解析器80对应于步骤40。注册器82对应于步骤42。睡眠器83对应于步骤43。部署器84对应于步骤46和48。过载确定器85对应于步骤45。
图9是示出按照一个实施例、图7的服务器的路由代理器的功能模块的示意图。模块使用软件指令(诸如在服务器70中执行的计算机程序)来实现。备选或另外地,模块能够使用硬件,例如使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或分立逻辑组件来实现。模块对应于图6A和图6B中示出的方法中的步骤。
获取器90对应于步骤50、51和58。配置器91对应于步骤52、57、64和65。跟踪器92对应于步骤53和60。等待器对应于步骤54和61。确定器对应于步骤55、56、62和63。循环器对应于步骤59。
图10示出包括计算机可读部件的计算机程序产品101的一个示例。在这个计算机可读部件上能够存储计算机程序100,该计算机程序能够使处理器执行按照本文所述实施例的方法。在这个示例中,计算机程序产品是光盘,诸如CD(紧致盘)或DVD(数字多功能盘)或蓝光盘。如上面所说明的,计算机程序产品还能够被具体化在装置的存储器(诸如图7的存储器73)中。虽然计算机程序100在这里示意地被示为所描绘的光盘上的轨道,但计算机程序能够按照适合于计算机程序产品的任何方式来被存储,诸如可移除固态存储器(例如通用串行总线(USB)驱动器)。
以上已经主要参照几个实施例描述了本发明。但是,正如本领域的技术人员易于领会到的,除了以上公开的实施例之外的其他实施例在如由所附专利权利要求所定义的本发明的范围之内同样是可能的。
Claims (21)
1.一种由包括被植入代理器的第一软件容器所执行的方法,所述被植入代理器配置成在所述第一软件容器中运行,所述方法包括由所述被植入代理器执行的如下步骤:
解析所述第一软件容器的因特网协议IP地址和端口;以及
在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使运行在第二软件容器中的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理,其中所述第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
2.根据权利要求1所述的方法,其中,所述注册步骤还包括注册与所述微服务身份关联的生存时间值。
3.根据权利要求2所述的方法,其中,所述注册步骤以小于所述生存时间值的间隔有规律地被重复。
4.根据以上权利要求中的任一项所述的方法,还包括如下步骤:
部署用于配置反向代理服务器的第二软件容器;以及
部署所述第一软件容器的更多实例。
5.根据权利要求4所述的方法,其中,部署所述第二软件容器和部署所述第一软件容器的更多实例的所述步骤在所述第一软件容器过载时被执行。
6.一种数据处理系统,包括:第一软件容器,所述第一软件容器包括被植入代理器,所述被植入代理器与处理器关联;以及存储器,其存储有指令,所述指令在由所述处理器执行时使所述被植入代理器执行如下步骤:
解析所述第一软件容器的因特网协议IP地址和端口;以及
在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理,其中所述第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
7.根据权利要求6所述的数据处理系统,其中,用于注册的指令包括在由所述处理器执行时使所述被植入代理器还注册与所述微服务身份关联的生存时间值的指令。
8.根据权利要求7所述的数据处理系统,其中,用于注册的指令以小于所述生存时间值的间隔有规律地被重复。
9.根据权利要求6至8中的任一项所述的数据处理系统,其中所述指令在由所述处理器执行时使所述被植入代理器执行如下步骤:
部署用于配置反向代理服务器的第二软件容器;以及
部署所述第一软件容器的更多实例。
10.根据权利要求9所述的数据处理系统,其中所述指令在由所述处理器执行时使所述被植入代理器在所述第一软件容器过载时执行如下步骤:部署用于配置反向代理服务器的第二软件容器;以及部署所述第一软件容器的更多实例。
11.一种数据处理系统,包括:
用于解析第一软件容器的因特网协议IP地址和端口的部件,所述部件用于解析所述数据处理系统的所述第一软件容器的被植入代理器的形成部分;以及
用于在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理的部件,所述部件用于注册所述被植入代理器的形成部分,其中所述第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
12.一种包含指令的计算机可读存储介质,所述指令被执行时,使得处理器执行如下步骤:
解析第一软件容器的因特网协议IP地址和端口;以及
在第一分布式哈希表中注册微服务身份、所述第一软件容器的所述IP地址和所述端口,以用于使在第二软件容器中运行的第二被植入代理器能够配置运行在所述第二软件容器中的反向代理,其中所述第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
13.一种由包括第二被植入代理器的第二软件容器所执行的方法,所述方法包括由所述第二被植入代理器执行的如下步骤:
获取在第一分布式哈希表中注册的微服务身份,所述微服务身份已由第一软件容器的第一被植入代理器进行注册;以及
使用所述微服务身份来配置在所述第二软件容器中运行的反向代理,其中所述第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
14.根据权利要求13所述的方法,其中,所述获取步骤包括获取与所述微服务身份关联地被存储的所述第一软件容器的IP地址和端口;以及其中配置所述反向代理的所述步骤包括使用所述IP地址和端口。
15.根据权利要求13或14所述的方法,还包括如下步骤:
当缺席的微服务身份已经从所述第一分布式哈希表中被删除时,通过从代理删除所述缺席的微服务身份来配置运行在所述第二软件容器中的所述反向代理。
16.根据权利要求13所述的方法,还包括如下的步骤:
获取针对微服务身份的协议类型、前端后缀路径和目标路径;以及
将所述反向代理配置成使用所述协议类型、前端后缀路径和目标路径。
17.一种数据处理系统,包括:第二软件容器,所述第二软件容器包括与处理器关联的被植入代理器;以及存储器,其存储指令,所述指令在由所述处理器执行时使所述被植入代理器执行如下步骤:
获取在第一分布式哈希表中注册的微服务身份,所述微服务身份已由第一软件容器的第一被植入代理器进行注册;以及
使用所述微服务身份来配置在所述第二软件容器中运行的反向代理,其中第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
18.根据权利要求17所述的数据处理系统,其中,用于获取的指令包括在由所述处理器执行时使所述被植入代理器获取与所述微服务身份关联地被存储的所述第一软件容器的IP地址和端口的指令;以及其中配置所述反向代理的所述指令包括在由所述处理器执行时使所述被植入代理器使用所述IP地址和端口的指令。
19.根据权利要求17所述的数据处理系统,其中所述指令在由所述处理器执行时使所述被植入代理器执行如下步骤:
当缺席的微服务身份已从所述第一分布式哈希表中被删除时,通过从代理删除所述缺席的微服务身份来配置运行在所述第二软件容器中的所述反向代理。
20.根据权利要求17至19中的任一项所述的数据处理系统,其中所述指令在由所述处理器执行时使所述被植入代理器执行如下步骤:
获取针对微服务身份的协议类型、前端后缀路径和目标路径;以及
将所述反向代理配置成使用所述协议类型、前端后缀路径和目标路径。
21.一种数据处理系统,包括:
用于获取在第一分布式哈希表中注册的微服务身份的部件,所述微服务身份已由第一软件容器的第一被植入代理器进行注册,其中所述数据处理系统包括第二软件容器,所述第二软件容器包括与处理器关联的被植入代理器;以及
用于使用所述微服务身份来配置在所述第二软件容器中运行的反向代理的部件,其中第二被植入代理器是配置为读取所述第一分布式哈希表中的路由配置信息的路由代理器,其中所述路由代理器通过跟踪微服务SetMap中的微服务关键字来确定哪些微服务身份在使用中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562170274P | 2015-06-03 | 2015-06-03 | |
US62/170274 | 2015-06-03 | ||
PCT/EP2016/055533 WO2016192866A1 (en) | 2015-06-03 | 2016-03-15 | Implanted agent within a first service container for enabling a reverse proxy on a second container |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107667517A CN107667517A (zh) | 2018-02-06 |
CN107667517B true CN107667517B (zh) | 2021-03-19 |
Family
ID=55586284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680032286.9A Active CN107667517B (zh) | 2015-06-03 | 2016-03-15 | 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10785334B2 (zh) |
EP (1) | EP3304285A1 (zh) |
CN (1) | CN107667517B (zh) |
WO (1) | WO2016192866A1 (zh) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10417065B2 (en) * | 2016-06-13 | 2019-09-17 | Dynatrace Llc | Method and system for automated agent injection in container environments |
US9716617B1 (en) * | 2016-06-14 | 2017-07-25 | ShieldX Networks, Inc. | Dynamic, load-based, auto-scaling network security microservices architecture |
US11412053B2 (en) * | 2016-07-22 | 2022-08-09 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
US10178045B2 (en) * | 2016-09-07 | 2019-01-08 | Sap Se | Dynamic discovery and management of microservices for multi-cluster computing platforms |
US11089064B1 (en) | 2016-09-12 | 2021-08-10 | Skyhigh Networks, Llc | Cloud security policy enforcement for custom web applications |
US10489275B2 (en) * | 2016-10-20 | 2019-11-26 | Cisco Technology, Inc. | Agentless distributed monitoring of microservices through a virtual switch |
US10554690B2 (en) * | 2016-11-10 | 2020-02-04 | International Business Machines Corporation | Security policy inclusion with container deployment |
US11106632B2 (en) * | 2016-11-16 | 2021-08-31 | Commvault Systems, Inc. | Dynamically configuring a proxy server using containerization for concurrent and/or overlapping backup, restore, and/or test operations |
US10574736B2 (en) * | 2017-01-09 | 2020-02-25 | International Business Machines Corporation | Local microservice development for remote deployment |
US10812605B2 (en) * | 2017-02-10 | 2020-10-20 | General Electric Company | Message queue-based systems and methods for establishing data communications with industrial machines in multiple locations |
CN106992964A (zh) * | 2017-02-20 | 2017-07-28 | 广东省中医院 | 一种适用于混合云的微服务安全代理系统 |
US10382257B2 (en) * | 2017-03-16 | 2019-08-13 | International Business Machines Corporation | Microservices communication pattern for fault detection in end-to-end flows |
US10356048B2 (en) * | 2017-03-17 | 2019-07-16 | Verizon Patent And Licensing Inc. | Container deployment for a network |
US10341198B2 (en) * | 2017-03-17 | 2019-07-02 | Verizon Patent And Licensing Inc. | Configuring a back-end container and a corresponding front-end proxy container on a network device |
US20180276625A1 (en) * | 2017-03-27 | 2018-09-27 | Justin Saye | Contract ratification by automated agents through distributed ledger technology |
US10511651B2 (en) * | 2017-04-25 | 2019-12-17 | General Electric Company | Infinite micro-services architecture |
US10659329B1 (en) * | 2017-04-28 | 2020-05-19 | EMC IP Holding Company LLC | Container distance measurement and clustering |
US11050607B2 (en) | 2017-06-21 | 2021-06-29 | Red Hat, Inc. | Proxy with a function as a service (FAAS) support |
CN109104451A (zh) * | 2017-06-21 | 2018-12-28 | 阿里巴巴集团控股有限公司 | Docker镜像的下载方法及节点、Docker镜像的预热方法及节点 |
US10645183B2 (en) | 2017-06-26 | 2020-05-05 | Microsoft Technology Licensing, Llc | Redirection of client requests to multiple endpoints |
US10860390B2 (en) * | 2017-06-28 | 2020-12-08 | Intel Corporation | Microservices architecture |
US10705880B2 (en) * | 2017-09-22 | 2020-07-07 | Vmware, Inc. | Cluster updating using temporary update-monitor pod |
CN107786638B (zh) * | 2017-09-27 | 2020-04-14 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
US10469600B2 (en) * | 2017-11-14 | 2019-11-05 | Dell Products, L.P. | Local Proxy for service discovery |
US10541924B2 (en) | 2017-12-01 | 2020-01-21 | International Business Machines Corporation | Load balancing in data hosting systems |
US10554675B2 (en) * | 2017-12-21 | 2020-02-04 | International Business Machines Corporation | Microservice integration fabrics network intrusion detection and prevention service capabilities |
CN109981716B (zh) * | 2017-12-28 | 2023-11-03 | 北京奇虎科技有限公司 | 一种微服务调用方法及装置 |
TWI646435B (zh) * | 2017-12-28 | 2019-01-01 | 中華電信股份有限公司 | 無伺服器之系統及其執行方法 |
CN108418862B (zh) * | 2018-01-31 | 2021-01-22 | 金蝶软件(中国)有限公司 | 基于人工智能服务云平台的微服务管理方法和系统 |
CN108494589B (zh) * | 2018-03-14 | 2021-05-14 | 北京思特奇信息技术股份有限公司 | 一种分布式Nginx服务器的管理方法和系统 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
CN108616599B (zh) * | 2018-05-11 | 2021-10-29 | 北京辰森世纪科技股份有限公司 | 应用服务注册、更新的方法及装置 |
US10942719B2 (en) * | 2018-05-15 | 2021-03-09 | Ingram Micro Inc. | System and method for connector development and integration channel development |
US10180862B1 (en) * | 2018-05-16 | 2019-01-15 | ChartIQ, Inc. | System and method for integrating multiple applications operating on a shared platform |
US10783017B2 (en) | 2018-05-16 | 2020-09-22 | ChartIQ, Inc. | System and method for integrating multiple applications |
US10841336B2 (en) | 2018-05-21 | 2020-11-17 | International Business Machines Corporation | Selectively providing mutual transport layer security using alternative server names |
US10289538B1 (en) * | 2018-07-02 | 2019-05-14 | Capital One Services, Llc | Systems and methods for failure detection with orchestration layer |
CN109218415B (zh) * | 2018-08-28 | 2021-06-29 | 浪潮电子信息产业股份有限公司 | 一种分布式节点管理的方法、节点及存储介质 |
CN109039765B (zh) * | 2018-08-28 | 2022-02-25 | 新华三技术有限公司 | 网络配置方法及装置 |
CN109120708B (zh) * | 2018-08-31 | 2021-08-27 | 鼎富智能科技有限公司 | 基于微服务组件的业务模块的构建方法、调用方法及装置 |
US11074091B1 (en) * | 2018-09-27 | 2021-07-27 | Juniper Networks, Inc. | Deployment of microservices-based network controller |
US10778798B2 (en) | 2018-10-24 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Remote service access in a container management system |
US10778540B2 (en) * | 2018-12-10 | 2020-09-15 | Sap Se | Scalable infrastructure for developing, running, and deploying arbitrary applications |
US11381476B2 (en) | 2018-12-11 | 2022-07-05 | Sap Se | Standardized format for containerized applications |
US11212366B2 (en) | 2018-12-11 | 2021-12-28 | Sap Se | Kubernetes as a distributed operating system for multitenancy/multiuser |
US10897408B2 (en) | 2018-12-14 | 2021-01-19 | Sap Se | Application server programming language running in vsystem |
CN109672743A (zh) * | 2018-12-25 | 2019-04-23 | 上海新炬网络技术有限公司 | 一种基于Array反向代理模式实现负载均衡的系统及方法 |
CN111510383B (zh) * | 2019-01-31 | 2023-03-24 | 华为技术有限公司 | 一种路由计算方法以及相关设备 |
CN110011846A (zh) * | 2019-03-29 | 2019-07-12 | 努比亚技术有限公司 | 微服务构建方法、装置、移动终端及存储介质 |
US11340894B2 (en) | 2019-04-30 | 2022-05-24 | JFrog, Ltd. | Data file partition and replication |
US11386233B2 (en) | 2019-04-30 | 2022-07-12 | JFrog, Ltd. | Data bundle generation and deployment |
US11886390B2 (en) | 2019-04-30 | 2024-01-30 | JFrog Ltd. | Data file partition and replication |
US11106554B2 (en) | 2019-04-30 | 2021-08-31 | JFrog, Ltd. | Active-active environment control |
CN110266679B (zh) * | 2019-06-14 | 2023-02-28 | 腾讯科技(成都)有限公司 | 容器网络隔离方法及装置 |
CN110336753B (zh) * | 2019-06-19 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 一种跨网络区域的服务调用方法、装置、设备及存储介质 |
US11057271B2 (en) | 2019-06-20 | 2021-07-06 | Citrix Systems, Inc. | Systems and method updating ADC configuration with intended state using desired state API |
CN110445861B (zh) * | 2019-08-07 | 2021-10-22 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于f5适配器的容器云平台服务注册发现方法 |
CA3152892A1 (en) | 2019-10-26 | 2021-04-29 | Mimik Technology Inc. | Method and system for distributed edge cloud computing |
CN110990047B (zh) * | 2019-11-06 | 2021-11-19 | 北京云思畅想科技有限公司 | 用于多个微服务架构的融合方法及装置 |
CN110968296B (zh) * | 2019-12-03 | 2023-07-25 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
US11695829B2 (en) | 2020-01-09 | 2023-07-04 | JFrog Ltd. | Peer-to-peer (P2P) downloading |
US11134083B2 (en) * | 2020-01-14 | 2021-09-28 | Sap Se | User authorization and authentication accessing microservices across spaces |
CN113141386B (zh) * | 2020-01-19 | 2023-01-06 | 北京百度网讯科技有限公司 | 私有网络中Kubernetes集群的接入方法、装置、设备和介质 |
US11416243B2 (en) * | 2020-01-23 | 2022-08-16 | International Business Machines Corporation | Microservice decomposition strategy of monolithic applications |
US11892939B2 (en) | 2020-03-21 | 2024-02-06 | Dynatrace Llc | Automatic injection of agents into processes executing statically linked binaries |
CN111522535A (zh) * | 2020-03-26 | 2020-08-11 | 杭州数跑科技有限公司 | 数据源聚合方法、装置、存储介质及计算机设备 |
CN111694639B (zh) * | 2020-05-28 | 2023-11-24 | 新浪技术(中国)有限公司 | 进程容器地址的更新方法、装置和电子设备 |
CN111970358B (zh) * | 2020-08-14 | 2023-05-16 | 深圳市迅雷网络技术有限公司 | 去中心化云计算平台及其服务部署、访问方法及组件 |
CN112217671B (zh) * | 2020-09-30 | 2022-12-27 | 青岛海信网络科技股份有限公司 | 基于拆分部署的前端微服务进行界面显示的方法及设备 |
TWI766387B (zh) * | 2020-10-07 | 2022-06-01 | 智捷科技股份有限公司 | 一種具延遲感知負載平衡的反向代理方法和存儲裝置 |
CN114422489B (zh) * | 2020-10-13 | 2024-01-26 | 中国电信股份有限公司 | 基于服务网格的信息传输方法和系统 |
CN112637126B (zh) * | 2020-11-23 | 2023-04-07 | 北京中电普华信息技术有限公司 | 一种服务注册方法及Pod |
US11860680B2 (en) | 2020-11-24 | 2024-01-02 | JFrog Ltd. | Software pipeline and release validation |
US20220237505A1 (en) * | 2021-01-27 | 2022-07-28 | Salesforce.Com, Inc. | Using container information to select containers for executing models |
US20220237506A1 (en) * | 2021-01-27 | 2022-07-28 | Salesforce.Com, Inc. | Using container and model information to select containers for executing models |
CN113535572B (zh) * | 2021-07-23 | 2024-07-09 | 中信银行股份有限公司 | 服务虚拟化装置及方法 |
US12015540B2 (en) * | 2021-09-07 | 2024-06-18 | Red Hat, Inc. | Distributed data grid routing for clusters managed using container orchestration services |
CN113992748A (zh) * | 2021-09-18 | 2022-01-28 | 上海泛宥信息科技有限公司 | 反向代理方法、系统、介质及终端 |
US11601393B1 (en) * | 2021-10-04 | 2023-03-07 | Cisco Technology, Inc. | Microservice visibility and control |
CN114125059B (zh) * | 2021-10-11 | 2023-08-25 | 国电南瑞科技股份有限公司 | 一种基于容器的监控实时数据缓存系统及方法 |
US12061889B2 (en) | 2021-10-29 | 2024-08-13 | JFrog Ltd. | Software release distribution across a hierarchical network |
CN114401303A (zh) * | 2021-12-20 | 2022-04-26 | 苏州众言网络科技股份有限公司 | 应用于微服务的服务注册与发现方法、系统和装置 |
CN114374743B (zh) * | 2022-01-13 | 2023-08-22 | 上海金融期货信息技术有限公司 | 支持多种服务发现机制的网关路由规则生成方法和系统 |
CN114500637A (zh) * | 2022-02-10 | 2022-05-13 | 广州钛动科技有限公司 | 一种微服务通信框架构建方法、装置、设备和介质 |
US20240143322A1 (en) * | 2022-10-28 | 2024-05-02 | Change Healthcare Holdings, Llc | Systems and methods of using a software developer proxy tool for software development |
CN116846975B (zh) * | 2023-06-07 | 2024-07-30 | 浪潮智慧科技有限公司 | 一种基于api网关的消费服务方法、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559306A (zh) * | 2013-11-18 | 2014-02-05 | 电子科技大学 | 一种通过云平台到数据中心的查询系统及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112574A1 (en) * | 2003-08-05 | 2007-05-17 | Greene William S | System and method for use of mobile policy agents and local services, within a geographically distributed service grid, to provide greater security via local intelligence and life-cycle management for RFlD tagged items |
US11323508B2 (en) * | 2009-05-22 | 2022-05-03 | Comcast Interactive Media, Llc | Web service system and method |
US9119067B2 (en) * | 2011-06-03 | 2015-08-25 | Apple Inc. | Embodiments of a system and method for securely managing multiple user handles across multiple data processing devices |
US8904524B1 (en) * | 2011-09-27 | 2014-12-02 | Emc Corporation | Detection of fast flux networks |
US9229795B2 (en) * | 2013-12-09 | 2016-01-05 | Hewlett Packard Enterprise Development Lp | Execution of end-to-end processes across applications |
WO2015171030A1 (en) | 2014-05-08 | 2015-11-12 | Telefonaktiebolaget L M Ericsson (Publ) | Web application managment |
US20160094653A1 (en) * | 2014-09-30 | 2016-03-31 | International Business Machines Corporation | Optimizing resource downloads or streams using a collection of trusted network connected endpoints |
WO2016099346A1 (en) | 2014-12-15 | 2016-06-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and deployment module for managing a container to be deployed on a software platform |
EP3235325B1 (en) * | 2014-12-16 | 2020-03-25 | Robert Bosch GmbH | Method of transmitting data between network devices over a non-deterministic network |
US9775008B2 (en) * | 2015-01-14 | 2017-09-26 | Kodiak Networks, Inc. | System and method for elastic scaling in a push to talk (PTT) platform using user affinity groups |
-
2016
- 2016-03-15 CN CN201680032286.9A patent/CN107667517B/zh active Active
- 2016-03-15 WO PCT/EP2016/055533 patent/WO2016192866A1/en active Application Filing
- 2016-03-15 US US15/578,077 patent/US10785334B2/en active Active
- 2016-03-15 EP EP16710710.1A patent/EP3304285A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559306A (zh) * | 2013-11-18 | 2014-02-05 | 电子科技大学 | 一种通过云平台到数据中心的查询系统及方法 |
Non-Patent Citations (1)
Title |
---|
NetflixOSS – A Cloud Native Architecture;Adrian Cockcroft;《NETFLIX OSS》;20130913;说明书第67页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3304285A1 (en) | 2018-04-11 |
US10785334B2 (en) | 2020-09-22 |
CN107667517A (zh) | 2018-02-06 |
WO2016192866A1 (en) | 2016-12-08 |
US20180152534A1 (en) | 2018-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107667517B (zh) | 用于能够实现第二容器上的反向代理的在第一服务容器内的被植入代理器 | |
Sarmiento et al. | Decentralized SDN control plane for a distributed cloud-edge infrastructure: A survey | |
US10484337B2 (en) | Scalable proxy clusters | |
US20210042160A1 (en) | Method and system for distributed edge cloud computing | |
US7788522B1 (en) | Autonomous cluster organization, collision detection, and resolutions | |
Goethals et al. | Extending kubernetes clusters to low-resource edge devices using virtual kubelets | |
US20110137991A1 (en) | Systems and methods for management and collaboration in a private network | |
Longo et al. | Stack4things: An openstack-based framework for iot | |
EP4049413A1 (en) | Method and system for distributed edge cloud computing | |
US11368527B2 (en) | Decentralized node finder in multi-cloud computing environment | |
Kohler et al. | ZeroSDN: A highly flexible and modular architecture for full-range distribution of event-based network control | |
Benomar et al. | Cloud-based network virtualization in iot with openstack | |
Alamouti et al. | Hybrid edge cloud: A pragmatic approach for decentralized cloud computing | |
CN115190103A (zh) | 基于服务网格的服务域名解析方法、装置及设备 | |
Benomar et al. | A Stack4Things-based web of things architecture | |
Jain | Introduction to Software Defined Networking (SDN) | |
Soares et al. | Re-designing Cloud platforms for massive scale using a P2P architecture | |
EP4026304B1 (en) | Edge cloud anchoring | |
van der Linde | Enriching Web Applications with Browser-to-Browser Communication | |
Panarello et al. | Cloud federation to elastically increase mapreduce processing resources | |
Alberti et al. | Introducing novagenesis as a novel distributed system-based convergent information architecture | |
US11778025B1 (en) | Cross-region directory service | |
Sabharwal et al. | Getting started with HashiCorp consul | |
US20240311181A1 (en) | Stateful endpoint mobility in a federated cloud computing system | |
Le | OpenStack and Software-Defined Networking: The Enormous Potential of Open Source Software Collaboration |
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 |