在微服务环境中缩放服务发现的制作方法

文档序号:17727675发布日期:2019-05-22 02:37阅读:139来源:国知局
在微服务环境中缩放服务发现的制作方法

本公开总地涉及计算机网络领域,更具体地,涉及在微服务环境中缩放服务发现。



背景技术:

基于容器的微服务是一种正在数据中心/云产业中快速采用的架构。基于容器的微服务不是构建单个巨大的单片应用程序,而是将应用程序分成一组较小的互连微服务。在微服务架构中,服务发现起着非常重要的作用,因为容器实例具有动态指派的网络位置,并且由于自动缩放、故障和升级而动态地改变。当前系统利用服务器端发现负载平衡器,其充当将容器实例与提供微服务的其他容器实例连接的代理。然而,要使服务发现工作,代理需要跟踪每个微服务的所有容器实例。在某些情况下,单个应用程序可以包含数百个服务以及数百个提供各自的微服务的容器实例。因此,在部署多个应用程序的数据中心中,每个服务器端发现负载平衡器或代理可能必须跟踪数十万甚至数百万个容器实例。因此,需要改进。

附图说明

为了描述可以获得本公开的上述特征和其他优点的方式,将通过参考在附图中示出的其特定实施例来呈现上面简要描述的原理的更具体的描述。理解这些附图仅描绘了本公开的示例性实施例,因此将不被认为是限制其范围,通过使用附图用附加特征和细节来描述和解释本文的原理,其中:

图1示出了根据主题技术的一些方面的示例网络设备;

图2a和图2b示出了根据主题技术的一些方面的示例系统实施例;

图3示出了网络结构的示例架构的示意性框图;

图4示出了示例覆盖网络;

图5a-图5d示出了被配置为在微服务环境中缩放服务发现的示例系统;以及

图6示出了在微服务环境中缩放服务发现的示例方法。

具体实施方式

以下阐述的详细描述旨在作为主题技术的各种配置的描述,而非旨在表示可以实践主题技术的唯一配置。附图并入本文并构成详细描述的一部分。详细描述包括用于提供对主题技术的更透彻理解的目的的具体细节。然而,将会清楚且显而易见的是,主题技术不限于本文阐述的具体细节,并且可以在没有这些细节的情况下实践。在一些实例中,结构和组件以框图形式示出,以避免使主题技术的概念模糊。

概述:

在独立权利要求中阐述了本发明的各方面,并且在从属权利要求中阐述了优选特征。一个方面的特征可以单独应用于每个方面或者与其他方面组合应用。

公开了用于在微服务环境中缩放服务发现的系统、方法、和计算机可读存储介质。一种控制器可以在主计算设备上实例化第一容器实例,该第一容器实例提供应用程序的第一微服务。主计算设备可以包括服务发现代理。该控制器可以识别作为第一微服务的依赖项的一组微服务,并利用提供该作为第一微服务的依赖项的一组微服务的容器实例的路由数据来更新服务发现代理。服务发现代理可以使用该路由数据将来自第一容器实例的请求路由到提供该作为第一微服务的依赖项的一组微服务的容器实例。

详细描述:

公开了用于在微服务环境中缩放服务发现的系统和方法。本文公开了如图1至图4所示的示例性系统和网络的简要介绍性描述,接着讨论了在微服务环境中缩放服务发现。本公开现在转到图1。

计算机网络是通过通信链路和段互连的地理上分布的节点集合,用于在诸如个人计算机和工作站之类的端点之间传输数据。可利用许多类型的网络,其类型范围从局域网(lan)和广域网(wan)到覆盖和诸如虚拟可扩展局域网(vxlan)之类的软件定义的网络。

lan通常通过位于同一整体物理位置(诸如建筑物或校园)中的专用私有通信链路来连接节点。另一方面,wan通常通过诸如公共载波电话线、光学光路、同步光学网络(sonet)、或同步数字系列(sdh)链路之类的长距离通信链路连接地理上分散的节点。lan和wan可以包括第2层(l2)和/或第3层(l3)网络和设备。

因特网是连接全世界不同网络的wan的示例,提供各种网络上的节点之间的全局通信。节点通常通过根据诸如传输控制协议/因特网协议(tcp/ip)之类的预定协议交换离散帧或数据分组来通过网络进行通信。在此上下文中,协议可以指代定义节点如何彼此交互的一组规则。计算机网络可以通过诸如路由器之类的中间网络节点进一步互连,以扩展每个网络的有效“大小”。

