CN109791482B - 用于在微服务环境中缩放服务发现的方法和装置 - Google Patents

用于在微服务环境中缩放服务发现的方法和装置 Download PDF

Info

Publication number
CN109791482B
CN109791482B CN201780045225.0A CN201780045225A CN109791482B CN 109791482 B CN109791482 B CN 109791482B CN 201780045225 A CN201780045225 A CN 201780045225A CN 109791482 B CN109791482 B CN 109791482B
Authority
CN
China
Prior art keywords
microservices
container
dependencies
microservice
service discovery
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
Application number
CN201780045225.0A
Other languages
English (en)
Other versions
CN109791482A (zh
Inventor
杨义
沃伊切赫·德克
赛义德·巴希鲁丁·艾默德
桑贾伊·阿格拉瓦
鲁奇尔·古普塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN109791482A publication Critical patent/CN109791482A/zh
Application granted granted Critical
Publication of CN109791482B publication Critical patent/CN109791482B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5015Service provider selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

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

Description

用于在微服务环境中缩放服务发现的方法和装置
技术领域
本公开总地涉及计算机网络领域,更具体地,涉及在微服务环境中缩放服务发现。
背景技术
基于容器的微服务是一种正在数据中心/云产业中快速采用的架构。基于容器的微服务不是构建单个巨大的单片应用程序,而是将应用程序分成一组较小的互连微服务。在微服务架构中,服务发现起着非常重要的作用,因为容器实例具有动态指派的网络位置,并且由于自动缩放、故障和升级而动态地改变。当前***利用服务器端发现负载平衡器,其充当将容器实例与提供微服务的其他容器实例连接的代理。然而,要使服务发现工作,代理需要跟踪每个微服务的所有容器实例。在某些情况下,单个应用程序可以包含数百个服务以及数百个提供各自的微服务的容器实例。因此,在部署多个应用程序的数据中心中,每个服务器端发现负载平衡器或代理可能必须跟踪数十万甚至数百万个容器实例。因此,需要改进。
附图说明
为了描述可以获得本公开的上述特征和其他优点的方式,将通过参考在附图中示出的其特定实施例来呈现上面简要描述的原理的更具体的描述。理解这些附图仅描绘了本公开的示例性实施例,因此将不被认为是限制其范围,通过使用附图用附加特征和细节来描述和解释本文的原理,其中:
图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总线)。当在适当的软件或固件的控制下动作时,CPU 162负责执行例如分组管理、错误检测、和/或路由功能、这种策略实施。CPU 162优选地在包括操作***和任何适当的应用软件在内的软件的控制下完成所有这些功能。CPU 162可以包括一个或多个处理器163,诸如来自Motorola微处理器家族或MIPS微处理器家族的处理器。在替代实施例中,处理器163是用于控制网络设备110的操作的专门设计的硬件。在特定实施例中,存储器161(诸如非易失性RAM和/或ROM)也形成CPU 162的一部分。然而,有许多不同的方式可以将内存耦合到***。
接口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中存储的模块1 232、模块2 234、和模块3 236),以及专用处理器,其中软件指令被结合到实际的处理器设计中。处理器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还可以从RAM 275读取数据和向RAM 275写入数据。可以提供用于与各种用户接口组件285接口连接的桥接器280,用于与芯片组260接口连接。这种用户接口组件285可以包括键盘、麦克风、触摸检测、和处理电路、诸如鼠标之类的指点设备,等等。一般而言,到***250的输入可以来自机器生成和/或人类生成的各种源中的任何一种。
芯片组260还可以与可以具有不同物理接口的一个或多个通信接口290接口连接。这种通信接口可以包括用于有线和无线局域网的接口、用于宽带无线网络以及个人区域网络的接口。用于生成、显示、和使用本文公开的GUI的方法的一些应用可以包括通过物理接口接收有序数据集或者通过处理器255分析在存储装置270或RAM 275中存储的数据而由机器本身生成。另外,机器可以经由用户界面组件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中的VTEP 408的讨论中所解释的。为此,叶交换机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中所示的VTEP 408A-D中的一个或多个。这里,VTEP 408A-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连接。例如,VTEP 408A-D可以经由网络402与结构312中的叶交换机304连接。
主机406A-D包括虚拟隧道端点(VTEP)408A-D,其可以是被配置为针对各种虚拟网络标识符(VNID)410A-I根据网络400的特定覆盖协议来封装和解封装数据流量的虚拟节点或交换机。另外,主机406A-D可以包括包含VTEP功能的服务器、管理程序、以及配置有VTEP功能的物理交换机,诸如L3交换机。例如,主机406A和406B可以是被配置为运行VTEP 408A-B的物理交换机。这里,主机406A和406B可以连接到服务器404A-D,服务器404A-D在某些情况下可以例如包括通过微服务容器或加载在服务器上的VM的虚拟工作负载。
在一些实施例中,网络400可以是VXLAN网络,并且VTEP 408A-D可以是VXLAN隧道端点(VTEP)。然而,如本领域普通技术人员将容易认识到的,网络400可以表示任何类型的覆盖网络或软件定义的网络,诸如NVGRE、STT、或甚至尚未发明的覆盖技术。
VNID可以表示覆盖网络400中的隔离虚拟网络。每个覆盖隧道(VTEP 408A-D)可以包括一个或多个VNID。例如,VTEP 408A可以包括VNID 1和2,VTEP 408B可以包括VNID 1和2,VTEP 408C可以包括VNID 1和2,并且VTEP 408D可以包括VNID 1-3。如本领域普通技术人员将容易认识到的,在其他实施例中,任何特定VTEP可以具有许多VNID,包括多于图4中所示的3个VNID。
可以根据特定VNID在逻辑上隔离覆盖网络400中的流量。这样,旨在用于VNID 1的流量可以由驻留在VNID 1中的设备访问,而驻留在其他VNID(例如,VNID 2和3)中的其他设备可以被阻止访问这样的流量。换句话说,连接到特定VNID的设备或端点可以与连接到相同特定VNID的其他设备或端点通信,而来自单独VNID的流量可以被隔离,以防止其他特定VNID中的设备或端点访问不同VNID中的流量。
服务器404A-D和VM 404E-I可以连接到其相应的VNID或虚拟段,并与驻留在相同的VNID或虚拟段中的其他服务器或VM进行通信。例如,服务器404A可以与服务器404C以及VM 404E和404G进行通信,因为它们都驻留在相同的VNID(即,VNID 1)中。类似地,服务器404B可以与VM 404F和404H进行通信,因为它们都驻留在VNID 2中。VM404E-I可以容宿虚拟工作负载,其可以例如包括应用程序工作负载、资源、和服务。然而,在某些情况下,服务器404A-D可以通过在服务器404A-D上容宿的VM来类似地容宿虚拟工作负载。另外,服务器404A-D和VM 404E-I中的每一个可以表示单个服务器或VM,但是也可以表示多个服务器或VM,诸如服务器或VM的集群。
VTEP 408A-D可以根据所实现的特定覆盖协议(诸如VXLAN)封装针对覆盖网络400中的各种VNID 1-3的分组,所以流量可以被恰当地发送到正确的VNID和一个或多个接收者。另外,当交换机、路由器、或其他网络设备接收到要发送到覆盖网络400中的接收者的分组时,它可以分析路由表(诸如查找表)以确定需要在哪里发送这样的分组以使得流量到达适当的接收者。例如,如果VTEP 408A从端点404B接收到旨在用于端点404H的分组,则VTEP408A可以分析路由表,该路由表将预期端点(端点404H)映射到被配置为处理旨在用于端点404H的通信的特定交换机。当VTEP 408A从端点404B接收到该分组时,VTEP 408A可能最初不知道应该将这样的分组发送到VTEP 408D以便到达端点404H。因此,通过分析路由表,VTEP 408A可以查找作为预期接收者的端点404H,并且确定该分组应该被发送到如在路由表中基于端点到交换机的映射或绑定所指定的VTEP 408D,所以该分组可以按预期发送到端点404H并由端点404H接收。
然而,继续前面的示例,在许多情况下,VTEP 408A可以分析路由表并且未能找到与预期接收者(例如,端点404H)相关联的任何绑定或映射。这里,路由表可能尚未学习关于端点404H的路由信息。在这种情况下,VTEP 408A很可能广播或多播该分组以确保与端点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设备,联网存储设备,等等。
实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用各种形状因子中的任何一种。这种形状因子的典型示例包括膝上型计算机、智能电话、小型个人计算机、个人数码助理等。本文描述的功能也可以体现在***设备或附加卡中。作为另一示例,这样的功能还可以在不同芯片之间的电路板上实现,或者在单个设备中执行的不同处理中实现。
指令、用于传送这些指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供这些公开中描述的功能的装置。
尽管使用各种示例和其他信息来解释所附权利要求范围内的方面,但是不应基于这些示例中的特定特征或布置来暗示对权利要求的限制,因为普通技术人员将能够使用这些示例得到各种各样的实现。另外,尽管可能已经用特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是将会理解,所附权利要求中定义的主题不必限于这些描述的特征或动作。例如,这样的功能可以以不同方式分布或者在除了这里标识的那些之外的组件中执行。而是,所公开的特征和步骤被公开为所附权利要求范围内的***组件和方法的示例。

