一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

自动复制API调用以分离数据中心的制作方法

2022-02-22 03:18:04 来源:中国专利 TAG:

自动复制api调用以分离数据中心
1.相关申请的交叉引用
2.本技术要求于2019年5月17日提交的名称为“automatically replicate api calls to separate data centers”的美国专利申请no.16/416,119的优先权和利益,其全部内容出于所有目的通过引用全部合并于此。
技术领域
3.本技术总地涉及数据中心,包括但不限于用于为多个数据中心创建透明弹性的系统和方法。


背景技术:

4.请求可以由请求者发送,目的地是在多个数据中心中运行的一个或多个服务或应用。请求可以被发送到在处理请求时可能有问题并且超时或提供错误响应的那些数据中心之一。这可能会导致延迟为此类请求提供服务并降低最终用户的体验或影响服务或应用的性能或操作。


技术实现要素:

5.本技术提供本概述是为了以简化形式引入概念的选择,概念将在下面的具体实施方式中进一步描述。本概述不旨在识别关键特征或基本特征,也不旨在限制本文所包括的权利要求的范围。
6.下面描绘了用于多个数据中心的透明弹性的系统和方法。所描述的系统和方法确定应用编程接口(api)调用是否是幂等的(idempotent)。如果api调用是幂等的,则调用可以同时转发到多个数据中心。如果api调用不是幂等的,则可以将调用依次发送到多个数据中心中的每一个,直到接收到响应或发生超时。自动同步提供多区域调用在数据中心或区域故障期间提供更快的响应时间。在设备服务器侧自动同步提供多区域调用,将逻辑从客户机移出并移入透明且集中管理的服务中。这可以允许业务逻辑专注于核心逻辑,而不是重试请求或管理依赖服务的多区域方面的逻辑。
7.根据本发明的一个方面,提供了一种用于将调用复制到不同数据中心的方法。该方法可以包括由装置接收访问服务的应用接口(api)请求。该装置可以在一个或多个请求者与一个或多个数据中心之间联网。数据中心可以提供由请求者请求的服务。该方法还可以包括确定用于该请求的策略。该策略可以确定api请求是幂等的。该策略可进一步确定识别将api请求复制到的一个或多个数据中心的一个或多个规则。该方法可以包括装置将复制api请求传送到由策略识别的每个数据中心。该方法还可以包括由装置接收来自数据中心的响应。如果装置接收到一个以上的响应,则该方法可以包括选择一个响应来传送给请求者。该方法还可以包括将来自装置的响应传送给请求者。
8.请求者可以是客户机、服务器、第二服务或微服务。数据中心可以位于不同的地理位置。api请求可以请求访问作为服务的组件的多个微服务中的一个微服务。装置可以至少
基于由策略的一个或多个规则识别的顺序将复制api请求传送到每个数据中心。装置可以基于一个或多个响应中首先被接收到的响应来选择从数据中心接收到的响应。装置可以基于一个或多个响应中的哪一个成功来选择响应。
9.根据本发明的一个方面,提供了一种用于将调用复制到不同数据中心的方法。该方法可以包括由装置接收访问服务的应用编程接口(api)请求。该装置可以在一个或多个请求者与一个或多个数据中心之间联网。数据中心可以提供由请求者请求的服务。该方法还可以包括确定用于该请求的策略。该策略可以确定api请求不是幂等的。该策略还可以确定识别将api请求复制到的一个或多个数据中心的一个或多个规则。装置可以将第一复制api请求传送到由策略识别的第一数据中心。第一复制api请求可以与接收响应的超时时间段相关联。如果装置在超时时间段内没有接收到响应,则装置可以向由策略识别的第二数据中心发送第二复制api请求。该方法可以包括装置向由策略识别的每个数据中心传送复制api请求。该方法还可以包括将来自装置的响应传送给请求者。
10.根据本发明的一个方面,提供了一种用于将调用复制到不同数据中心的系统。该系统可以包括具有耦合到存储器的一个或多个处理器的装置。该装置可以在一个或多个请求者和一个或多个数据中心的中间。数据中心可以提供服务。该装置可以被配置为接收访问服务的应用编程接口(api)请求。该请求可以来自请求者。该装置可以被配置为识别用于该请求的策略。该策略可以识别api请求是否是幂等的。该策略还可以识别一个或多个规则,该规则识别将api请求复制到的一个或多个数据中心。装置可以被配置为基于策略来确定api请求是否是幂等的。该装置可以被配置为基于该确定将一个或多个复制api请求传送到一个或多个数据中心。该装置可以被配置为将接收到的请求的响应传送给请求者。
11.请求者可以是客户机、服务器、第二服务或微服务。数据中心可以位于不同的地理位置。api请求可以是访问作为服务的组件的多个微服务中的一个微服务。装置可以被配置为基于策略来确定api请求是幂等的。该装置可以被配置为将复制api请求传送到由策略识别的每个数据中心。装置可以被配置为基于策略来确定api请求不是幂等的。该装置可以被配置为将第一复制api传送到由策略识别的第一数据中心。第一复制api请求可以与接收响应的超时时间段相关联。该装置可以被配置为响应于超时时间段的到期,将第二复制api请求传送到由策略识别的第二数据中心。
附图说明
12.本文公开的实施例的目的、方面、特征和优点将从以下详细描述、所附权利要求和附图中变得更加明显,其中相似的附图标记标识相似或相同的元件。在说明书中与附图相关联地引入的附图标记可以在一个或多个后续附图中重复,而无需在说明书中进行额外的描述,以便为其他特征提供上下文,并且并非每个元件都可以在每个附图中被标记。附图不一定按比例绘制,而是重点放在示出实施例、原理和概念上。附图并非旨在限制本文所包括的权利要求的范围。
13.图1a是根据示意性实施例的网络计算系统的框图;
14.图1b是根据示意性实施例的用于经由设备将计算环境从服务器输送到客户机的网络计算系统的框图;
15.图1c是根据示意性实施例的计算装置的框图;
16.图2是根据示意性实施例的用于处理客户机和服务器之间的通信的设备的框图;
17.图3是根据示意性实施例的虚拟化环境的框图;
18.图4是根据示意性实施例的集群系统的框图;
19.图5a是根据示意性实施例的基于服务图的系统的框图;
20.图5b是根据示意性实施例的服务图的框图;
21.图5c是根据示意性实施例的使用服务图的方法的流程图;
22.图6a是根据示意性实施例的用于幂等调用的服务图的框图;
23.图6b是根据示意性实施例的使用服务图的方法的流程图。
具体实施方式
24.为了阅读下文各种实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的:
25.a部分描述可用于实施本文描述的实施例的网络环境和计算环境;
26.b部分描述用于将计算环境输送到远程用户的系统和方法的实施例;
27.c部分描述用于对应用输送控制器进行虚拟化的系统和方法的实施例;
28.d部分描述用于提供集群式设备架构环境的系统和方法的实施例;
29.e部分描述用于提供基于服务图的平台和技术的系统和方法的实施例;以及
30.f部分描述用于向多个数据中心提供透明api调用弹性的系统和方法的实施例。
31.a.网络和计算环境
32.参考图1a,描述了示意性网络环境100。网络环境100可以包括经由一个或多个网络104(1)-104n(总地称为网络104)与一个或多个服务器106(1)-106(n)(同样总地称为远程机器106或服务器106)通信的一个或多个客户机102(1)-102(n)(同样总地称为本地机器102或客户机102)。在一些实施例中,客户机102可以经由一个或多个设备200(1)-200n(总地称为设备200或网关200)与服务器106通信。
33.虽然图1a所示的实施例示出了客户机102和服务器106之间的一个或多个网络104,但在其他实施例中,客户机102和服务器106可以在同一网络104上。各种网络104可以是相同类型的网络或不同类型的网络。例如,在一些实施例中,网络104(1)可以是诸如局域网(lan)或公司内联网的专用网络,而网络104(2)和/或网络104(n)可以是诸如广域网(wan)或互联网的公共网络。在其他实施例中,网络104(1)和网络104(n)都可以是专用网络。网络104可以采用一种或多种类型的物理网络和/或网络拓扑,诸如有线和/或无线网络,并且可以采用一个或多个通信传输协议,诸如传输控制协议(tcp)、互联网协议(ip)、用户数据报协议(udp)或其他类似协议。
34.如图1a所示,一个或多个设备200可以位于网络环境100的各个点或各个通信路径中。例如,设备200可以部署在两个网络104(1)和104(2)之间,并且设备200可以与彼此通信以结合工作以例如加速客户机102和服务器106之间的网络流量。在其他实施例中,设备200可以位于网络104上。例如,设备200可以被实现为客户机102和/或服务器106之一的一部分。在一个实施例中,设备200可以被实现为网络装置,诸如由佛罗里达州劳德代尔堡的思杰系统有限公司销售的citrix networking(以前为)产品。
35.如图1a所示,一个或多个服务器106可以作为服务器群38操作。服务器群38的服务
器106可以在逻辑上分组,并且可以从客户机102和/或其他服务器106在地理上共同定位(例如,在本地)或在地理上分散(例如,基于云)。在一个实施例中,服务器群38代表一个或多个客户机102(例如,作为应用服务器)执行一个或多个应用,而其他用途也是可能的,诸如文件服务器、网关服务器、代理服务器或其他类似的服务器用途。客户机102可以寻求访问服务器106上的托管应用。
36.如图1a所示,在一些实施例中,设备200可以包括一个或多个附加设备(诸如wan优化设备205(1)-205(n),通常被称为wan优化设备205),由其代替,或与其进行通信。例如,wan优化设备205可以加速、高速缓存、压缩或以其他方式优化或改进网络流量(诸如去往和/或来自wan连接的流量)的性能、操作、流量控制或服务质量,诸如优化广域文件服务(wafs)、加速服务器消息块(smb)或公共互联网文件系统(cifs)。在一些实施例中,设备205可以是性能增强代理或wan优化控制器。在一个实施例中,设备205可以被实现为由佛罗里达州劳德代尔堡的思杰系统有限公司销售的citrix sd-wan产品。
37.参考图1b,示出了用于在客户机102上输送和/或操作计算网络环境的示例网络环境100'。如图1b所示,服务器106可以包括用于向一个或多个客户机102输送计算环境、应用和/或数据文件的应用输送系统190。客户机102可以包括客户机代理120和计算环境15。计算环境15可以执行或操作访问、处理或使用数据文件17的应用16。计算环境15、应用16和/或数据文件17可以经由设备200和/或服务器106输送。
38.设备200可以加速计算环境15的全部或一部分到客户机102的输送,例如通过应用输送系统190。例如,设备200可以通过加速客户机102和服务器106之间的传输层流量来加速流应用和可由应用处理的数据文件从数据中心到远程用户位置的输送。这种加速可以由一种或多种技术提供,诸如:1)传输层连接池,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩,5)高速缓存或其他技术。设备200还可提供服务器106的负载平衡以处理来自客户机102的请求,充当代理或访问服务器以提供对一个或多个服务器106的访问,提供安全性和/或充当客户机102和服务器106之间的防火墙,提供域名服务(dns)解析,提供一个或多个虚拟服务器或虚拟互联网协议服务器,和/或提供从客户机102到服务器106的安全虚拟专用网络(vpn)连接,诸如安全套接字层(ssl)vpn连接和/或提供加密和解密操作。
39.应用输送管理系统190可以基于由策略引擎195应用的认证和授权策略,将计算环境15输送给远程用户或其他用户(例如,客户机102)。远程用户可以获得计算环境并访问服务器存储的应用和来自任何网络连接的装置(例如,客户机102)的数据文件。例如,设备200可以从服务器106请求应用和数据文件。响应于该请求,应用输送系统190和/或服务器106可以将应用和数据文件输送到客户机102,例如经由应用流来在客户机102上的计算环境15中操作,或经由远程显示协议或以其他方式经由基于远程或基于服务器的计算。在一个实施例中,应用输送系统190可以被实现为思杰系统有限公司的citrix workspace suite
tm
的任何部分,诸如citrix virtual apps和desktops(以前为和)。
40.策略引擎195可以控制和管理对应用的访问、执行和输送。例如,策略引擎195可以确定用户或客户机102可以访问的一个或多个应用和/或应如何将应用输送给用户或客户机102,诸如基于服务器的计算、流式传输或本地输送应用到客户机120进行本地执行。
41.例如,在操作中,客户机102可以请求应用(例如,应用16')的执行并且服务器106的应用输送系统190例如基于从客户机102接收的凭证以及由与凭证相关联的策略引擎195
应用的用户策略来确定如何执行应用16'。例如,应用输送系统190可以使客户机102能够接收通过在服务器106上执行应用而生成的应用输出数据,可以使客户机102能够在从服务器106接收到应用之后本地执行该应用,或者可以经由网络104流式传输该应用到客户机102。例如,在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。服务器106可以使用瘦-客户机或远程显示协议,诸如佛罗里达州劳德代尔堡的思杰系统有限公司的独立计算架构(ica)协议,向客户机102显示输出。应用可以是与实时数据通信相关的任何应用(诸如用于流式传输图形、流式传输视频和/或音频或其他数据的应用)、远程桌面或工作空间的输送或托管服务或应用(例如基础设施即服务(iaas)、桌面即服务(daas)、工作空间即服务(waas)、软件即服务(saas)或平台即服务(paas))。
42.服务器106中的一个或多个可以包括性能监测服务或代理197。在一些实施例中,可以采用专用的一个或多个服务器106来执行性能监测。性能监测可以使用数据收集、聚合、分析、管理和报告来执行,例如通过软件、硬件或其组合。性能监测可以包括一个或多个代理,用于在客户机102(例如,客户机代理120)、服务器106(例如,代理197)或设备200和/或205(未示出的代理)上执行监测、测量和数据收集活动。通常,监测代理(例如,120和/或197)对任何应用和/或装置的用户透明地(例如,在后台)执行。在一些实施例中,监测代理197包括被佛罗里达州劳德代尔堡的思杰系统有限公司称为citrix analytics或citrix application delivery management的任何产品实施例。
43.监测代理120和197可以基于给定事件的发生或在网络环境100的操作期间实时地以预定频率监测、测量、收集和/或分析数据。监测代理可以监测客户机102、网络104、设备200和/或205和/或服务器106的硬件、软件和/或通信资源的资源消耗和/或性能。例如,诸如传输层连接的网络连接、网络延迟、带宽利用率、最终用户响应时间、应用使用情况和性能、与应用的会话连接、高速缓存使用情况、内存使用情况、处理器使用情况、存储使用情况、数据库事务、客户机和/或服务器利用率、活动用户、用户活动的持续时间、应用崩溃、错误或挂起、登录到应用、服务器或应用输送系统所需的时间,和/或其他性能条件和度量可以被监测。
44.监测代理120和197可以为应用输送系统190提供应用性能管理。例如,基于一个或多个被监测的性能条件或度量,可以动态地(例如周期性地或实时地)调节应用输送系统190,以基于网络环境性能和条件优化服务器106到客户机102的应用输送。
45.在所描述的实施例中,客户机102、服务器106和设备200和205可以部署为和/或在任何类型和形式的计算装置上执行,诸如任何台式计算机、膝上型计算机或能够通过至少一个网络进行通信并执行本文描述的操作的移动装置。例如,客户机102、服务器106和/或设备200和205可以各自对应于一台计算机、多台计算机或分布式计算机网络,诸如图1c所示的计算机101。
46.如图1c所示,计算机101可以包括一个或多个处理器103、易失性存储器122(例如ram)、非易失性存储器128(例如一个或多个硬盘驱动器(hdd)或其他磁性或光学存储介质、一个或多个固态驱动器(ssd)(诸如闪存驱动器或其他固态存储介质)、一个或多个混合磁性和固态驱动器、和/或一个或多个虚拟存储卷(诸如云存储)、或这种物理存储卷和虚拟存储卷的组合或其阵列)、用户接口(ui)123、一个或多个通信接口118和通信总线150。用户接口123可以包括图形用户接口(gui)124(例如,触摸屏、显示器等)和一个或多个输入/输出
(i/o)装置126(例如,鼠标、键盘等)。非易失性存储器128存储操作系统115、一个或多个应用116和数据117,使得例如操作系统115和/或应用116的计算机指令由处理器103在易失性存储器122之外执行。可以使用gui 124的输入装置输入数据或从i/o装置126接收数据。计算机101的各种元件可以经由通信总线150进行通信。如图1c中所示的计算机101仅作为示例示出,因为客户机102、服务器106和/或设备200和205可以通过任何计算或处理环境并且使用可以具有能够如本文所述操作的合适的硬件和/或软件的任何类型的机器或机器组来实现。
47.处理器103可由一个或多个可编程处理器实现,该处理器执行一个或多个计算机程序以执行系统的功能。如本文所使用的,术语“处理器”描述执行功能、操作或操作序列的电子电路。功能、操作或操作序列可以被硬编码到电子电路中或通过保存在存储器装置中的指令软编码。“处理器”可以使用数字值或使用模拟信号来执行功能、操作或操作序列。在一些实施例中,“处理器”可以体现为一个或多个专用集成电路(asic)、微处理器、数字信号处理器、微控制器、现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、多核处理器或具有相关存储器的通用计算机。“处理器”可以是模拟、数字或混合信号。在一些实施例中,“处理器”可以是一个或多个物理处理器或一个或多个“虚拟”(例如,远程定位或“云”)处理器。
48.通信接口118可以包括一个或多个接口以使得计算机101能够通过各种有线和/或无线或蜂窝连接访问诸如lan、wan或互联网的计算机网络。
49.在所描述的实施例中,第一计算装置101可以代表客户机计算装置(例如,客户机102)的用户执行应用,可以执行虚拟机,其提供应用在其内代表用户或客户机计算装置(例如,客户机102)执行的执行会话,诸如托管桌面会话,可以执行终端服务会话以提供托管桌面环境,或者可以提供对计算环境的访问,计算环境包括以下中的一个或多个:一个或多个应用、一个或多个桌面应用、以及一个或多个应用可以在其中执行的一个或多个桌面会话。
50.b.设备架构
51.图2示出了设备200的示例实施例。如本文所述,设备200可以被实现为服务器、网关、路由器、交换机、桥接器或其他类型的计算或网络装置。如图2所示,设备200的实施例可以包括硬件层206和软件层205,软件层205被划分为用户空间202和内核空间204。硬件层206提供硬件元件,内核空间204和用户空间202内的程序和服务基于这些硬件元件而执行,并允许内核空间204和用户空间202内的程序和服务相对于设备200在内部和外部传送数据。如图2所示,硬件层206可以包括用于执行软件程序和服务的一个或多个处理单元262、用于存储软件和数据的存储器264、用于通过网络传输和接收数据的网络端口266、以及用于加密和解密数据(例如与通过网络传输和接收的数据的安全套接字层(ssl)或传输层安全性(tls)处理有关)的加密处理器260。
52.设备200的操作系统分配、管理或以其他方式将可用系统存储器分隔成内核空间204和用户空间202。内核空间204被保留用于运行内核230,包括任何装置驱动器、内核扩展或其他内核相关软件。如本领域技术人员所知,内核230是操作系统的核心,并提供对应用104的资源和硬件相关元件的访问、控制和管理。内核空间204还可以包括与高速缓存管理器232协同工作的多个网络服务或进程。
53.设备200可以包括一个或多个网络堆栈267,诸如基于tcp/ip的堆栈,用于与客户机102、服务器106、网络104和/或其他设备200或205进行通信。例如,设备200可以建立和/
或终止客户机102和服务器106之间的一个或多个传输层连接。每个网络堆栈267可以包括用于将一个或多个网络分组进行排队以供设备200传输的缓冲器243。
54.内核空间204可以包括高速缓存管理器232、分组引擎240、加密引擎234、策略引擎236和压缩引擎238。换言之,进程232、240、234、236和238中的一个或多个在设备200的操作系统的内核地址空间中运行,这可以减少进出存储器的数据事务和/或内核模式和用户模式之间的上下文切换的数量,例如因为在内核模式中获得的数据可能不需要被传递或复制到用户进程、线程或用户级数据结构。
55.高速缓存管理器232可以复制存储在别处的原始数据或先前计算、生成或传输的数据以减少数据的访问时间。在一些实施例中,高速缓存存储器可以是设备200的存储器264中的数据对象,或者可以是具有比存储器264更快的访问时间的物理存储器。
56.策略引擎236可以包括统计引擎或其他配置机制,以允许用户识别、指定、定义或配置高速缓存策略以及对由设备200高速缓存的对象、数据或内容的访问、控制和管理,并且定义或配置由设备200执行的安全性、网络流量、网络访问、压缩或其他功能。
57.加密引擎234可以处理任何安全相关协议,诸如ssl或tls。例如,加密引擎234可以加密和解密经由设备200传送的网络分组或其任何部分,可以例如在客户机102、服务器106和/或其他设备200或205之间设置或建立ssl、tls或其他安全连接。在一些实施例中,加密引擎234可以使用隧道协议来提供客户机102和服务器106之间的vpn。在一些实施例中,加密引擎234与加密处理器260通信。压缩引擎238在客户机102和服务器106之间和/或在一个或多个设备200之间双向地压缩网络分组。
58.分组引擎240可以管理由设备200经由网络堆栈267接收和传输的分组的内核级处理,以经由网络端口266发送和接收网络分组。分组引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和压缩引擎238结合操作,例如以执行加密/解密、流量管理(诸如请求级内容切换和请求级高速缓存重定向)、以及数据的压缩和解压缩。
59.用户空间202是由用户模式应用或以用户模式运行的程序使用的操作系统的存储器区域或部分。用户模式应用可能不直接访问内核空间204,而是使用服务调用来访问内核服务。用户空间202可以包括图形用户接口(gui)210、命令行接口(cli)212、壳服务214、健康监测器216和守护服务218。gui 210和cli 212使系统管理员或其他用户能够与设备200交互并控制设备200的操作,诸如经由设备200的操作系统。壳服务214包括程序、服务、任务、进程或可执行指令以支持用户经由gui 210和/或cli 212与设备200的交互。
60.健康监测器216监测、检查、报告并确保网络系统正常运行并且用户正在通过网络接收所请求的内容,例如通过监测设备200的活动。在一些实施例中,健康监测器216拦截并检查经由设备200传递的任何网络流量。例如,健康监测器216可以与加密引擎234、高速缓存管理器232、策略引擎236、压缩引擎238、分组引擎240、守护服务218和壳服务214中的一个或多个接口,以确定设备200的任何部分的状态、状况、操作条件或健康。此外,健康监测器216可以确定程序、进程、服务或任务是否是活动的并且当前正在运行,检查由任何程序、进程、服务或任务提供的状态、错误或历史日志来确定设备200的任何部分的任何条件、状态或错误。此外,健康监测器216可以测量和监测在设备200上执行的任何应用、程序、进程、服务、任务或线程的性能。
61.守护服务218是连续运行或在后台运行并处理由设备200接收的周期性服务请求
的程序。在一些实施例中,守护服务可以视情况将请求转发到其他程序或进程,诸如另一守护服务218。
62.如本文所述,设备200可以通过打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许客户机经由互联网(例如,“连接池”)的重复数据访问,来减轻服务器106的由于重复打开和关闭到客户机102的传输层连接导致的大量处理负载。为了执行连接池,设备200可以通过在传输层协议级处修改序列号和确认号(例如,“连接多路复用”)来转换或多路复用通信。设备200还可以为客户机102和服务器106之间的通信提供交换或负载平衡。
63.如本文所述,每个客户机102可以包括客户机代理120,用于经由网络104与设备200和/或服务器106建立和交换通信。客户机102可能已经安装和/或执行与网络104通信的一个或多个应用。客户机代理120可以拦截来自由一个或多个应用使用的网络堆栈的网络通信。例如,客户机代理120可以在网络堆栈中的任一点拦截网络通信并将网络通信重定向到客户机代理120期望、管理或控制的目的地,例如以拦截传输层连接并将传输层连接重定向到由客户机代理120控制或管理的ip地址和端口。因此,客户机代理120可以透明地拦截传输层以下的任何协议层,诸如网络层,以及传输层以上的任何协议层,诸如会话、表示或应用层。客户机代理120可以与传输层接口以保护、优化、加速、路由或负载平衡经由传输层承载的任何协议提供的任何通信。
64.在一些实施例中,客户机代理120被实现为由佛罗里达州劳德代尔堡的思杰系统有限公司开发的独立计算架构(ica)客户机。客户机代理120可以执行加速、流式传输、监测和/或其他操作。例如,客户机代理120可以加速应用从服务器106到客户机102的流式传输。客户机代理120还可以执行端点检测/扫描并为设备200和/或服务器106收集关于客户机102的端点信息。设备200和/或服务器106可以使用所收集的信息来确定和提供客户机到网络104的连接的访问、认证和授权控制。例如,客户机代理120可以识别和确定一个或多个客户机侧属性,诸如:操作系统和/或操作系统的版本、操作系统的服务包、正在运行的服务、正在运行的进程、文件、客户机的各种应用的存在或版本,例如防病毒、防火墙、安全,和/或其他软件。
65.c.用于提供虚拟化应用输送控制器的系统和方法
66.现在参考图3,示出了虚拟化环境300的框图。如图所示,虚拟化环境300中的计算装置302包括虚拟化层303、管理程序层304和硬件层307。管理程序层304包括一个或多个管理程序(或虚拟化管理器)301,其分配和管理由在虚拟化层303中执行的至少一个虚拟机(vm)(例如,vm 306之一)对硬件层307(例如,物理处理器321和物理盘328)中的多个物理资源的访问。每个vm 306可以包括分配的虚拟资源,诸如虚拟处理器332和/或虚拟盘342,以及虚拟资源,诸如虚拟存储器和虚拟网络接口。在一些实施例中,vm 306中的至少一个可以包括与管理程序301通信并用于执行用于管理和配置装置302上的其他vm(例如,客户操作系统310)的应用的控制操作系统(例如,305)。
67.一般而言,管理程序301可以以模拟具有对物理装置的访问的操作系统的任何方式向vm 306的操作系统提供虚拟资源。因此,管理程序301可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件以及执行提供对计算环境的访问的虚拟机。在示意性实施例中,管理程序301可以实现为佛罗里达州劳德代尔堡的思杰系统有限公司的citrix hypervisor。在
示意性实施例中,执行创建客户操作系统可在其上执行的虚拟机平台的管理程序的装置302被称为主机服务器302。
68.管理程序301可以创建一个或多个vm 306,操作系统(例如,控制操作系统305和/或客户操作系统310)在其中执行。例如,管理程序301加载虚拟机映像以创建vm 306以执行操作系统。管理程序301可以向vm 306呈现硬件层307的抽象,和/或可以控制如何向vm 306呈现硬件层307的物理能力。例如,管理程序301可以管理跨多个物理计算装置分布的资源池。
69.在一些实施例中,vm 306之一(例如,执行控制操作系统305的vm)可以管理和配置其他vm 306,例如通过管理vm的执行和/或终止和/或管理虚拟资源到vm的分配。在各种实施例中,vm可以经由例如一个或多个应用编程接口(api)、共享存储器和/或其他技术与管理程序301和/或其他vm通信。
70.一般而言,vm 306可以向装置302的用户提供对虚拟化计算环境300内的资源的访问,例如一个或多个程序、应用、文档、文件、桌面和/或计算环境、或其他资源。在一些实施例中,vm 306可以被实现为不知道它们是虚拟机的完全虚拟化的vm(例如,硬件虚拟机或hvm)。在其他实施例中,vm可以知道它是虚拟机,和/或vm可以被实现为半虚拟化(pv)vm。
71.虽然在图3中示出为包括单个虚拟化装置302,但虚拟化环境300可以包括系统中的多个联网装置,在该系统中至少一个物理主机执行虚拟机。vm在其上执行的装置可以被称为物理主机和/或主机。例如,设备200可以附加地或可替代地在诸如客户机102、服务器106或设备200的任何计算装置上的虚拟化环境300中实现。虚拟设备可以提供类似于关于设备200描述的用于可用性、性能、健康监测、高速缓存和压缩的功能,连接多路复用和池化和/或安全处理(例如,防火墙、vpn、加密/解密等)。
72.在一些实施例中,服务器可以例如在多核处理系统的各个核和/或多处理器装置的各个处理器上执行多个虚拟机306。例如,尽管在本文中一般地显示为“处理器”(例如,在图1c、2和3中),一个或多个处理器可以实现为单核或多核处理器以提供多线程、并行架构和/或多核架构。每个处理器和/或核可以具有或使用分配或分派给私人或本地使用的存储器,这些存储器只能由该处理器/核访问,和/或可以具有或使用公共或由多个处理器/核共享并可访问的存储器。这种架构可允许跨一个或多个处理器和/或一个或多个核的工作、任务、负载或网络流量分布(例如,通过功能并行性、数据并行性、基于流的数据并行性等)。
73.此外,代替(或除此之外)以物理处理器/核的形式实现的核的功能,可以在客户机102、服务器106或设备200上的虚拟化环境(例如,300)中实现这样的功能,使得该功能可以跨多个装置(诸如计算装置的集群、服务器群或计算装置的网络等)来实现。各种处理器/核可以使用多种接口技术(诸如核到核消息传递、共享存储器、内核api等)相互接口或通信。
74.在采用多个处理器和/或多个处理器核的实施例中,所描述的实施例可以在核或处理器之间分布数据分组,例如以平衡跨核的流。例如,分组分布可以基于对每个核执行的功能、源地址和目的地地址的确定,和/或是否:相关核上的负载高于预定阈值;相关核上的负载低于预定阈值;相关核上的负载小于其他核上的负载;或可用于部分基于处理器上的负载量来确定将数据分组转发到何处的任何其他度量。
75.例如,可以使用接收侧调整(rss)在核或进程之间分布数据分组,以便使用网络中的多个处理器/核来处理分组。rss通常允许跨多个处理器/核平衡分组处理,同时保持分组
的有序输送。在一些实施例中,rss可以使用哈希方案来确定用于处理分组的核或处理器。
76.rss可以从任何类型和形式的输入生成哈希,诸如值序列。该值序列可以包括网络分组的任何部分,诸如网络分组的任何报头、字段或有效载荷,并且包括与网络分组或数据流相关联的任何信息元组,诸如地址和端口。哈希结果或其任何部分可用于标识处理器、核、引擎等,用于例如经由哈希表、间接表或其他映射技术分布网络分组。
77.d.用于提供分布式集群架构的系统和方法
78.虽然在图1a和1b中示出为单个设备,但设备200可以被实现为一个或多个分布式或集群设备。单独的计算装置或设备可以被称为集群的节点。集中式管理系统可以执行负载平衡、分布、配置或其他任务以允许节点作为单个计算系统联合操作。这样的集群可以被视为单个虚拟设备或计算装置。图4示出了示意性计算装置集群或设备集群400的框图。多个设备200或其他计算装置(例如,节点)可以加入到单个集群400中。集群400可以作为应用服务器、网络存储服务器、备份服务或任何其他类型的计算装置来操作,以执行设备200和/或205的许多功能。
79.在一些实施例中,集群400的每个设备200可以被实现为多处理器和/或多核设备,如本文所述。这样的实施例可以采用两层分布系统,如果集群将分组分布到集群的节点,并且每个节点将用于处理的分组分布到节点的处理器/核,则具有一个设备。在许多实施例中,集群400的一个或多个设备200可以在物理上分组或在地理上彼此接近,诸如在给定机箱、机架和/或数据中心中的一组刀片服务器或机架安装装置。在一些实施例中,集群400的一个或多个设备200可以在地理上分布,而设备200在物理上或地理上并不位于同一位置。在这样的实施例中,地理上远程的设备可以通过专用网络连接和/或vpn连接起来。在地理上分布的实施例中,负载平衡还可以考虑地理上远程的设备之间的通信延迟。
80.在一些实施例中,集群400可以被认为是经由共同配置、管理和目的分组的虚拟设备,而不是作为物理组。例如,设备集群可以包括由一个或多个服务器执行的多个虚拟机或进程。
81.如图4所示,设备集群400可以经由客户机数据平面402耦合到第一网络104(1),例如以在客户机102和设备集群400之间传输数据。客户机数据平面402可以被实现为交换机、集线器、路由器或集群400内部或外部的其他类似网络装置,以跨集群400的节点分布流量。例如,可以基于用集群的设备或节点配置下一跳的等价多路径(ecmp)路由、开放最短路径优先(ospf)、基于无状态哈希的流量分布、链路聚合(lag)协议或任何其他类型和形式的流量分布、负载平衡和路由来执行流量分布。
82.设备集群400可以经由服务器数据平面404耦合到第二网络104(2)。类似于客户机数据平面402,服务器数据平面404可以被实现为交换机、集线器、路由器或可以在集群400内部或外部的其他网络装置。在一些实施例中,客户机数据平面402和服务器数据平面404可以合并或组合成单个装置。
83.在一些实施例中,集群400的每个设备200可以经由内部通信网络或后平面406连接。后平面406可以启用节点间或设备间控制和配置消息,用于流量的节点间转发,和/或用于将配置和控制流量从管理员或用户传送到集群400。在一些实施例中,后平面406可以是物理网络、vpn或隧道、或其组合。
84.e.基于服务图的平台和技术
85.现在参考图5a-5c,将讨论基于服务图的平台和技术的系统和方法的实施方式。服务图是一种有用的技术工具,可通过其组件和网络元件的拓扑来可视化服务。服务可以由微服务组成,每个微服务处理服务的一个或多个功能的特定集合。网络流量可以经过服务拓扑,例如与服务器通信以访问服务的客户机(例如,北-南流量)。服务的网络流量可以包括服务的微服务之间(例如在数据中心内或数据中心之间)(例如,东-西流量)通信的网络流量。服务图可用于识别和提供服务的这种网络流量以及用于提供服务的任何网络元件的操作和性能的度量。服务图可用于识别和确定服务的问题以及拓扑的哪一部分导致问题。服务图可用于提供服务的实施、管理和配置以改善这种服务的操作性能。
86.参考图5a,将描述用于服务图的系统的实施方式,例如图5b中所示的那些。网络上的装置,例如网络装置200、205或服务器206,可以包括服务图生成器和配置器512、服务图显示器514和服务图监测器516。服务图生成器和配置器512(通常称为作为服务图生成器512),可以识别网络中元件的拓扑510和与网络和元件相关的度量518,以生成和/或配置服务图505a-n。服务图505a-n(通常称为服务图505)可以与具有度量518'和/或拓扑510'中的任何一个一起存储在一个或多个数据库中。服务图生成器512可以生成服务图505的数据以例如经由用户接口以显示或呈现的形式显示,生成被称为服务图形显示器514。服务图监测器516可以监测拓扑的网络元件和用于度量518的服务以配置和生成服务图505和/或动态地或实时地更新服务图显示器514的或由服务图显示器514表示的元件和度量518。
87.拓扑510可以包括识别、描述、指定或以其他方式表示在访问任何一个或多个服务(例如本文描述的服务275中的任何一个)时使用、经过的、或以其他方式包括这样的一个或多个服务或其部分的任何元件的数据。拓扑可以包括识别或描述为访问或使用服务而经过的任何一个或多个网络和网络元件的数据,包括任何网络装置、路由器、交换机、网关、代理、设备、网络连接或链接、互联网服务提供者(isp)等。拓扑可以包括识别或描述在访问服务时使用或经过的任何一个或多个应用、软件、程序、服务、过程、任务或功能的数据。在一些实施方式中,服务可以由多个微服务组成或包括多个微服务,每个微服务提供服务的或用于服务的一个或多个功能、功能性或操作。拓扑可以包括识别或描述服务的任何一个或多个组件的数据,例如用于提供服务的程序、功能、应用或微服务。拓扑可以包括关于拓扑的任何部分(例如拓扑的任何元件)的参数、配置数据和/或元数据。
88.服务图505可以包括表示服务275的拓扑的数据,例如构成这种服务或由该服务使用的任何元件,例如如图5b所示。服务图可以是节点基(node base)形式,例如节点的图形形式,每个节点代表服务拓扑的元件或功能。服务图可以使用经由各种连接器或链接彼此连接的节点来表示服务的拓扑,这些连接器或链接可以被称为弧。弧可以标识由弧连接的元件之间的关系。节点和弧可以以标识或描述一个或多个服务的方式布置。节点和弧可以以标识或描述由一个或多个服务提供的功能的方式布置。例如,功能节点可以表示应用于流量的功能,例如转换(ssl终止、vpn网关)、过滤器(防火墙)或终端(入侵检测系统)。服务图中的功能可能使用一个或多个参数并具有一个或多个连接器。
89.服务图可以包括节点和弧的任何组合以表示服务、拓扑或其部分。节点和弧可以以标识或描述服务以及用于访问服务的任何元件的物理和/或逻辑部署的方式布置。节点和弧可以以标识或描述访问或使用服务时的网络流量的方式布置。节点和弧可以以标识或描述服务组件的方式布置,例如相互通信以提供服务功能的多个微服务。服务图可以以某
种方式存储在诸如数据库的存储器中,以便服务图生成器在存储器中生成服务图和/或以显示形式514呈现服务图。
90.服务图生成器512可以包括用于建立、创建、生成、实现、配置或更新服务图505的应用、程序、库、脚本、服务、过程、任务或任何类型和形式的可执行指令。服务图生成器可以将表示服务图的数据读取和/或写入数据库、文件或其他类型的存储装置。服务图生成器可以包括用于构建节点和弧的布置以在存储器中具有服务图的电子表示的逻辑、函数和操作。服务图生成器可以读取或访问数据库中的数据并将数据存储到数据结构和存储器元件中以提供或实现可以更新或修改的服务图的基于节点的表示。服务图生成器可以使用来自拓扑的任何信息来生成服务图。服务图生成器可以进行网络调用或使用发现协议来识别拓扑或其任何部分。服务图生成器可以使用任何度量(例如在存储器或存储装置中或来自其他装置)来生成服务图。服务图生成器可以包括用于构建节点和弧的布置以提供服务图的图形或视觉表示的逻辑、功能和操作,例如在显示装置的用户接口上。服务图生成器可以包括用于配置服务图的任何节点或弧以表示由节点或弧表示的相应或底层元件的配置或参数的逻辑、功能和操作。服务图生成器可以包括逻辑、功能和操作以包括、识别或提供与服务图显示器的节点和弧的布置有关或作为其一部分的度量。服务图生成器可以包括用于程序、应用、服务、任务、过程或系统的应用编程接口(api)以创建、修改服务图或与服务图交互。
91.服务图显示器514可以包括用于在任何类型和形式的显示装置上呈现或显示的服务图505的任何图形或电子表示。服务图显示器可以以视觉形式呈现以具有服务图的节点和弧的任何类型的颜色、形状、大小或其他图形指示符,以表示相应元件的状态或状态。服务图显示器可以以视觉形式呈现以具有服务图的节点和弧的任何类型的颜色、形状、大小或其他图形指示符,以表示一个或多个度量的状态或状况。服务图显示器可以包括提供服务图的视觉形式的任何类型的用户接口,例如仪表板。服务图显示器可以包括任何类型和形式的用户接口元件以允许用户交互、接口或操纵服务图。服务图显示器的部分可以是可选择的以识别信息,例如关于服务图的该部分的度量或拓扑信息。服务图显示器的部分可以为用户提供用户接口元件以针对服务图或其部分采取动作,例如修改元件的配置或参数。
92.服务图监测器518可以包括应用、程序、库、脚本、服务、过程、任务或任何类型和形式的可执行指令以接收、识别、处理拓扑510的度量518。服务图监测器518经由度量518监测服务图的元件的配置、性能和操作。服务图监测器可以从网络上的一个或多个装置获得度量。服务图监测器可以从经过服务图监测器的装置的网络流量中识别或生成度量。服务图监测器可以从拓扑的任何元件接收度量的报告,例如由服务图中的节点表示的任何元件。服务图监测器可以从服务接收度量的报告。根据度量,服务图监测器可以确定在服务图中或由服务图(例如由服务图的节点)表示的元件的状态、状况或条件。根据度量,服务图监测器可以确定在服务图中或由服务图(例如由服务图的弧)表示的网络流量或连接的网络的状态、状况或条件。服务图生成器和/或服务图监测器可以用节点或弧、由节点或弧表示的元件、服务、网络或经过拓扑的网络流量的状态、状况或条件的任何度量或任何改变,例如连续地或以预定频率或基于事件来更新服务图显示器。
93.度量518、518’(总的称为度量518)可以存储在图5b中的网络装置上,例如在存储
器或存储装置中。度量518、518’可以存储在同一装置上的数据库中或通过网络存储到另一个装置,例如服务器。度量可以包括拓扑、服务或网络的任何元件的任何类型和形式的测量。度量可以包括关于接收、传输或经过由节点或弧表示的网络元件的请求或响应的量、速率或定时的度量。度量可以包括关于由节点或弧表示的元件对资源(例如存储器、带宽)的使用的度量。度量可以包括关于服务的性能和操作的度量,包括服务的任何组件或微服务,例如响应率、事务响应和时间。
94.图5b示出了考虑到东-西网络流量和南-北网络流量的与服务的微服务相关的服务图的实施方式。简而言之,客户机102可以经由一个或多个网络104访问数据中心,该数据中心具有提供一个或多个服务275a-275n(总的称为服务275)的服务器106a-106n(总的称为服务器106)。这些服务可以由多个微服务575a-575n(总的称为微服务575)组成。服务275a可以包括微服务575a和575n,而服务275b可以包括微服务575b和575n。微服务可以经由应用编程接口(api)在微服务之间进行通信。服务图505可以表示服务的拓扑和关于网络流量的度量,例如东-西网络流量和南-北网络流量。
95.南-北网络流量通常描述客户机和服务器之间的网络流量并与之相关,例如客户机经由网络104到数据中心的服务器和/或服务器经由网络104到客户机,如图5b所示。东-西网络流量通常描述数据中心内元件之间的网络流量并与之相关,例如数据中心到数据中心、服务器到服务器、服务到服务或微服务到微服务。
96.服务275可以包括微服务575。在一些方面,微服务是一种面向服务的架构风格,其中应用被构建为不同较小服务的集合,而不是一个整体或单个应用(有时称为整体应用)。一个服务具有多个独立的应用或服务(例如,微服务),它们可以独立运行,并且可以使用不同的编码或编程语言创建,而不是一个单一应用。因此,一个更大的服务器可以由更简单和独立的程序或服务组成,这些程序或服务可以由它们自己执行。这些较小的程序或服务组合在一起以提供较大服务的功能。在某些方面,基于微服务的服务将应用构建为松散耦合的服务的集合。将服务分解为不同的较小服务的好处是它改善了模块化。这使得应用或服务更容易理解、开发、测试,并且能够适应架构或部署的变化。
97.微服务包括一个或多个功能或功能性的实现。微服务可以是具有明确或既定接口的自包含业务功能,例如应用编程接口(api)。在一些实施方式中,微服务可以部署在虚拟机或容器中。服务可以使用微服务上的一个或多个功能,也可以使用不同微服务的另一个或多个功能。在操作或执行服务时,一个微服务可以向另一个微服务进行api调用,并且该微服务可以经由api调用、事件处理器或其他接口机制提供响应。在操作或执行微服务时,该微服务可以向另一个微服务进行api调用,而该微服务在其操作或执行中又会调用另一个微服务,以此类推。
98.服务图505可以包括经由一个或多个弧572a-572n连接或链接的多个节点570a-n。服务图可以具有不同类型的节点。节点类型可用于表示物理网络元件,例如服务器、客户机、设备或网络装置。节点类型可用于表示端点,例如客户机或服务器。节点类型可用于表示端点组,例如客户机或服务器的组。节点类型可用于表示逻辑网络元件,例如技术、软件或服务的类型或者元件的分组或子分组。节点类型可用于表示功能元件,例如由拓扑的元件或服务提供的功能。
99.任何节点570的配置和/或表示可以标识由节点表示的元件的状态、状况和/或度
量。节点的图形特征可以标识或指定由节点表示的元件的操作或性能特征。节点的大小、颜色或形状可以标识元件是可操作的还是活动的操作状态。节点的大小、颜色或形状可以标识元件的错误条件或问题。节点的大小、颜色或形状可以标识网络流量的水平、接收、传输或经过由节点表示的网络元件的请求或响应的量。节点的大小、颜色或形状可以标识节点所代表的元件对资源(例如存储器、带宽、cpu或存储装置)的使用水平。节点的大小、颜色或形状可以识别与节点或由节点表示的元件相关联的任何度量的阈值的相关性。
100.任何弧572的配置和/或表示可以标识由弧表示的元件的状态、状况和/或度量。弧的图形特征可以标识或指定由弧表示的元件的操作或性能特征。节点的大小、颜色或形状可以标识由弧表示的网络连接是可操作的还是活动的操作状态。弧的大小、颜色或形状可以标识与弧相关联的连接的错误条件或问题。弧的大小、颜色或形状可以标识与弧相关联的网络流量的错误条件或问题。弧的大小、颜色或形状可以标识网络流量的水平、接收、传输或经过由弧表示的网络连接或链接的请求或响应的量。弧的大小、颜色或形状可以通过由弧表示的网络连接或流量来标识资源的使用水平,例如带宽。节点的大小、颜色或形状可以标识与和弧相关联的任何度量的阈值的相关性。在一些实施方式中,弧的度量可以包括每弧的流量、每弧的等待时间或每弧的错误率的任何测量。
101.现在参考图5c,将描述用于生成和显示服务图的方法的实施方式。简要概述方法580,在步骤582,例如针对一个或多个服务的配置标识拓扑。在步骤584,监测拓扑的元件的度量,例如针对服务的度量。在步骤586,生成和配置服务图。在步骤588,显示服务图。在步骤590,可以标识或确定服务或拓扑的配置、操作和性能的问题。
102.在步骤582,装置标识一个或多个服务的拓扑。装置可以从诸如数据库之类的存储装置获得、访问或接收拓扑510。装置可以配置有用于服务的拓扑,例如由用户配置。因此,装置可以经由在网络上通信的一个或多个发现协议来发现拓扑或部分。该装置可以经由网络从一个或多个其他装置获得或接收拓扑或其部分。装置可以标识构成一个或多个服务的网络元件。装置可以标识提供一个或多个服务的功能。装置可以识别提供该功能的其他装置或网络元件。该装置可以标识用于北-西流量的网络元件。装置可以标识东-西流量的网络元件。装置可以识别提供服务的微服务。在一些实施方式中,服务图生成器基于拓扑建立或生成服务图。服务图可以存储到存储器或存储装置中。
103.在步骤584,监测拓扑的元件的度量,例如针对服务。装置可以从其他装置接收关于拓扑的一个或多个网络元件的度量。装置可以从经过装置的网络流量确定度量。装置可以从拓扑的网络元件接收度量,例如经由报告或事件。装置可以监测服务以获得或接收关于服务的度量。度量可以存储在存储器或存储装置中,例如与相应的服务图相关联。装置可以将一个或多个度量与服务图的相应节点相关联。装置可以将一个或多个度量与服务图的相应弧相关联。装置可以在调度的或预定的频率上监测和/或获得和/或接收度量。装置可以在连续的基础上(例如在度量改变时实时或动态地)监测和/或获得和/或接收度量。
104.在步骤586,生成和配置服务图。服务图生成器可以至少基于拓扑来生成服务图。服务图生成器可以至少基于服务来生成服务图。服务图生成器可以基于多个服务来生成服务图。服务图生成器可以至少基于组成服务的微服务来生成服务图。服务图生成器可以基于数据中心、数据中心的服务器和/或数据中心的服务来生成服务图。服务图生成器可以至少基于东-西流量和相应的网络元件来生成服务图。服务图生成器可以至少基于北-南流量
和相应的网络元件来生成服务图。服务图生成器可以用关于由服务图的节点或弧表示的元件的参数、配置数据或元数据来配置服务图。服务图可以由装置自动生成。服务图可以响应于用户的请求而生成,例如经由装置的评论或用户接口。
105.在步骤588,显示服务图。该装置,例如经由服务图生成器,可以创建服务图显示器514,以经由显示装置显示或呈现,例如呈现在用户接口上。服务图显示器可以包括服务图的节点和弧的视觉指示符或图形特征(例如,大小、形状或颜色)以标识与节点或弧相关联或相对应的元件的状态、状况或条件。服务图显示器可以经由控制板或其他用户接口来显示或呈现,其中用户可以监测服务和拓扑的状态。可以更新服务图显示器以显示服务、拓扑或其任何元件的度量或状态、状况和/或条件的变化。经由服务图显示器,用户可以与服务图接口或交互以发现关于任何网络元件的信息、数据和细节,例如服务的微服务的度量。
106.在步骤590,可以标识或确定服务或拓扑的配置、操作和性能的问题。装置可以通过将服务的度量与阈值进行比较来确定服务的配置、操作或性能的问题。装置可以通过将服务的度量与先前或历史值进行比较来确定服务的配置、操作或性能的问题。装置可以通过标识度量的改变来确定服务的配置、操作或性能的问题。装置可以通过标识节点或弧或由节点或弧表示的元件的状态、状况或条件的改变来确定服务的配置、操作或性能的问题。装置可以改变服务图的配置和/或参数。装置可以改变服务的配置。装置可以改变拓扑的配置。装置可以改变构成拓扑或服务的网络元件的配置。用户可以通过查看、探索或与服务图显示器和任何度量交互来确定服务的配置、操作或性能的问题。用户可以改变服务图的配置和/或参数。用户可以改变服务的配置。用户可以改变拓扑的配置。装置可以改变构成拓扑或服务的网络元件的配置。
107.f.用于多个数据中心的透明弹性的系统和方法
108.图6a和6b描绘了用于多个数据中心的透明弹性的系统和方法。所描述的系统和方法确定api调用是否是幂等的。如果api调用是幂等的,则调用可以同时发送到多个数据中心。如果api调用不是幂等的,则可以一次将调用发送到一个数据中心,直到接收到响应或发生超时。自动为幂等api调用或非幂等api调用提供多区域数据中心调用,可在数据中心或区域故障期间提供更快的响应时间。在服务器侧自动提供多区域调用将逻辑从客户机移出并移入透明且集中管理的服务中。这可以允许业务逻辑专注于核心逻辑,而不是重试请求或管理非独立服务的多区域方面的逻辑。
109.图6a描绘了用于为幂等和非幂等api调用提供透明弹性的服务图的示例实施方式。简而言之,客户机102可以经由一个或多个网络104访问一个或多个数据中心510a-510n(本文中总的称为数据中心510)中的一个或多个服务器106a-106n(服务器106),例如通过经由装置602发送请求。该请求可以是api请求或api调用的形式,例如对服务或微服务。装置602的策略管理器605可以访问策略604以确定请求是否是幂等的,并提供用于将api请求传送到一个或多个数据中心510 510的配置。
110.如果请求可以被多次满足而不改变结果超出初始应用,则该请求是幂等的。如果api调用是幂等的,则多个api调用和响应会产生与单个api调用和响应相同的响应。这允许同时发送多个api调用,而无需担心多个响应会改变输出。该属性可用于在系统中构建冗余和弹性,并通过同时而非顺序地向多个数据中心510发送请求来减少延迟时间。
111.该系统可以包括客户机102。客户机102 102可以通过网络104 104发起api调用以
访问数据中心510中的服务器,例如经由装置602。客户机102可以对在服务器上执行的服务275进行api调用。客户机102可以对作为服务器的服务的一部分执行的微服务575进行api调用。尽管在图6a中被示为客户机102,但请求者可以是服务器,例如另一个数据中心中的服务器。请求者可以是服务或微服务575,例如一个微服务575跨数据中心调用另一微服务575。在一些实施例中,该请求被导向或以装置602为目的地。在一些实施例中,该请求被导向或以服务器为目的地并且被装置602拦截或接收。
112.该系统还可以包括数据中心510,例如数据中心510 510a-e。每个数据中心510具有提供一个或多个服务275a-275n(通常称为服务275)的多个服务器106a-106n(总的称为服务器106)。这些服务可以由多个微服务575 575a-575n(总的称为微服务575或微服务575 575)组成。服务275a可以包括微服务575 575a和575n,而服务275b可以包括微服务575575b和575n。微服务575可以经由应用编程接口(api)在微服务575之间进行通信。
113.任何客户机102都可以经由一个或多个网络104s 104访问装置602和/或数据中心510。尽管图6a中所示的实施例示出了客户机102和装置602之间的一个或多个网络104,但在其他实施例中,客户机102和装置602可以在同一网络104上。尽管图6a中所示的实施例示出了装置602和数据中心510之间的一个或多个网络104,但在其他实施例中,装置602和数据中心510可以在同一网络104上。各种网络104可以是相同类型的网络104或不同类型的网络104。例如,在一些实施例中,网络104(1)可以是专用网络,例如局域网(lan)或公司内联网,而网络104(2)和/或网络104(n)可以是公共网络,例如广域网(wan)或互联网。在其他实施例中,网络104(1)和网络104(n)都可以是专用网络。网络104可以采用一种或多种类型的物理网络和/或网络拓扑,例如有线和/或无线网络104s,并且可以采用一种或多种通信传输协议,例如传输控制协议(tcp)、互联网协议(ip)、用户数据报协议(udp)或其他类似协议。
114.系统可以包括装置602。装置602可以被实现为服务器106、网关、路由器、交换机、网桥、代理或其他类型的计算或网络装置。装置602可以是本文描述的设备或中间装置200的任何实施例。装置602可以被部署在客户机102和服务器106的中间。
115.装置602可以包括策略管理器604和用于处理来自任何客户机102的任何api调用的一个或多个策略604。装置602的策略管理器604可以使用策略604来确定api调用是否是幂等的并相应地处理api调用。经由策略管理器604和策略604,装置602可以确定哪些一个或多个数据中心510转发api调用并接收对api调用的响应。
116.策略管理器604可以包括应用、程序、服务、任务、脚本、过程和/或任何类型和形式的可执行指令以将一个或多个策略604应用于一个或多个请求。在一些实施例中,策略管理器604可以是或包括本文别处描述的策略引擎236。在一些实施例中,策略管理器604可以被合并为装置602的虚拟服务器106的一部分。策略管理器604可以实施逻辑、规则和/或功能以将一个或多个策略604应用于请求,例如确定该请求是否是幂等的以及如何相应地处理该请求。
117.策略管理器604可以使用策略604来确定如何向数据中心510发送请求。策略604可以确定装置602进行复制api调用并将它们同时地转发到数据中心510。策略604可以确定装置602进行复制api调用并且在超时时间段之后将它们顺序地转发到数据中心510。策略604可以识别要发送复制api调用的数据中心510。可以基于数据中心510的延迟或数据中心510
的地理位置来识别数据中心510。如果请求是顺序发送的,则策略604可以对所选择的数据中心510进行排序以确定它们被转发请求的顺序。策略604可以基于所选择的数据中心510的地理位置或数据中心的等待时间对它们进行排序。
118.策略604可以被配置为由策略管理器604使用以识别请求是否是幂等的。策略604可以包括一个或多个参数,该参数被配置为识别请求的名称,例如api调用的名称以及该请求是否是幂等的。在一些实施例中,请求可以指定它是幂等请求,例如,策略604可以识别请求中指示该请求是幂等的字段。策略604可以配置有用于识别数据中心510以用于api请求的一个或多个规则,例如数据中心510的有序列表。策略604可以配置有规则、参数或设置以指示或指导装置602基于地理选择和使用数据中心510(例如,首先最近的)。策略604可以配置有规则、参数或设置以指示或指导装置602基于等待时间(例如,首先最快的)来选择和使用数据中心510。
119.在一些实施例中,策略管理器604可以将请求与一组已知的幂等请求进行比较。已知的幂等请求可以存储在诸如类、列表或数组之类的数据结构中。在一些实施例中,装置602可以测试或监测对幂等性的请求,并且如果被识别为这样,则存储或配置装置602以将请求的api调用识别为幂等的。
120.策略管理器604可以根据策略604确定将来自客户机102的请求传送到的数据中心510的身份。数据中心510可以由用户(例如管理员)标识。数据中心510可以通过一组一个或多个策略604来标识。数据中心510可以基于数据中心510的等待时间来标识。数据中心510可以基于数据中心510的位置来标识。可以基于阈值等待时间值来选择数据中心510。例如,可以选择低于指定阈值等待时间值的任何数据中心510。如果请求是幂等的,则所使用的数据中心510的身份可能不同。例如,幂等的请求可能对每个数据中心510的更高阈值延迟值具有更高的容忍度,同时基于同时地将请求转发到多个数据中心510仍然保持足够的客户机102响应时间。
121.所选择的数据中心510可以随机排序或基于一个或多个策略604排序。数据中心510的顺序可以由用户(例如管理员)配置。数据中心510的顺序可以在装置602发出请求时自动确定,例如基于监测数据中心510的状态、性能或操作,例如经由一个或多个度量。数据中心510的顺序可以基于数据中心的等待时间。例如,具有最短等待时间的数据中心510可以首先被排序。数据中心510可以基于数据中心的地理位置进行排序。例如,可以选择地理上靠近装置602的数据中心510。在一些情况下,在地理上最靠近装置602的数据中心510可以被首先排序。
122.策略604可用于确定装置602将请求转发到所选择的数据中心510的时间。例如,如果在等待时间内或到期超时时间段内未接收到响应,策略604可确定同时发送幂等请求而顺序发送非幂等请求。
123.策略604可以被配置为由策略管理器604使用以标识任何适用的超时时间段。在顺序的、非幂等的api调用的情况下,可以使用超时时间段来确定何时将复制api调用转发到一组有序的、所选择的数据中心510中的下一个所选择的数据中心。超时时间段可以用于幂等和非幂等的api调用以确定一个请求或一组请求未能从一个或多个数据中心510征求响应。超时时间段可以为每个数据中心510指定或配置,并且在一些情况下,可以对各个数据中心510是不同的。
124.在幂等请求中,装置602可以将api调用同时转发到多个数据中心510,例如通过复制请求的api调用或以其他方式复制请求。装置602可以使用对来自任何数据中心510的任何复制api请求接收到的第一响应来转发回客户机102。如果请求是幂等的,则所选择的数据中心510可以不同。例如,如果请求是幂等的,则策略管理器604可以允许选择响应的等待时间比策略管理器604允许被选择转发非幂等请求的数据中心510更长的数据中心510。
125.如果装置602从数据中心510接收到多个响应,则策略604可以确定使用哪个响应来响应客户机102。例如,如果装置602同时向多个数据中心510发送请求,这是有可能发生的。例如,如果请求是幂等的并且装置602同时将请求传送到多个数据中心510,则装置602可以从多个数据中心510接收回多个响应。策略604可以确定使用第一响应作为对请求的响应。策略604可以确定使用指定时间跨度内的最后响应。策略604可以基于哪一个响应是成功的来选择响应。策略604可以确定比较多个响应并使用最频繁出现的响应。策略604可以确定请求的预期响应的范围或类型并使用落入预期范围或类型的预期响应内的第一响应。
126.如果api调用不是幂等的,则装置602可以将api调用转发到数据中心510中的所选择的一个,并等待响应直到超时时间段到期。如果超时时间段到期,则装置602可以将api调用转发到另一个所选择的数据中心510,例如通过复制api调用或请求等,直到装置602接收到响应。如果装置602接收到响应,则装置602可以使用该响应来响应客户机102的请求。如果在超时时间段内没有接收到来自第一数据中心510的响应,则策略604可以确定将请求发送到的第二数据中心510或一组数据中心510。策略604可以确定装置602在将请求的副本转发到第二数据中心510之前将等待响应的超时时间段。
127.如果请求是幂等的,则策略604可以确定同时地将请求传递到多个数据中心510。策略604可以确定将请求同时发送到的多个数据中心510。如果请求不是幂等的,则策略604可以确定将请求发送到的数据中心和等待响应的超时时间段。
128.如果一个请求或一组请求未能从一个或多个数据中心510征求到响应,则策略可以重试该请求或该组请求。策略可以确定向同一数据中心510或一组数据中心510重复该请求或该组请求。如果策略确定向不同的一组数据中心510重复该请求或该组请求,则策略可使用同一组规则来选择第二组数据中心510,例如针对数据中心中的当前最小等待时间进行优化,然后针对地理位置进行优化,或者策略可以使用不同的一组规则来选择第二组数据中心510。策略604可以限制特定数据中心510被选择的次数。策略604可以限制在指定时间跨度中选择特定数据中心510的次数。
129.策略604可以确定对客户机102请求进行的重试次数。如果已经进行了最大次数的重试而没有来自数据中心的响应,则策略604可以确定要做什么。例如,策略604可以确定不应再重试该请求。策略604可以确定应该延迟或不延迟地重试请求,以及在重试时应该将请求传送到哪些数据中心510。当最大次数的重试已经发生而没有响应时,策略604可以确定应该向客户机102或另一实体发送错误消息。策略604可以确定该请求应该放在失败的请求列表中或被隔离。
130.图6b描绘了用于多个数据中心510的透明弹性的示例方法。在步骤680,装置602通过网络104从请求者(例如客户机102或服务器106)接收请求。在步骤682,装置602确定请求的api调用是否是幂等的。如果请求是幂等的,则该方法进行到步骤684。如果该请求不是幂等的,则该方法进行到步骤690。
131.如果请求是幂等的,则在步骤684,装置602确定多个数据中心510同时发送请求。在步骤686,装置602同时向所选择的多个数据中心510发送请求。在步骤688,装置602等待来自所选择的多个数据中心510中的一个或多个的一个或多个响应。在步骤689,装置602从一个或多个接收到的响应中选择响应。在步骤698,装置602向请求者发送所选择的响应。
132.如果请求不是幂等的,则该方法进行到步骤690。在步骤690,装置602确定一个或多个数据中心510以向其发送api请求和等待响应的超时时间段。在步骤694,装置602等待接收来自第一数据中心的响应,直到超时时间段到期。在步骤696,装置602确定在超时值到期之前是否已经从数据中心接收到响应。如果装置602接收到响应,则该方法可以继续到步骤696。如果装置602没有接收到响应,则该方法可以返回到步骤692,在该步骤中,将请求发送到下一个所选择的数据中心510,该数据中心可以与第二超时值相关联。在步骤696,如果接收到响应,则装置602使用该响应并且在步骤698,可以将响应发送到请求装置602。
133.更详细地,在步骤680,装置602通过网络104从请求者(例如客户机102或服务器106)接收请求。装置602可以接收应用编程接口(api)请求以访问服务。api请求可以是用于访问作为服务的组件的多个微服务575中的一个微服务575的api请求。请求者可以是客户机102、服务器106、第二服务或微服务575之一。装置602可位于多个请求者和多个数据中心510之间。
134.在步骤682,装置602确定请求的api调用是否是幂等的。装置602可以标识用于请求的策略,该策略标识api请求是否是幂等的并且标识一个或多个数据中心510以复制api请求。装置602可以基于策略来确定api请求是幂等的。装置602可以基于策略来确定api请求不是幂等的。装置602可以基于api请求的名称或api请求中的字段来确定api请求是幂等的。
135.如果请求是幂等的,则在步骤684,装置602确定向多个数据中心510同时发送请求。装置602可以基于指定数据中心列表的策略来确定多个数据中心。装置602可以确定位于相同地理位置的多个数据中心510。装置602可以确定位于不同地理位置的多个数据中心510。装置602可以确定具有低于阈值的等待时间的多个数据中心510。装置602可以基于由策略的一个或多个规则标识的一些其他选择标准来确定多个数据中心510。
136.在步骤686,装置602同时向所选择的多个数据中心510发送请求。装置602可以通过制作与每个数据中心通信的请求的副本来制作复制的api请求。装置602可以将复制的api请求传送到由策略标识的多个数据中心510中的每一个,例如经由策略规则。装置602可以基于由策略的一个或多个规则标识的顺序将复制的api请求传送到多个数据中心510中的每一个。
137.在步骤688,装置602等待来自所选择的多个数据中心510中的一个或多个的一个或多个响应。装置602可以接收到来自一个或多个数据中心510的一个或多个响应。该装置602可以接收到来自一些数据中心的一些响应。装置可以接收到来自所有所选择的数据中心的响应。一些数据中心可能不提供响应。装置可以等待来自任何数据中心的响应的超时时间段,并且在超时时间段到期时使用直至那个时间点所接收到的响应,例如在步骤689的选择过程中的时间点。
138.在步骤689,装置602从一个或多个接收到的响应中选择响应。装置602可以选择第一响应。装置602可以选择最后的响应。装置602可以基于哪个请求成功来选择响应。装置
602可以比较多个响应并选择最频繁出现的响应。装置602可以确定预期响应的范围或类型并选择落在预期范围或类型的响应内的第一响应。装置602可以基于一个或多个响应中哪一个成功来选择响应。
139.在步骤698,装置602向请求者发送所选择的响应。装置602可以将从一个或多个响应中选择的响应传送给请求者。该响应可以是对复制的api调用的响应。该响应可以包括由请求者请求的数据。
140.如果请求不是幂等的,则在步骤682之后,该方法进行到步骤690。在步骤690,装置602确定一个或多个数据中心510以顺序地向其发送api请求。装置602可以通过策略604的一个或多个规则确定在将响应发送到下一个所识别的数据中心之前等待响应的超时时间段。装置602可以通过策略604的一个或多个规则确定多个数据中心510来传送api请求。装置602可以通过策略的一个或多个规则对数据中心510进行排序。多个数据中心510可以位于相同的地理位置或不同的地理位置。装置602可以生成复制的api请求。装置602可以将第一复制的api请求传送到由策略604的一个或多个规则标识的第一数据中心。第一复制的api请求可以与接收响应的超时时间段相关联。
141.在步骤694,装置602可以等待接收来自第一数据中心的响应,直到超时时间段到期或接收到响应。装置602可以等待直到超时时间段到期以确定是否已经接收到一个或多个响应。如果没有接收到响应,装置可以在超时时间段到期之前执行请求的重试。装置可以在超时时间段到期时执行请求的重试并且可以在移动到步骤696之前执行多次重试。
142.在步骤696,装置602可以确定在超时值已经到期之前是否已经从数据中心510接收到响应。如果装置602接收到响应,则该方法可以继续到步骤698。如果在步骤696,装置602没有接收到响应,则该方法可以返回到步骤692。
143.在步骤698,装置602可以向请求装置602发送响应。装置可以发送从要调用的数据中心序列或链中的一个数据中心接收到的任何响应,例如无论是否有错误或成功响应。装置可以发送从要调用的数据中心序列或链中的一个数据中心接收到的第一成功响应。
144.如果在步骤696,装置602没有接收到响应,则该方法可以在步骤692继续,其中请求被复制并且被发送到下一个所选择的数据中心510。下一个数据中心可以与第二超时值相关联。响应于超时时间段的到期,装置602可以将例如第二复制的api请求传送到第二数据中心510,例如由策略的一个或多个规则标识的第二数据中心。
145.如果在步骤696,在将api调用复制到所选择的数据中心(例如在步骤684中确定的所有数据中心510)之后还没有接收到响应,则装置602可以记录没有接收到响应和/或向请求者指示超时或错误。如果没有接收到响应,则装置602可以响应于请求向请求者发送错误消息。在一些实施例中,如果在将api调用复制到所有选择的数据中心510之后没有接收到响应,则装置602可以确定一组新的数据中心510来向其发送请求并重试该方法。
146.在步骤696,装置602使用接收到的响应。装置602可以使用从数据中心接收到的第一响应。即使是错误响应,装置也可以使用响应。装置可以使用从数据中心接收到的第一成功响应。
147.在步骤698,装置602可以向请求者发送响应。装置602可以响应于api将所选择的响应传送给请求者。装置602可以通过网络104传递该响应。
148.本文在一个或多个实施例的上下文中描述的各种元件可以单独提供或以任何合
适的子组合提供。例如,本文描述的过程可以以硬件、软件或其组合来实现。此外,本文描述的过程不限于所描述的具体实施例。例如,本文描述的过程不限于本文描述的特定处理顺序,相反,过程块可以根据需要重新排序、组合、移除或并行或串行地执行,以实现本文所阐述的结果。
149.将进一步理解,在不背离以下权利要求的范围的情况下,本领域技术人员可以对本文已经描述和示出的部件的细节、材料和布置进行各种改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献