覆盖网络通常允许在物理网络基础设施上创建和分层虚拟网络。诸如虚拟可扩展lan(vxlan)、使用通用路由封装(nvgre)的网络虚拟化、网络虚拟化覆盖(nvo3)、和无状态传输隧道(stt)之类的覆盖网络协议提供允许通过逻辑隧道跨越l2和l3网络运送网络流量的流量封装方案。这样的逻辑隧道可以通过虚拟隧道端点(vtep)发起和终止。

另外,覆盖网络可以包括虚拟段,诸如vxlan覆盖网络中的vxlan段,其可以包括虚拟l2和/或l3覆盖网络,虚拟机(vm)和微服务容器通过虚拟l2和/或l3覆盖网络进行通信。虚拟段可以通过诸如vxlan网络标识符之类的虚拟网络标识符(vni)来标识,其可以具体地标识关联的虚拟段或域。

网络虚拟化允许在虚拟网络中组合硬件和软件资源。例如,网络虚拟化可以允许多个vm和微服务容器经由相应的虚拟lan(vlan)附接到物理网络。vm和微服务容器可以根据它们各自的vlan进行分组,并且可以与其他vm和微服务容器以及内部或外部网络上的其他设备进行通信。

网络段,诸如物理或虚拟段;网络;设备;端口;物理或逻辑链路;和/或流量一般可以分组为桥接或泛洪域。桥接域或泛洪域可以表示广播域,诸如l2广播域。桥接域或泛洪域可以包括单个子网,但是也可以包括多个子网。另外,桥接域可以与网络设备上的诸如交换机之类的桥接域接口相关联。桥接域接口可以是支持l2桥接网络和l3路由网络之间的流量的逻辑接口。此外,桥接域接口可以支持因特网协议(ip)终止、vpn终止、地址解析处理、mac寻址等。桥接域和桥接域接口都可以由相同的索引或标识符来标识。

另外,端点组(epg)可以在网络中用于将应用程序映射到网络。具体而言,epg可以使用网络中的应用端点的分组(例如,微服务容器)来将连通性和策略应用于该组。epg可以充当用于微服务容器、应用程序、或应用程序组件、以及用于实现转发和策略逻辑的层的桶或集合的容器。epg还通过改为使用逻辑应用程序边界来允许将网络策略、安全性和转发与寻址分离。

还可以在一个或多个网络中提供云计算以使用共享资源来提供计算服务。云计算通常可以包括基于因特网的计算,其中计算资源被动态供应并且从经由网络可获得的资源集合(例如,“云”)按需分配给客户端或用户计算机或其他设备。例如,云计算资源可以包括任何类型的资源,诸如计算、存储和网络设备、虚拟机(vm)、微服务容器等。例如,资源可以包括服务设备(防火墙、深度分组检查器、流量监视器、负载平衡器等),计算/处理设备(服务器、cpu、存储器、暴力处理能力),存储设备(例如,网络附加存储、存储区域网络设备),等等。此外,这样的资源可用于支持虚拟网络、虚拟机(vm)、微服务容器、数据库、应用程序(app)等。

云计算资源可以包括“私有云”、“公共云”、和/或“混合云”。“混合云”可以是由两个或更多个通过技术互操作或联合的云组成的云基础设施。实质上,混合云是私有云和公共云之间的交互,其中私有云加入公共云并以安全且可扩展的方式利用公共云资源。也可以经由覆盖网络中的虚拟网络(诸如vxlan)供应云计算资源。

图1示出了适用于实现本技术的示例性网络设备110。网络设备110包括主中央处理单元(cpu)162、接口168、和总线115(例如,pci总线)。当在适当的软件或固件的控制下动作时,cpu162负责执行例如分组管理、错误检测、和/或路由功能、这种策略实施。cpu162优选地在包括操作系统和任何适当的应用软件在内的软件的控制下完成所有这些功能。cpu162可以包括一个或多个处理器163,诸如来自motorola微处理器家族或mips微处理器家族的处理器。在替代实施例中,处理器163是用于控制网络设备110的操作的专门设计的硬件。在特定实施例中,存储器161(诸如非易失性ram和/或rom)也形成cpu162的一部分。然而,有许多不同的方式可以将内存耦合到系统。

接口168通常被提供作为接口卡(有时称为“线卡”)。一般而言,它们控制通过网络发送和接收数据分组,并且有时支持与网络设备110一起使用的其他外围设备。可以提供的接口包括以太网接口、帧中继接口、电缆接口、dsl接口、令牌环接口等。此外,可以提供各种非常高速的接口,诸如快速令牌环接口、无线接口、以太网接口、千兆位以太网接口、atm接口、hssi接口、pos接口、fddi接口等。一般而言,这些接口可以包括适合于与适当介质进行通信的端口。在某些情况下,它们还可包括独立的处理器,在某些情况下还可包括易失性ram。独立处理器可以控制诸如分组交换、介质控制、和管理之类的通信密集型任务。通过为通信密集型任务提供单独的处理器,这些接口允许主微处理器162有效地执行路由计算、网络诊断、安全功能等。