Claims (20)

1.一种用于在微服务环境中缩放服务发现的方法,包括:
在主计算设备上实例化第一容器实例和第二容器实例,该第一容器实例提供第一微服务,该第二容器实例提供第二微服务,其中,所述主计算设备包括服务发现代理;
识别作为所述第一微服务的依赖项和所述第二微服务的依赖项的第一组微服务和作为所述第二微服务的依赖项并且未包括在所述第一组微服务中的第二组微服务;以及
利用提供所述第一组微服务的容器实例和提供所述第二组微服务的容器实例的路由数据来更新所述服务发现代理;
所述服务发现代理将来自所述第一容器实例的请求路由到提供作为所述第一微服务的依赖项的所述第一组微服务的容器实例,并且将来自所述第二容器实例的请求路由到提供作为所述第二微服务的依赖项的所述第一组微服务的容器实例或提供所述第二组微服务的容器实例;
移除所述第二容器实例;以及
更新所述服务发现代理以移除提供所述第二组微服务的容器实例的路由数据。
2.如权利要求1所述的方法,还包括:
在所述主计算设备上实例化第三容器实例,该第三容器实例提供第三微服务;
识别作为所述第三微服务的依赖项并且未包括在所述第一组微服务中的第三组微服务;
利用提供所述第三组微服务的容器实例的路由数据来更新所述服务发现代理;以及
所述服务发现代理将来自所述第三容器实例的请求路由到提供作为所述第三微服务的依赖项的所述第一组微服务的容器实例。
3.如权利要求2所述的方法,还包括:
移除所述第三容器实例;以及
更新所述服务发现代理以移除提供所述第三组微服务的容器实例的路由数据。
4.如权利要求2或3所述的方法,还包括:
移除所述第一容器实例;
从所述第一组微服务中识别微服务子集,所述微服务子集是所述第一微服务的依赖项但未包括在所述第三微服务的依赖项中;以及
更新所述服务发现代理以移除提供所述微服务子集的容器实例的路由数据。
5.如权利要求1所述的方法,其中,识别作为所述第一微服务的依赖项的所述第一组微服务包括:
搜索微服务依赖表以寻找作为所述第一微服务的依赖项的所述第一组微服务,其中,所述微服务依赖表列出应用程序的微服务及其相应的依赖项。
6.如权利要求1所述的方法,其中,识别作为所述第一微服务的依赖项的所述第一组微服务包括:
根据基于组的策略来收集作为所述第一微服务的依赖项的所述第一组微服务,所述基于组的策略与所述第一容器实例被指派的端点组相关联,所述端点组包括提供所述第一微服务的一个或多个容器实例,并且所述基于组的策略标识所述第一微服务的依赖项。
7.一种控制器,包括:
一个或多个计算机处理器;以及
存储器,其存储指令,所述指令当由所述一个或多个计算机处理器执行时使得所述控制器:
在主计算设备上实例化第一容器实例和第二容器实例,该第一容器实例提供第一微服务,该第二容器实例提供第二微服务,其中,所述主计算设备包括服务发现代理;
识别作为所述第一微服务的依赖项和所述第二微服务的依赖项的第一组微服务和作为所述第二微服务的依赖项并且未包括在所述第一组微服务中的第二组微服务;以及
利用提供所述第一组微服务的容器实例和提供所述第二组微服务的容器实例的路由数据来更新所述服务发现代理;
所述服务发现代理将来自所述第一容器实例的请求路由到提供作为所述第一微服务的依赖项的所述第一组微服务的容器实例,并且将来自所述第二容器实例的请求路由到提供作为所述第二微服务的依赖项的所述第一组微服务的容器实例或提供所述第二组微服务的容器实例;
移除所述第二容器实例;以及
更新所述服务发现代理以移除提供所述第二组微服务的容器实例的路由数据。
8.如权利要求7所述的控制器,其中,所述指令还使得所述控制器:
在所述主计算设备上实例化第三容器实例,该第三容器实例提供第三微服务;
识别作为所述第三微服务的依赖项并且未包括在所述第一组微服务中的第三组微服务;
利用提供所述第三组微服务的容器实例的路由数据来更新所述服务发现代理;
所述服务发现代理将来自所述第三容器实例的请求路由到提供作为所述第三微服务的依赖项的所述第一组微服务的容器实例或提供所述第三组微服务的容器实例。
9.如权利要求8所述的控制器,其中,所述指令还使得所述控制器:
移除所述第三容器实例;以及
更新所述服务发现代理以移除提供所述第三组微服务的容器实例的路由数据。
10.如权利要求8或9所述的控制器,其中,所述指令还使得所述控制器:
移除提供所述第一容器实例;
从所述第一组微服务中识别微服务子集,所述微服务子集是所述第一微服务的依赖项但未包括在所述第三微服务的依赖项中;以及
更新所述服务发现代理以移除提供所述微服务子集的容器实例的路由数据。
11.如权利要求7所述的控制器,其中,识别作为所述第一微服务的依赖项的所述第一组微服务的指令包括使得所述控制器进行如下操作的指令:
搜索微服务依赖表以寻找作为所述第一微服务的依赖项的所述第一组微服务,其中,所述微服务依赖表列出应用程序的微服务及其相应的依赖项。
12.如权利要求7所述的控制器,其中,识别作为所述第一微服务的依赖项的所述第一组微服务的指令包括使得所述控制器进行如下操作的指令:
根据与基于组的策略来收集作为所述第一微服务的依赖项的所述第一组微服务,所述基于组的策略与所述第一容器实例被指派的端点组相关联,所述端点组包括提供所述第一微服务的一个或多个容器实例,并且所述基于组的策略标识所述第一微服务的依赖项。
13.一种非暂态计算机可读介质,其存储指令,所述指令在由控制器执行时使得所述控制器:
在主计算设备上实例化第一容器实例和第二容器实例,该第一容器实例提供应用程序的第一微服务,该第二容器实例提供第二微服务,其中,所述主计算设备包括服务发现代理;
识别作为所述第一微服务的依赖项和所述第二微服务的依赖项的第一组微服务和作为所述第二微服务的依赖项并且未包括在所述第一组微服务中的第二组微服务;以及
利用提供所述第一组微服务的容器实例和提供所述第二组微服务的容器实例的路由数据来更新所述服务发现代理;
所述服务发现代理将来自所述第一容器实例的请求路由到提供作为所述第一微服务的依赖项的所述第一组微服务的容器实例,并且将来自所述第二容器实例的请求路由到提供作为所述第二微服务的依赖项的所述第一组微服务的容器实例或提供所述第二组微服务的容器实例;
移除所述第二容器实例;以及
更新所述服务发现代理以移除提供所述第二组微服务的容器实例的路由数据。
14.如权利要求13所述的非暂态计算机可读介质,其中,所述指令还使得所述控制器:
在所述主计算设备上实例化第三容器实例,该第三容器实例提供第三微服务;
识别作为所述第三微服务的依赖项并且未包括在所述第一组微服务中的第三组微服务;以及
利用提供所述第三组微服务的容器实例的路由数据来更新所述服务发现代理;
所述服务发现代理将来自所述第三容器实例的请求路由到提供作为所述第三微服务的依赖项的所述第一组微服务的容器实例或提供所述第三组微服务的容器实例。
15.如权利要求14所述的非暂态计算机可读介质,其中,所述指令还使得所述控制器:
移除所述第三容器实例;以及
更新所述服务发现代理以移除提供所述第三组微服务的容器实例的路由数据。
16.如权利要求14或15所述的非暂态计算机可读介质,其中,所述指令还使得所述控制器:
移除提所述第一容器实例;
从所述第一组微服务中识别微服务子集,所述微服务子集是所述第一微服务的依赖项但未包括在所述作为第三微服务的依赖项中;以及
更新所述服务发现代理以移除提供所述微服务子集的容器实例的路由数据。
17.如权利要求13所述的非暂态计算机可读介质,其中,识别作为所述第一微服务的依赖项的所述第一组微服务的指令包括使得所述控制进行以下操作的指令:
搜索微服务依赖表以寻找作为所述第一微服务的依赖项的所述第一组微服务,其中,所述微服务依赖表列出应用程序的微服务及其相应的依赖项。
18.一种用于在微服务环境中缩放服务发现的装置,包括:
用于在主计算设备上实例化第一容器实例和第二容器实例的装置,该第一容器实例提供应用程序的第一微服务,该第二容器实例提供第二微服务,其中,所述主计算设备包括服务发现代理;
用于识别作为所述第一微服务的依赖项和所述第二微服务的依赖项的第一组微服务和作为所述第二微服务的依赖项并且未包括在所述第一组微服务中的第二组微服务的装置;以及
用于利用提供所述第一组微服务的容器实例和提供所述第二组微服务的容器实例的路由数据来更新所述服务发现代理的装置;
用于由所述服务发现代理将来自所述第一容器实例的请求路由到提供作为所述第一微服务的依赖项的所述第一组微服务的容器实例并且将来自所述第二容器实例的请求路由到提供作为所述第二微服务的依赖项的所述第一组微服务的容器实例或提供所述第二组微服务的容器实例的装置;
用于移除所述第二容器实例的装置;以及
用于更新所述服务发现代理以移除提供所述第二组微服务的容器实例的路由数据的装置。
19.根据权利要求18所述的装置,还包括用于实现根据权利要求2至6中任一项所述的方法的装置。
20.一种有形计算机可读介质,包括用于实现根据权利要求1至6中任一项所述的方法的指令。
CN201780045225.0A 2016-07-22 2017-07-07 用于在微服务环境中缩放服务发现的方法和装置 Active CN109791482B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/217,311 US10348838B2 (en) 2016-07-22 2016-07-22 Scaling service discovery in a micro-service environment
US15/217,311 2016-07-22
PCT/US2017/041011 WO2018017336A1 (en) 2016-07-22 2017-07-07 Scaling service discovery in a micro-service environment