尽管图1中所示的系统是本技术的一个特定网络设备,但它决不是可以实现本技术的唯一网络设备架构。例如,经常使用具有处理通信以及路由计算等的单个处理器的架构。另外,其他类型的接口和介质也可以与网络设备一起使用。

不管网络设备的配置如何,它可以采用被配置为存储用于通用网络操作的程序指令的一个或多个存储器或存储器模块(包括存储器161)以及用于本文所述的漫游、路由优化和路由功能的机制。例如,程序指令可以控制操作系统和/或一个或多个应用程序的操作。一个或多个存储器也可被配置为存储诸如移动性绑定、注册、和关联表之类的表。

图2a和图2b示出了示例性可能系统实施例。当实施本技术时,更合适的实施例对于本领域普通技术人员来说将是显而易见的。本领域普通技术人员还将容易地认识到其他系统实施例是可能的。

图2a示出了传统的系统总线计算系统架构200,其中,系统的组件使用总线205彼此进行电气通信。示例性系统200包括处理单元(cpu或处理器)210以及将包括系统存储器215(诸如只读存储器(rom)220和随机存取存储器(ram)225)在内的各种系统组件耦合到处理器210的系统总线205。系统200可以包括与处理器210直接连接、紧邻处理器210或者集成为处理器210的一部分的高速存储器的高速缓存。系统200可以将数据从存储器215和/或存储设备230复制到高速缓存212,以便由处理器210快速访问。这样,高速缓存可以提供性能提升,这避免了处理器210在等待数据时的延迟。这些和其他模块可以控制或被配置为控制处理器210以执行各种动作。其他系统存储器215也可供使用。存储器215可以包括具有不同性能特性的多种不同类型的存储器。处理器210可以包括被配置为控制处理器210的任何通用处理器和硬件模块或软件模块(诸如在存储设备230中存储的模块1232、模块2234、和模块3236),以及专用处理器,其中软件指令被结合到实际的处理器设计中。处理器210可以基本上是完全自包含的计算系统,包含多个核心或处理器、总线、存储器控制器、高速缓存等。多核心处理器可以是对称的或非对称的。

为了使用户能与计算设备200进行交互,输入设备245可以表示任何数量的输入机制,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、动作输入、语音等。输出设备235也可以是本领域技术人员已知的多种输出机制中的一种或多种。在一些情况下,多模式系统可以使用户能够提供多种类型的输入以与计算设备200通信。通信接口240通常可以支配和管理用户输入和系统输出。对在任何特定硬件布置上进行操作没有限制,因此这里的基本特征随着其发展可以容易地替换以用于改进的硬件或固件布置。

存储设备230是非易失性存储器,并且可以是硬盘或者可以存储可由计算机访问的数据的其他类型的计算机可读介质,诸如磁带盒、闪存卡、固态存储器设备、数字通用盘、盒式磁带、随机存取存储器(ram)225、只读存储器(rom)220及其混合。

存储设备230可以包括用于控制处理器210的软件模块232、234、236。其他硬件或软件模块被预计到。存储设备230可以连接到系统总线205。在一个方面,执行特定功能的硬件模块可以包括与必要的硬件组件(诸如处理器210、总线205、输出设备235等)有关地在计算机可读介质中存储的软件组件,以执行该功能。

图2b示出了可以用于执行所描述的方法以及生成和显示图形用户界面(gui)的具有芯片组架构的计算机系统250。计算机系统250是可以用于实现所公开技术的计算机硬件、软件和固件的示例。系统250可以包括处理器255,其表示能够执行被配置为执行所标识的计算的软件、固件、和硬件的任何数量的物理和/或逻辑上不同的资源。处理器255可以与芯片组260通信,芯片组260可以控制到处理器255的输入和从处理器255的输出。在该示例中,芯片组260将信息输出到诸如显示器之类的输出265,并且可以对存储设备270读取和写入信息,存储设备270可以包括例如磁介质和固态介质。芯片组260还可以从ram275读取数据和向ram275写入数据。可以提供用于与各种用户接口组件285接口连接的桥接器280,用于与芯片组260接口连接。这种用户接口组件285可以包括键盘、麦克风、触摸检测、和处理电路、诸如鼠标之类的指点设备,等等。一般而言,到系统250的输入可以来自机器生成和/或人类生成的各种源中的任何一种。

芯片组260还可以与可以具有不同物理接口的一个或多个通信接口290接口连接。这种通信接口可以包括用于有线和无线局域网的接口、用于宽带无线网络以及个人区域网络的接口。用于生成、显示、和使用本文公开的gui的方法的一些应用可以包括通过物理接口接收有序数据集或者通过处理器255分析在存储装置270或ram275中存储的数据而由机器本身生成。另外,机器可以经由用户界面组件285接收来自用户的输入,并通过使用处理器255解释这些输入来执行适当的功能,诸如浏览功能。

可以认识到,示例性系统200和250可以具有多于一个的处理器210,或者是联网在一起以提供更大处理能力的计算设备的组或集群的一部分。

图3示出了用于网络结构312的示例架构300的示意性框图。网络结构312可以包括连接到网络结构312中的叶交换机304a、304b、304c...304n(统称为“304”)的主干交换机302a、302b,...,302n(统称为“302”)。

主干交换机302可以是结构312中的l3交换机。然而,在某些情况下,主干交换机302也可以执行l2功能,或以其他方式执行l2功能。另外,主干交换机302可以支持各种能力,诸如40或10gbps以太网速度。为此,主干交换机302可以包括一个或多个40千兆位以太网端口。每个端口也可以被分割以支持其他速度。例如,40千兆位以太网端口可以分割为四个10千兆位以太网端口。

在某些实施例中,一个或多个主干交换机302可被配置为容宿代理功能,该代理功能代表不具有映射数据库中的定位器映射的叶交换机304执行对端点地址标识符到这种映射的查找。代理功能可以通过将分组解析为封装的租户分组以获取租户的目的地定位器地址来这么做。然后,主干交换机302可以执行其本地映射数据库的查找以确定分组的正确定位器地址,并将分组转发到定位器地址,而不改变分组头部中的某些字段。

当在主干交换机302i处接收到分组时,主干交换机302i可以首先检查目的地定位器地址是否是代理地址。如果是,则主干交换机302i可以执行如前所述的代理功能。如果不是,则主干交换机302i可以在其转发表中查找定位符并相应地转发该分组。

主干交换机302连接到结构312中的叶交换机304。叶交换机304可以包括接入端口(或非结构端口)和结构端口。结构端口可以向主干交换机302提供上行链路,而接入端口可以提供设备、主机、端点、vm、微服务容器、或外部网络到结构312的连通性。

叶交换机304可以驻留在结构312的边缘,因此可以表示物理网络边缘。在某些情况下,叶交换机304可以是根据架顶式(“tor”)架构配置的tor交换机。在其他情况下,叶交换机304可以是任何特定拓扑(诸如行尾(eor)或行中间(mor)拓扑)中的聚合交换机。例如,叶交换机304也可以表示聚合交换机。

叶交换机304可以负责路由和/或桥接数据分组以及应用网络策略。在某些情况下,叶交换机可以执行一个或多个附加功能,诸如实现映射缓存、当缓存中存在未命中时将分组发送到代理功能、封装分组、强制执行入口或出口策略等。

另外,叶交换机304可以包含虚拟交换功能,诸如虚拟隧道端点(vtep)功能,如下面在图4中的vtep408的讨论中所解释的。为此,叶交换机304可以将结构312连接到覆盖网络,例如图4中所示的覆盖网络400。

结构312中的网络连通性可以流过叶交换机304。这里,叶交换机304可以向结构312提供服务器、资源、端点、外部网络、微服务容器或vm的接入,并且可以将叶交换机304彼此连接。在某些情况下,叶交换机304可以将epg连接到结构312和/或任何外部网络。例如,每个epg可以经由叶交换机304之一而连接到结构312。

端点310a-e(统称为“310”)可以经由叶交换机304连接到结构312。例如,端点310a和310b可以直接连接到叶交换机304a,叶交换机304a可以将端点310a和310b连接到结构312和/或任何其他一个叶交换机304。类似地,端点310e可以直接连接到叶交换机304c,叶交换机304c可以将端点310e连接到结构312和/或任何其他叶交换机304。另一方面,端点310c和310d可以经由l2网络306连接到叶交换机304b。类似地,广域网(wan)可以经由l3网络308连接到叶交换机304c或304d。