Publications (2)

Publication Number Publication Date
CN109791482A CN109791482A (zh) 2019-05-21
CN109791482B true CN109791482B (zh) 2022-06-21

Family

ID=59363288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780045225.0A Active CN109791482B (zh) 2016-07-22 2017-07-07 用于在微服务环境中缩放服务发现的方法和装置

Country Status (4)

Country Link
US (1) US10348838B2 (zh)
EP (1) EP3488341A1 (zh)
CN (1) CN109791482B (zh)
WO (1) WO2018017336A1 (zh)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9787641B2 (en) 2015-06-30 2017-10-10 Nicira, Inc. Firewall rule management
US10313362B2 (en) * 2016-07-29 2019-06-04 ShieldX Networks, Inc. Systems and methods for real-time configurable load determination
US10142356B2 (en) 2016-07-29 2018-11-27 ShieldX Networks, Inc. Channel data encapsulation system and method for use with client-server data channels
US11018970B2 (en) 2016-10-31 2021-05-25 Nicira, Inc. Monitoring resource consumption for distributed services
US11258681B2 (en) 2016-12-16 2022-02-22 Nicira, Inc. Application assessment and visibility for micro-segmentation of a network deployment
US10567440B2 (en) 2016-12-16 2020-02-18 Nicira, Inc. Providing application visibility for micro-segmentation of a network deployment
US10298619B2 (en) * 2016-12-16 2019-05-21 Nicira, Inc. Application template generation and deep packet inspection approach for creation of micro-segmentation policy for network applications
US10356048B2 (en) * 2017-03-17 2019-07-16 Verizon Patent And Licensing Inc. Container deployment for a network
US11895200B2 (en) * 2017-03-24 2024-02-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Access to an operator panel over an out-of-band local network domain
US10878342B2 (en) * 2017-03-30 2020-12-29 Intel Corporation Cloud assisted machine learning
US10705881B2 (en) 2017-05-12 2020-07-07 Red Hat, Inc. Reducing overlay network overhead across container hosts
US10255052B2 (en) * 2017-05-30 2019-04-09 International Business Machines Corporation Dynamic deployment of an application based on micro-services
US10439987B2 (en) * 2017-06-12 2019-10-08 Ca, Inc. Systems and methods for securing network traffic flow in a multi-service containerized application
US10705868B2 (en) 2017-08-07 2020-07-07 Modelop, Inc. Dynamically configurable microservice model for data analysis using sensors
US10277420B2 (en) * 2017-08-28 2019-04-30 Michael Emory Mazarick System and method for providing private instances of shared resources using VxLAN
US10469600B2 (en) * 2017-11-14 2019-11-05 Dell Products, L.P. Local Proxy for service discovery
US10742673B2 (en) 2017-12-08 2020-08-11 Nicira, Inc. Tracking the dynamics of application-centric clusters in a virtualized datacenter
WO2019117767A1 (en) * 2017-12-13 2019-06-20 Telefonaktiebolaget Lm Ericsson (Publ) Method, function manager and arrangement for handling function calls
WO2019152021A1 (en) * 2018-01-31 2019-08-08 Hewlett-Packard Development Company, L.P. Monitoring web applications including microservices
US11296960B2 (en) 2018-03-08 2022-04-05 Nicira, Inc. Monitoring distributed applications
CN109213770B (zh) * 2018-06-06 2023-05-30 平安科技(深圳)有限公司 数据处理方法、***、计算机设备和存储介质
WO2020092129A1 (en) 2018-10-31 2020-05-07 SnapRoute, Inc. Disaggregated cloud-native network architecture
US11444924B2 (en) 2019-01-09 2022-09-13 Cisco Technology, Inc. Application-layer service traffic communication using datacenter network fabric as proxy
EP3915224A1 (en) * 2019-01-24 2021-12-01 Telefonaktiebolaget LM Ericsson (publ) State controller running in a kubernetes system and method for operating same
US11895092B2 (en) * 2019-03-04 2024-02-06 Appgate Cybersecurity, Inc. Network access controller operation
CN110032392B (zh) * 2019-04-15 2023-05-09 杭州朗和科技有限公司 服务治理方法及装置、存储介质和电子设备
US11240345B2 (en) * 2019-06-19 2022-02-01 Hewlett Packard Enterprise Development Lp Method for deploying an application workload on a cluster
US11057271B2 (en) * 2019-06-20 2021-07-06 Citrix Systems, Inc. Systems and method updating ADC configuration with intended state using desired state API
US11188570B2 (en) 2019-07-23 2021-11-30 Vmware, Inc. Using keys to aggregate flow attributes at host
US11140090B2 (en) 2019-07-23 2021-10-05 Vmware, Inc. Analyzing flow group attributes using configuration tags
US11176157B2 (en) 2019-07-23 2021-11-16 Vmware, Inc. Using keys to aggregate flows at appliance
US11288256B2 (en) 2019-07-23 2022-03-29 Vmware, Inc. Dynamically providing keys to host for flow aggregation
US10911335B1 (en) 2019-07-23 2021-02-02 Vmware, Inc. Anomaly detection on groups of flows
US11340931B2 (en) 2019-07-23 2022-05-24 Vmware, Inc. Recommendation generation based on selection of selectable elements of visual representation
US11743135B2 (en) 2019-07-23 2023-08-29 Vmware, Inc. Presenting data regarding grouped flows
US11398987B2 (en) 2019-07-23 2022-07-26 Vmware, Inc. Host-based flow aggregation
US11436075B2 (en) 2019-07-23 2022-09-06 Vmware, Inc. Offloading anomaly detection from server to host
US11349876B2 (en) 2019-07-23 2022-05-31 Vmware, Inc. Security policy recommendation generation
CN110708356B (zh) * 2019-09-06 2024-01-05 国云科技股份有限公司 一种注册中心管理第三方应用的方法和***
CN112527338A (zh) * 2019-09-17 2021-03-19 中兴通讯股份有限公司 微服务升级方法、电子设备和可读存储介质
CN112527491A (zh) * 2019-09-17 2021-03-19 烽火通信科技股份有限公司 一种微服务调用负载均衡方法及***
US10803453B1 (en) * 2019-11-19 2020-10-13 Capital One Services, Llc System, method and computer-accessible medium for resource centric authorization in multi partner ecosystem
CN110990081A (zh) * 2019-12-10 2020-04-10 北京懿医云科技有限公司 微服务注册、发现方法及装置、存储介质及电子设备
US11588854B2 (en) 2019-12-19 2023-02-21 Vmware, Inc. User interface for defining security groups
CN111245925B (zh) * 2020-01-09 2021-08-24 北京理工大学 一种用于现代分布式微服务架构的通信方法与***
US11321213B2 (en) 2020-01-16 2022-05-03 Vmware, Inc. Correlation key used to correlate flow and con text data
CN111586135A (zh) * 2020-04-30 2020-08-25 深圳壹账通智能科技有限公司 云部署微服务应用***及其数据传输方法、装置和设备
CN111581576B (zh) * 2020-05-08 2024-04-02 湖南蚁坊软件股份有限公司 基于微服务的开发处理方法、装置及存储介质
CN111736983B (zh) * 2020-05-25 2023-12-26 南京大学 一种面向任务和资源感知的微服务部署方法
ES2936652T3 (es) * 2020-08-11 2023-03-21 Deutsche Telekom Ag Procedimiento para la operación de una red de acceso de banda ancha de una red de telecomunicaciones que comprende un punto de entrega de la oficina central, un punto de entrega de la oficina central, un programa y un medio legible por ordenador
CN112199150A (zh) * 2020-08-13 2021-01-08 北京航空航天大学 一种基于微服务调用依赖感知的在线应用动态扩缩容方法
CN112130880B (zh) * 2020-09-27 2022-12-02 深圳平安医疗健康科技服务有限公司 微服务的发布方法、装置、计算机设备及存储介质
US11405451B2 (en) * 2020-09-30 2022-08-02 Jpmorgan Chase Bank, N.A. Data pipeline architecture
CN112202929B (zh) * 2020-12-01 2021-03-26 湖南新云网科技有限公司 一种微服务架构中的服务访问方法、装置、设备
CN112732456A (zh) * 2020-12-15 2021-04-30 京东数字科技控股股份有限公司 微服务调用方法、装置、电子设备和存储介质
US11991187B2 (en) 2021-01-22 2024-05-21 VMware LLC Security threat detection based on network flow analysis
US11785032B2 (en) 2021-01-22 2023-10-10 Vmware, Inc. Security threat detection based on network flow analysis
CN113055465B (zh) * 2021-03-11 2022-04-22 南京大学 一种支持事务一致性的微服务动态更新方法
US11831667B2 (en) 2021-07-09 2023-11-28 Vmware, Inc. Identification of time-ordered sets of connections to identify threats to a datacenter
US11997120B2 (en) 2021-07-09 2024-05-28 VMware LLC Detecting threats to datacenter based on analysis of anomalous events
CN113672253B (zh) * 2021-07-29 2023-11-14 华人运通(上海)云计算科技有限公司 车辆的微服务***的访问方法、装置、设备和介质
CN114125035B (zh) * 2021-09-27 2023-08-08 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
US11792151B2 (en) 2021-10-21 2023-10-17 Vmware, Inc. Detection of threats based on responses to name resolution requests
US11606420B1 (en) * 2021-10-22 2023-03-14 Dell Products L.P. Method and apparatus for service routing
US12015591B2 (en) 2021-12-06 2024-06-18 VMware LLC Reuse of groups in security policy
CN114401311A (zh) * 2022-01-19 2022-04-26 阿维塔科技(重庆)有限公司 微服务注册及发现方法、装置、电子设备及介质
CN114844941A (zh) * 2022-04-27 2022-08-02 南京亚信软件有限公司 基于Istio的接口级别服务治理方法及相关装置
US12009942B2 (en) * 2022-10-31 2024-06-11 Charter Communications Operating, Llc Scalable provisioning of aggregation devices with differentiated features
CN116257363B (zh) * 2023-05-12 2023-07-25 中国科学技术大学先进技术研究院 资源调度方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442754B1 (en) * 1999-03-29 2002-08-27 International Business Machines Corporation System, method, and program for checking dependencies of installed software components during installation or uninstallation of software
CN101311903A (zh) * 2007-05-22 2008-11-26 国际商业机器公司 对基于组件的软件***中的组件进行重用的方法和装置
EP2254310A2 (en) * 2009-05-22 2010-11-24 Comcast Interactive Media, LLC Web service system and method
CN105357233A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 一种远程调用方法与设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
KR101049941B1 (ko) * 2010-04-30 2011-07-15 경북대학교 산학협력단 교통망 체계 정보를 이용한 라우팅 프로토콜 및 멀티홉 메시지 전송 결정 방법
CN103200094A (zh) * 2013-03-14 2013-07-10 成都卫士通信息产业股份有限公司 一种实现网关动态负载分配的方法
US10129078B2 (en) * 2014-10-30 2018-11-13 Equinix, Inc. Orchestration engine for real-time configuration and management of interconnections within a cloud-based services exchange

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442754B1 (en) * 1999-03-29 2002-08-27 International Business Machines Corporation System, method, and program for checking dependencies of installed software components during installation or uninstallation of software
CN101311903A (zh) * 2007-05-22 2008-11-26 国际商业机器公司 对基于组件的软件***中的组件进行重用的方法和装置
EP2254310A2 (en) * 2009-05-22 2010-11-24 Comcast Interactive Media, LLC Web service system and method
CN105357233A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 一种远程调用方法与设备