端点310可以包括任何通信设备,诸如计算机、服务器、交换机、路由器等。在某些情况下,端点310可以包括配置有vtep功能的服务器、管理程序、或交换机,vtep功能将覆盖网络(诸如下面的覆盖网络400)与结构312连接。例如,在某些情况下,端点310可以表示图4中所示的vtep408a-d中的一个或多个。这里,vtep408a-d可以经由叶交换机304连接到结构312。覆盖网络可以容宿物理设备(诸如服务器)、应用程序、epg、虚拟段、虚拟工作负载等。此外,端点310可以容宿(一个或多个)虚拟工作负载、集群、以及应用程序或服务,其可以与结构312或任何其他设备或网络(包括外部网络)连接。例如,一个或多个端点310可以容宿或连接到负载平衡器集群或各种应用程序的epg。

尽管本文将结构312示出并描述为示例性叶-主干架构,但是本领域普通技术人员将容易认识到,可以基于任何网络结构(包括任何数据中心或云网络结构)来实现主题技术。的确,本文预计到其他架构、设计、基础设施、和变型。

图4示出了示例性覆盖网络400。覆盖网络400使用覆盖协议(诸如vxlan、nvgre、nvo3、或stt)来封装l2和/或l3分组中的流量,其可以穿过网络中的覆盖l3边界。如图4中所示,覆盖网络400可以包括经由网络402互连的主机406a-d。

例如,网络402可以包括分组网络,诸如ip网络。另外,网络402可以将覆盖网络400与图3中的结构312连接。例如,vtep408a-d可以经由网络402与结构312中的叶交换机304连接。

主机406a-d包括虚拟隧道端点(vtep)408a-d,其可以是被配置为针对各种虚拟网络标识符(vnid)410a-i根据网络400的特定覆盖协议来封装和解封装数据流量的虚拟节点或交换机。另外,主机406a-d可以包括包含vtep功能的服务器、管理程序、以及配置有vtep功能的物理交换机,诸如l3交换机。例如,主机406a和406b可以是被配置为运行vtep408a-b的物理交换机。这里,主机406a和406b可以连接到服务器404a-d,服务器404a-d在某些情况下可以例如包括通过微服务容器或加载在服务器上的vm的虚拟工作负载。

在一些实施例中,网络400可以是vxlan网络,并且vtep408a-d可以是vxlan隧道端点(vtep)。然而,如本领域普通技术人员将容易认识到的,网络400可以表示任何类型的覆盖网络或软件定义的网络,诸如nvgre、stt、或甚至尚未发明的覆盖技术。

vnid可以表示覆盖网络400中的隔离虚拟网络。每个覆盖隧道(vtep408a-d)可以包括一个或多个vnid。例如,vtep408a可以包括vnid1和2,vtep408b可以包括vnid1和2,vtep408c可以包括vnid1和2,并且vtep408d可以包括vnid1-3。如本领域普通技术人员将容易认识到的,在其他实施例中,任何特定vtep可以具有许多vnid,包括多于图4中所示的3个vnid。

可以根据特定vnid在逻辑上隔离覆盖网络400中的流量。这样,旨在用于vnid1的流量可以由驻留在vnid1中的设备访问,而驻留在其他vnid(例如,vnid2和3)中的其他设备可以被阻止访问这样的流量。换句话说,连接到特定vnid的设备或端点可以与连接到相同特定vnid的其他设备或端点通信,而来自单独vnid的流量可以被隔离,以防止其他特定vnid中的设备或端点访问不同vnid中的流量。

服务器404a-d和vm404e-i可以连接到其相应的vnid或虚拟段,并与驻留在相同的vnid或虚拟段中的其他服务器或vm进行通信。例如,服务器404a可以与服务器404c以及vm404e和404g进行通信,因为它们都驻留在相同的vnid(即,vnid1)中。类似地,服务器404b可以与vm404f和404h进行通信,因为它们都驻留在vnid2中。vm404e-i可以容宿虚拟工作负载,其可以例如包括应用程序工作负载、资源、和服务。然而,在某些情况下,服务器404a-d可以通过在服务器404a-d上容宿的vm来类似地容宿虚拟工作负载。另外,服务器404a-d和vm404e-i中的每一个可以表示单个服务器或vm,但是也可以表示多个服务器或vm,诸如服务器或vm的集群。

vtep408a-d可以根据所实现的特定覆盖协议(诸如vxlan)封装针对覆盖网络400中的各种vnid1-3的分组,所以流量可以被恰当地发送到正确的vnid和一个或多个接收者。另外,当交换机、路由器、或其他网络设备接收到要发送到覆盖网络400中的接收者的分组时,它可以分析路由表(诸如查找表)以确定需要在哪里发送这样的分组以使得流量到达适当的接收者。例如,如果vtep408a从端点404b接收到旨在用于端点404h的分组,则vtep408a可以分析路由表,该路由表将预期端点(端点404h)映射到被配置为处理旨在用于端点404h的通信的特定交换机。当vtep408a从端点404b接收到该分组时,vtep408a可能最初不知道应该将这样的分组发送到vtep408d以便到达端点404h。因此,通过分析路由表,vtep408a可以查找作为预期接收者的端点404h,并且确定该分组应该被发送到如在路由表中基于端点到交换机的映射或绑定所指定的vtep408d,所以该分组可以按预期发送到端点404h并由端点404h接收。