Also Published As

Publication number Publication date
EP3488341A1 (en) 2019-05-29
US20180027080A1 (en) 2018-01-25
US10348838B2 (en) 2019-07-09
CN109791482A (zh) 2019-05-21
WO2018017336A1 (en) 2018-01-25

Similar Documents

Publication Publication Date Title
CN109791482B (zh) 用于在微服务环境中缩放服务发现的方法和装置
CN109716717B (zh) 从软件定义的网络控制器管理虚拟端口信道交换机对等体
US10432532B2 (en) Dynamically pinning micro-service to uplink port
US11102059B2 (en) Virtual network health checker
US10091087B2 (en) Methods and systems for load balancing based on data shard leader
US9667551B2 (en) Policy enforcement proxy
US20180026856A1 (en) Orchestrating micro-service deployment based on network policy health
US10432638B2 (en) Infrastructure aware adaptive resource allocation
US20180006969A1 (en) Technique for gleaning mac and ip address bindings
US11838376B2 (en) Scaling service discovery in a micro-service environment
WO2015069578A1 (en) Boosting linked list throughput
US10567344B2 (en) Automatic firewall configuration based on aggregated cloud managed information
US10432628B2 (en) Method for improving access control for TCP connections while optimizing hardware resources
US10819753B2 (en) Symmetric bi-directional policy based redirect of traffic flows
EP3304825B1 (en) Methods and systems for managing connected data transfer sessions
US9825814B2 (en) Dynamic attribute based application policy
US10567222B2 (en) Recommending configurations for client networking environment based on aggregated cloud managed information
US10284521B2 (en) Automatic security list offload with exponential timeout

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