然而,继续前面的示例,在许多情况下,vtep408a可以分析路由表并且未能找到与预期接收者(例如,端点404h)相关联的任何绑定或映射。这里,路由表可能尚未学习关于端点404h的路由信息。在这种情况下,vtep408a很可能广播或多播该分组以确保与端点404h相关联的恰当交换机可以接收该分组并进一步将其路由到端点404h。

在某些情况下,可以通过移除不必要或陈旧的条目并添加新的或必要的条目来动态地和连续地修改路由表,以便使路由表保持最新、准确和高效,同时减小或限制表的大小。

如本领域普通技术人员将容易认识到的,上面提供的示例和技术仅仅是为了清楚和解释的目的,并且可以包括许多附加的概念和变型。

根据网络400中的期望实现,可以使用各种联网和消息传递协议,包括但不限于tcp/ip、开放系统互连(osi)、文件传输协议(ftp)、通用即插即用(upnp)、网络文件系统(nfs)、通用因特网文件系统(cifs)、appletalk等。如本领域技术人员将认识到的,图4中所示的网络400用于解释的目的,在根据本公开的各种实施例的网络平台的配置中可以适当地以许多变型来实现网络系统。

已经公开了示例性系统和网络的简要介绍性描述,讨论现在转向在微服务环境中缩放服务发现。基于容器的微服务不是构建一个巨大的单片应用程序,而是将应用程序分成一组较小的互连微服务。可以实例化多个容器实例以提供各种微服务,从而允许根据需要容易地缩放应用程序。每个实例化的容器实例可以被指派其自己的ip地址和端口号,并且被遍及网络中各个节点上的数据中心分布。ip地址和端口号可以用于在容器实例之间提供基于网络的通信以提供应用程序。

服务器端服务发现代理可以用于管理容器实例之间的通信。主机节点可以包括服务发现代理,其充当负载平衡器/代理,以将主机节点上的容器实例与提供应用程序的其他微服务的其他容器实例连接。主机上的服务发现代理可以接收和引导去往和来自容器实例的分组。服务发现代理可以维护网络中的其他容器实例的路由数据(例如,ip地址和端口值),其可以用于将接收到的请求路由到适当的容器实例。

为了减少需要由服务发现代理跟踪的容器实例的数量,网络中的控制器可以被配置为基于主机节点上的容器实例更新服务发现代理以提供新的路由数据或移除路由数据。例如,控制器可以将服务发现代理更新为仅包括如下容器实例的路由数据:该容器实例提供作为由在主机节点上实例化的容器实例提供的微服务的依赖项的微服务。因此,服务发现代理将不包括不必要的路由数据,从而减少了存储器使用并增加了吞吐量。

图5a-图5d示出了被配置为在微服务环境中缩放服务发现的示例系统。如图所示,在图5a中,系统500包括控制器502和主计算设备504。控制器500和主计算设备504可以是网络中的任何类型的计算设备、节点、vm等。虽然控制器502和主计算设备504被示出为单独的实体,但是在某些实施例中,控制器502和主计算设备504可以驻留在同一计算设备上。例如,控制器502可以驻留在主计算设备504上。

主计算设备504可以被配置为容宿一个或多个容器实例,每个容器实例提供微服务。可以为每个容器实例指派唯一的ip地址和端口号,以允许在整个网络中分布的容器实例之间进行基于网络的通信。

主计算设备504可以包括服务发现代理506,其被配置为管理主计算设备504上包括的容器实例与在整个网络中分布的其他容器实例之间的通信。例如,服务发现代理506可以是负载平衡器和/或代理,其被配置为检查和引导去往和来自容器实例的分组。例如,主计算设备504上的本地容器实例可以发送由服务发现代理506检查的请求,并且服务发现代理506然后可以将这些请求路由到网络中的适当容器实例。为实现此目的,服务发现代理506可以维护网络中的其他容器实例的路由数据(例如,ip地址和端口值),其可以用于将请求路由到适当的容器实例。

控制器502可以被配置为更新服务发现代理506以减少由服务发现代理506维护的路由数据的量。应用程序的一些微服务可以与该应用程序的作为依赖项的其他微服务有关。例如,一些微服务可能需要一个或多个微服务的功能,并且作为其运行的一部分可能需要对这些微服务进行应用程序编程接口(api)调用。作为示例,提供应用程序的支付功能的微服务可能需要使用提供通知功能的另一微服务来向用户通知支付已完成。因此,通知微服务是支付微服务的依赖项。

虽然微服务可以与作为微服务的依赖项的一个或多个其他微服务的集合有关,但是对于应用程序的所有微服务而言情况并非如此。一些微服务可能没有任何依赖项。另外,微服务可能仅与应用程序的总微服务的子集有关,这意味着并非所有微服务都是彼此的依赖项。因此,服务发现代理506仅需要维护如下容器实例的路由数据:该容器实例提供作为由主计算设备504上的容器实例提供的微服务的依赖项的微服务。

控制器502可以被配置为更新服务发现代理506以仅包括基于主计算设备504上的容器实例所必需的路由数据。例如,响应于在主计算设备504上实例化容器实例,控制器502可以确定作为由新实例化的容器实例提供的微服务的依赖项的一组微服务,然后用提供该组微服务的容器实例的路由数据来更新服务发现代理506。同样地,响应于从主计算设备504中移除容器实例,控制器502可以更新服务发现代理506以移除作为由移除的容器实例提供的微服务的依赖项的容器实例的路由数据。例如,控制器502可以检查剩余的容器实例并确定它们的相应依赖项。然后,控制器502可以相应地更新路由数据。

在某些实施例中,控制器502可以维护微服务依赖表,该表标识特定应用程序的依赖项。响应于确定已经从主计算设备504添加或移除了容器实例,控制器502可以搜索微服务依赖表以识别作为由添加或移除的容器实例提供的微服务的依赖项的一组微服务。替代地,在一些实施例中,提供特定微服务的容器实例都可以被添加到端点组并且与定义作为依赖项的微服务的基于组的策略相关联。响应于确定已经从主计算设备504添加或移除了容器实例,控制器502可以基于与添加或移除的容器实例相关联的基于组的策略来收集作为微服务的依赖项的一组微服务。

图5b示出了在已经在主计算设备504上实例化容器实例之后的系统500。如图所示,已经在主计算设备504上实例化容器实例508。容器实例508可以提供微服务1。如进一步所示,控制器502已经将服务发现代理506更新为包括容器实例510的路由数据,容器实例510提供作为由容器实例508提供的微服务1的依赖项的一组微服务。为了利用由容器实例510之一提供的微服务,容器实例508可以与服务发现代理506进行通信,服务发现代理506充当负载平衡器和/或代理并将请求路由到容器实例510之一。

图5c示出了在已经在主计算设备504上实例化第二容器实例之后的系统500。如图所示,已经在容器实例504上实例化容器实例512。容器实例512可以提供微服务2。另外,控制器502已经将服务发现代理506更新为包括容器实例514的路由数据,容器实例514提供作为微服务2的依赖项的微服务。在一些情况下,微服务1和微服务2都可以共享某些依赖项。因此,在主计算设备504上实例化容器实例512时,控制器502可以识别作为微服务2的未被包括在作为微服务1的依赖项的微服务集合中的依赖项的微服务子集。由于服务发现代理506已经具有提供作为微服务1和微服务2的依赖项的任何微服务的容器实例的路由数据,因此控制器502可以利用作为微服务2的未包括在作为微服务1的依赖项的微服务集合中的依赖项的微服务子集的路由数据来更新服务发现代理506。

图5d示出了在已经从主计算设备504中移除容器实例之后的系统500。如图所示,已经从主计算设备504中移除了容器实例510。另外,控制器502已经移除了容器实例514,其提供作为微服务2的依赖项但不是微服务1的依赖项的服务。服务发现代理506可以维护为微服务1和微服务2两者提供微服务的容器实例的路由数据,以继续服务容器实例508。

图6示出了在微服务环境中缩放服务发现的示例方法600。应当理解,除非另有说明,否则可以在各种实施例的范围内以类似或替代的顺序或并行地执行额外的、更少的或替代的步骤。

在步骤602,控制器可以在主计算设备上实例化第一容器实例,其提供应用程序的第一微服务。主计算设备可以包括服务发现代理,其被配置为管理第一容器实例与其他主计算设备上的容器实例之间的通信。

在步骤604,控制器可以识别作为第一微服务的依赖项的一组微服务。例如,主机控制器可以搜索应用程序的微服务依赖表以寻找作为第一微服务的依赖项的一组微服务。微服务依赖表可以列出应用程序的微服务及其相应的依赖项。

作为另一示例,控制器可以根据与指派了第一容器实例的端点组相关联的基于组的策略来收集作为第一微服务的依赖项的一组微服务。该端点组可以仅包括提供第一微服务的容器实例,并且基于组的策略可以标识第一微服务的依赖项。

在步骤606,控制器可以利用提供作为第一微服务的依赖项的一组微服务的容器实例的路由数据来更新服务发现代理。服务发现代理可以使用该路由数据将来自第一容器实例的请求路由到提供作为第一微服务的依赖项的一组微服务的容器实例。

如本领域普通技术人员将容易认识到的,上面提供的示例和技术仅仅是为了清楚和解释的目的,并且可以包括许多附加的概念和变型。

为了解释的清楚,在一些情况下,本技术可被呈现为包括单独的功能块,其包括包含以软件或硬件和软件的组合体现的方法中的设备、设备组件、步骤或例程的功能块。

在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含位流等的线缆或无线信号。然而,当提到时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身之类的介质。

可以使用存储在计算机可读介质中或以其他方式可从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以例如包括使通用计算机、专用计算机或专用处理设备执行某一功能或功能组或以其他方式将通用计算机、专用计算机或专用处理设备配置为执行某一功能或功能组的指令和数据。所使用的部分计算机资源可通过网络访问。计算机可执行指令可以例如是二进制文件、中间格式指令(诸如汇编语言)、固件或源代码。可用于存储指令、所使用的信息和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘,闪存,具有非易失性存储器的usb设备,联网存储设备,等等。

实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用各种形状因子中的任何一种。这种形状因子的典型示例包括膝上型计算机、智能电话、小型个人计算机、个人数字助理、机架装置、独立设备等。本文描述的功能也可以体现在外围设备或附加卡中。作为另一示例,这样的功能还可以在不同芯片之间的电路板上实现,或者在单个设备中执行的不同处理中实现。

指令、用于传送这些指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的装置。

尽管使用各种示例和其他信息来解释所附权利要求范围内的方面,但是不应基于这些示例中的特定特征或布置来暗示对权利要求的限制,因为普通技术人员将能够使用这些示例得到各种各样的实现。另外,尽管可能已经用特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是将会理解,所附权利要求中定义的主题不必限于这些描述的特征或动作。例如,这样的功能可以以不同方式分布或者在除了这里标识的那些之外的组件中执行。而是,所公开的特征和步骤被公开为所附权利要求范围内的系统组件和方法的示例。另外,叙述集合“中的至少一个”的权利要求语言表明该集合中的一个成员或该集合的多个成员满足该权利要求。

为了解释的清楚,在一些情况下,本技术可被呈现为包括单独的功能块,其包括包含以软件或硬件和软件的组合体现的方法中的设备、设备组件、步骤或例程的功能块。

注意,在某些示例实现中,本文概述的优化和/或放置功能可以通过在一个或多个有形的非暂态介质中编码的逻辑(例如,在专用集成电路[asic]、数字信号处理器[dsp]指令、要由处理器或其他类似机器等执行的软件[可能包括目标代码和源代码]中提供的嵌入式逻辑)来实现。计算机可读存储设备、介质和存储器可以包括包含位流等的线缆或无线信号。然而,当提到时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身之类的介质。

可以使用存储在计算机可读介质中或以其他方式可从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以例如包括使通用计算机、专用计算机或专用处理设备执行某一功能或功能组或以其他方式将通用计算机、专用计算机或专用处理设备配置为执行某一功能或功能组的指令和数据。所使用的部分计算机资源可通过网络访问。计算机可执行指令可以例如是二进制文件、中间格式指令(诸如汇编语言)、固件或源代码。可用于存储指令、所使用的信息和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘,闪存,具有非易失性存储器的usb设备,联网存储设备,等等。

实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用各种形状因子中的任何一种。这种形状因子的典型示例包括膝上型计算机、智能电话、小型个人计算机、个人数码助理等。本文描述的功能也可以体现在外围设备或附加卡中。作为另一示例,这样的功能还可以在不同芯片之间的电路板上实现,或者在单个设备中执行的不同处理中实现。

指令、用于传送这些指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的装置。

尽管使用各种示例和其他信息来解释所附权利要求范围内的方面,但是不应基于这些示例中的特定特征或布置来暗示对权利要求的限制,因为普通技术人员将能够使用这些示例得到各种各样的实现。另外,尽管可能已经用特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是将会理解,所附权利要求中定义的主题不必限于这些描述的特征或动作。例如,这样的功能可以以不同方式分布或者在除了这里标识的那些之外的组件中执行。而是,所公开的特征和步骤被公开为所附权利要求范围内的系统组件和方法的示例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1