预测性微服务系统和方法与流程

文档序号:26743893发布日期:2021-09-23 01:06阅读:179来源:国知局
预测性微服务系统和方法与流程
预测性微服务系统和方法
1.相关申请的交叉引用
2.本技术要求2018年12月12日提交的美国非临时专利申请号16/217,176的优先权,该申请的内容通过引用以其整体明确并入本文。
3.领域
4.本文描述的各方面大体上涉及计算机和计算机网络。具体地,本文描述的各方面涉及微服务、计算机软件、计算机架构、计算协议等。
5.背景
6.微服务(可作为应用的一部分共同执行的小型服务)越来越受欢迎。微服务具有超越传统计算软件的许多优点,包括易于以技术无关的方式实现,相对容易进行编程和修改,并且通常更容易在分布式计算网络上实现。
7.概述
8.以下呈现本文描述的各个方面的简化概述。本概述不是广泛综述,也不旨在识别必要的或关键的元素或描述权利要求的范围。下面的概述只是以简化形式呈现一些概念,作为下面提供的更详细描述的介绍性前序。
9.为了克服在阅读和理解本说明书时将明显的限制,本文描述的各方面涉及微服务的预测性执行。微服务可以是较大应用或服务的任何部分,使得例如每个微服务可以执行为了执行一个或更多个任务所需要的多个应用功能中的一个或更多个应用功能。在一个或更多个计算设备上执行的微服务接收应用程序接口(api)请求。api请求可以是例如对服务器上的与用户相关联的文件列表的请求。api请求可以与一系列中的多个微服务的执行相关联。虽然一些微服务可以并行执行(例如,基本上同时),但其他微服务可以串行执行(例如,使得第二微服务在第一微服务之后执行)。关于一系列中的微服务,系列中的第一微服务可以使一系列中的第二微服务使用例如内部消息(诸如内部api调用)来执行。例如,第一微服务可以完全执行,然后向第二微服务传输内部消息,并且该内部消息可以使第二微服务执行一个或更多个动作。基于确定api请求对应于一系列中的微服务的执行,计算设备可以向事件队列传输对应于api请求的事件消息。事件消息可以指示关于api请求的信息,诸如api请求的标识、可以执行api请求的一个或更多个微服务等。一系列中的微服务可以被配置为从事件队列获取事件消息,并且基于事件队列中的事件消息,在从第一微服务接收内部消息之前执行。微服务的执行可以包括执行一个或更多个步骤,诸如获取、分析和/或传输数据。微服务执行可以包括从先前微服务获取输入和/或向后续微服务提供输出。因此,通常可以等待从另一个微服务接收内部消息的一系列中的微服务可以基于事件消息,在接收到内部消息之前施行和执行早期执行步骤。早期执行步骤可以包括由微服务执行或相对于微服务执行的任何处理,该处理可以在从先前微服务接收内部消息之前执行。此类早期执行步骤可以包括认证微服务和/或用户、高速缓存数据、获取用于以后执行和/或以后微服务的数据、获取与用户帐户相关联的数据等。因为一系列中的微服务可以在接收内部消息之前执行早期执行步骤,所以一系列中的微服务的执行速度可以比一系列中的每个微服务仅在其接收到内部消息时执行的速度更快。
10.这些和附加方面将被理解为具有下文进一步详细讨论的本公开的益处。
11.附图简述
12.通过参考以下描述并考虑附图,可以获得对本文所描述的各方面及其优点的更完整理解,在附图中,相同的参考数字表示相同的特征,并且其中:
13.图1描绘了可以根据本文描述的一个或更多个示意性方面使用的示意性计算机系统架构。
14.图2描绘了可以根据本文描述的一个或更多个示意性方面使用的示意性远程访问系统架构。
15.图3描绘了涉及串行的多个微服务的示意性api调用。
16.图4描绘了涉及串行的多个微服务和事件队列的示意性api调用。
17.图5描绘了可以由微服务执行的流程图。
18.图6是关于源自api源的消息的消息流程图。
19.图7是从第一微服务的角度的流程图。
20.详细描述
21.在对各种实施例的以下描述中,参考上面标识的并形成其一部分的附图,并且其中以图示的方式示出了可以实践本文所描述的各方面的各种实施例。应当理解,在不脱离本文所述范围的情况下,可以利用其他实施例并且可以进行结构和功能修改。各个方面能够具有其他实施例,并且能够以各种不同的方式来实践或执行。
22.作为对下面更详细描述的主题的一般介绍,本文描述的各方面涉及微服务的执行。微服务的流行使其在计算机应用开发中越来越有吸引力,特别是在微服务使得能够跨多个计算设备执行应用的情况下。但微服务执行的分步性质(例如,执行第一微服务,然后在第一微服务之后执行一个或更多个第二微服务等的过程)可以在应用执行中引入不期望的延迟。例如,后续微服务可以取决于来自较早微服务的输出,使得后续微服务可能会等待直到较早微服务完成,之后再执行任何执行步骤。因此,微服务的模块化虽然在许多方面是有益的,但可引入不期望的延迟。
23.应当理解,本文使用的短语和术语是为了描述的目的并且不应被视为限制。相反,本文使用的短语和术语应被给予其最广泛的解释和含义。“包括”和“包含”及其变体的使用意味着涵盖其后列出的项目及其等同物,以及附加项目及其等同物。术语“安装”、“连接”、“耦接”、“定位”、“接合”和类似术语的使用意味着包括直接和间接的安装、连接、耦接、定位和接合。
24.计算架构
25.计算机软件、硬件和网络可以在各种不同的系统环境中使用,包括独立、联网、远程访问(也称为远程桌面)、虚拟化和/或基于云的环境等。图1示出了可以用于在独立和/或网络环境中实现本文描述的一个或更多个示意性方面的系统架构和数据处理设备的一个示例。各种网络节点103、105、107和109可以经由诸如互联网的广域网(wan)101互连。也可以或另选地使用其他网络,包括专用内联网、公司网络、局域网(lan)、城域网(man)、无线网络、个人网络(pan)等。广域网101是为了说明目的并且可以用更少的或附加的计算机网络来替换。局域网133可以具有任何已知lan拓扑中的一者或更多者,并且可以使用各种不同协议中的一者或更多者,诸如以太网。设备103、105、107和109和其他设备(未示出)可以经
由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到一个或更多个网络。
26.如本文使用并在附图中描述的术语“网络”不仅指其中远程存储设备经由一个或更多个通信路径耦接在一起的系统,而且还指可以不时耦接到具有存储能力的此类系统的独立设备。因此,术语“网络”不仅包括“物理网络”,还包括“内容网络”,其由驻留在所有物理网络中的数据(归属于单个实体)组成。
27.部件可以包括数据服务器103、web服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体访问、控制和管理,以执行本文描述的一个或更多个示意性方面。数据服务器103可以连接到web服务器105,用户通过该web服务器与所请求的数据交互并获得数据。另选地,数据服务器103可以充当web服务器本身并直接连接到互联网。数据服务器103可以通过局域网133、广域网101(例如,互联网)、经由直接或间接连接或经由某个其他网络连接到web服务器105。用户可以使用远程计算机107、109来与数据服务器103交互,例如使用web浏览器以经由web服务器105所托管的一个或更多个外部暴露的web站点连接到数据服务器103。客户端计算机107、109可以与数据服务器103协同使用以访问存储在其中的数据,或者可以用于其他目的。例如,如本领域中已知的那样,使用互联网浏览器或者通过执行通过计算机网络(诸如互联网)与web服务器105和/或数据服务器103通信的软件应用,用户可从客户端设备107访问web服务器105。
28.服务器和应用可以组合在相同物理机器上,并保留单独的虚拟地址或逻辑地址,或者可以驻留在单独的物理机器上。图1仅示出了可以使用的网络架构的一个示例,并且本领域技术人员将理解,所使用的特定网络架构和数据处理设备可以改变,并且相比于它们提供的功能是次要的,如本文进一步描述的。例如,由web服务器105和数据服务器103提供的服务可以组合在单个服务器上。
29.每个部件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备。数据服务器103例如可以包括控制数据服务器103的总体操作的处理器111。数据服务器103还可以包括随机存取存储器(ram)113、只读存储器(rom)115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。输入/输出(i/o)119可以包括用于读取、写入、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可以存储用于控制数据处理设备103的总体操作的操作系统软件123、用于指示数据服务器103执行本文描述的各方面的控制逻辑125以及提供辅助功能、支持功能和/或可以结合或可以不结合本文描述的各方面使用的其他功能的其他应用软件127。控制逻辑125也可以在本文中被称为数据服务器软件125。数据服务器软件125的功能可以指基于编码到控制逻辑125中的规则自动做出的操作或决定、由用户向系统提供输入来手动做出的操作或决定和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。
30.存储器121还可以存储用于执行本文描述的一个或更多个方面的数据,包括第一数据库129和第二数据库131。第一数据库129可以包括第二数据库131(例如,作为单独的表、报告等)。也就是说,根据系统设计,信息可以存储在单个数据库中,或者可以分离到不同的逻辑、虚拟或物理数据库中。设备105、107和109可以具有类似或不同的架构,如相对于设备103所述。本领域的技术人员将理解,如本文所述的数据处理设备103(或设备105、107或109)的功能可以扩展到例如多个数据处理设备上,以便在多个计算机上分配处理负载,从而基于地理位置、用户访问级别、服务质量(qos)等对事务进行隔离。
31.一个或更多个方面可以体现在计算机可用或可读数据和/或计算机可执行指令中,诸如在一个或更多个程序模块中,其由一个或更多个计算机或如本文所述的其他设备执行。通常,程序模块包括例程、程序、对象、部件、数据结构等,其在由计算机或其他设备中的处理器执行时执行特定任务或实现特定抽象数据类型。模块可以用随后编译以执行的源代码编程语言编写,或者可以用诸如(但不限于)超文本标记语言(html)或可扩展标记语言(xml)的脚本语言编写。计算机可执行指令可以存储在诸如非易失性存储设备的计算机可读介质上。可以利用任何合适的计算机可读存储介质,包括硬盘、cd

rom、光存储设备、磁存储设备和/或其任何组合。此外,表示如本文所述的数据或事件的各种传输(非存储)介质可以通过诸如金属丝、光纤和/或无线传输媒体(例如,空气和/或空间)的信号传导介质传播的电磁波的形式在源和目的地之间转移。本文所描述的各个方面可以体现为方法、数据处理系统或计算机程序产品。因此,各种功能可以全部或部分地体现在软件、固件和/或硬件或硬件等同物(诸如集成电路、现场可编程门阵列(fpga)等)中。特定数据结构可以用于更有效地实现本文所述的一个或更多个方面,并且在本文所述的计算机可执行指令和计算机可用数据的范围内设想了此类数据结构。
32.进一步参考图2,本文描述的一个或更多个方面可以在远程访问环境中实现。图2描绘了可以根据本文描述的一个或更多个示意性方面使用的示意性计算环境200中的包括计算设备201的示例系统架构。计算设备201可以用作单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a,并且可以被配置为提供用于客户端访问设备的虚拟机。计算设备201可以具有用于控制计算设备201的总体操作的处理器203及其相关联部件,包括ram 205、rom 207、输入/输出(i/o)模块209和存储器215。
33.i/o模块209可以包括计算设备201的用户可以通过其提供输入的鼠标、小键盘、触摸屏、扫描器、光学阅读器和/或触笔(或其他输入设备),并且还可以包括用于提供音频输出的一个或更多个扬声器以及用于提供文本、视听和/或图形输出的一个或更多个视频显示设备。软件可以存储在存储器215和/或其他存储装置内以向处理器203提供指令,从而用于将计算设备201配置成专用计算设备以便执行如本文所述的各种功能。例如,存储器215可以存储由计算设备201使用的软件,诸如操作系统217、应用程序219和相关联数据库221。
34.计算设备201可以在支持与诸如终端240(也称为客户端设备)的一个或更多个远程计算机的连接的联网环境中操作。终端240可以是个人计算机、移动设备、膝上型计算机、平板电脑或服务器,其包括以上相对于计算设备103或201描述的许多或全部元件。图2中描绘的网络连接包括局域网(lan)225和广域网(wan)229,但也可以包括其他网络。当在lan联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到lan 225。当在wan联网环境中使用时,计算设备201可以包括调制解调器或其他广域网接口227以用于通过wan 229建立通信,诸如计算机网络230(例如,互联网)。应当理解,所示的网络连接是示意性的,并且可以使用在计算机之间建立通信链路的其他装置。计算设备201和/或终端240也可以是包括各种其他部件(诸如电池、扬声器和天线(未示出))的移动终端(例如,移动电话、智能电话、个人数字助理(pda)、笔记本电脑等)。
35.本文描述的各方面也可以与许多其他通用或专用计算系统环境或配置一起操作。可以适用于本文所述各方面的其他计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、
可编程消费电子产品、网络个人计算机(pc)、小型计算机、大型计算机、包括上述系统或设备中的任一者的分布式计算环境等。
36.如图2所示,一个或更多个客户端设备240可以与一个或更多个服务器206a

206n(本文通常称为“服务器206”)通信。计算环境200可以包括安装在服务器206和客户端设备240之间的网络设备。网络设备可以管理客户端/服务器连接,并且在一些情况下可以使多个后端服务器206之间的客户端连接负载平衡。
37.客户端设备240可以称为单客户端机器240或单组客户端设备240,而服务器206可以称为单服务器206或单组服务器206。单客户端机器240可以与一个或更多个服务器206和/或一个或更多个客户端机器240通信。
38.客户端机器240可以通过以下非穷尽术语中的任一者来引用:客户端机器、客户端、客户端计算机、客户端设备、客户端计算设备、本地机器、远程机器、客户端节点、端点或端点节点。服务器206可以通过以下非穷尽术语中的任一者来引用:服务器、本地机器、远程机器、服务器场或主机计算设备。
39.客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,并且虚拟机可以是由类型1或类型2管理程序(例如,由思杰系统、ibm、vmware开发的管理程序或任何其他管理程序)管理的任何虚拟机。在一些方面,虚拟机可以由管理程序管理,而在其他方面,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。
40.客户端机器240可以显示由在服务器206或其他远程定位的机器上远程执行的应用生成的应用输出。客户端机器240可以执行虚拟机接收器程序或应用以在应用窗口、浏览器或其他输出窗口中显示输出。在一个示例中,应用是桌面,而在其他示例中,应用是生成或呈现桌面的应用。桌面可以包括针对操作系统的实例提供用户界面的图形壳,在其中可以集成本地应用和/或远程应用。如本文所使用的,应用是在操作系统(以及任选地还有桌面)的实例已经被加载之后执行的程序。
41.服务器206可以使用远程呈现协议或其他程序来将数据发送到瘦客户端或在客户端上执行的远程显示应用,以呈现由在服务器206上执行的应用生成的显示器输出。瘦客户端或远程显示协议可以是以下非穷尽协议列表中的任一者:佛罗里达州劳德代尔堡的思杰系统公司所开发的独立计算架构(ica)协议;或由华盛顿州雷德蒙的微软公司制造的远程桌面协议(rdp)。
42.远程计算环境可以包括多于一个的服务器206a

206n,使得服务器206a

206n例如在云计算环境中在逻辑上一起分组成服务器场206。服务器场206可以包括地理上分散而在逻辑上分组在一起的服务器206,或者在逻辑上分组在一起的同时彼此靠近的服务器206。服务器场206内的地理上分散的服务器206a

206n可以使用wan(广域)、man(城域)或lan(局域)进行通信,其中不同地理区域可以被描述为:不同大陆、大陆的不同区域、不同国家、不同州、不同城市、不同校园、不同房间或上述地理位置的任何组合。服务器场206可以作为单个实体来管理或者可以包括多个服务器场。
43.服务器场可以包括执行基本上类似类型的操作系统平台(例如,windows、unix、linux、ios、android、symbian等)的服务器206。服务器场206可以包括执行第一类型操作系统平台的第一组一个或更多个服务器,以及执行第二类型操作系统平台的第二组一个或更多个服务器。
44.服务器206可以根据需要被配置为任何类型的服务器,例如,文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(ssl)vpn服务器、防火墙、web服务器、应用服务器或主应用服务器、执行活动目录的服务器、或执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器。也可以使用其他服务器类型。
45.第一服务器206a可以接收来自客户端机器240的请求,将该请求转发到第二服务器206b(未示出),并用来自第二服务器206b(未示出)的响应来响应由客户端机器240生成的请求。第一服务器206a可以获取客户端机器240可用的应用的枚举,以及与托管应用的枚举内识别的应用的应用服务器206相关联的地址信息。然后,第一服务器206a可以使用web接口来呈现对客户端的请求的响应,并直接与客户端240通信以向客户端240提供对所识别的应用的访问。一个或更多个客户端240和/或一个或更多个服务器206可以通过网络230(例如,广域网101)传输数据。
46.图3描绘了涉及串行的多个微服务的示意性api调用。api请求301被示为导致了第一微服务302a、第二微服务302b和后续微服务直到最后微服务302n的执行,所有这些都是串行的。其他微服务(未示出)可以与微服务302a

302n中的任一者串行和/或并行执行,并且为了简单起见,微服务302a

302n以单个系列示出。每个微服务302a

302n可以传输到先前和后续的微服务,使得api响应303可以在例如第二微服务302b从最后微服务302n接收到内部api消息305b并且第一微服务302a从第二微服务302b接收到内部api响应305a之后,由第一微服务302a返回。以这种方式,api请求301可以被发送到第一微服务302a,并且api响应303可以从第一微服务302a接收,并且其他过程(例如,其他计算设备传输api请求301和/或接收api响应303)只需要与单个微服务相对应。例如,确保仅从单个微服务(例如,第一微服务302a)发送和接收api请求(诸如api请求301)和api响应(诸如api响应303)可以允许其他微服务是私有的和/或更安全的,和/或可以允许程序员避免将特定功能(例如,允许微服务传输特定格式的api响应的功能)放在多于一个微服务中。
47.对于某些执行步骤,微服务302a

302n可以取决于来自先前和/或后续微服务的内部消息。此类内部消息可以包括微服务之间的任何传输,诸如数据的传输,一个或更多个微服务已完成一个或更多个处理步骤的指示等。例如,第二微服务302b可以在接收到内部消息304a时执行,并且最后微服务302n可以在接收到内部消息(例如,内部消息304b)时执行。先前微服务的输出可以是后续微服务的执行的依赖项。例如,第一微服务302a可以被配置为确定用户名,并且第二微服务302b可以被配置为访问网站并使用用户名来认证用户,使得第二微服务302b可能无法执行直到第一微服务302a完成。微服务可以被配置为执行不需要要求来自先前微服务的输出的步骤。例如,返回到先前示例,第二微服务302b能够在没有用户名的情况下访问网站,并且可以只需要用户名来执行前述认证步骤。因此,可能出现不期望的延迟:例如,如果第二微服务302b等待内部消息304a直到执行任何执行步骤,则它可以延迟可在任何时间执行的步骤的执行(例如,访问前述网站),因为它们不依赖于第一微服务302a的输出。尽管微服务302a

302n以单个系列描述,但是微服务可以依赖于一个或更多个先前或后续的微服务。例如,单个微服务可以依赖于四个先前微服务的输出,和/或一个或更多个微服务可以循环以使得后续微服务向先前微服务提供输出,该先前微服务可以向后续微服务提供第二输出。因此,微服务可以根据需要配置成串行、并行、网格或任何其
他配置。
48.作为图3中微服务302a

302n可以如何操作的简化示例,api请求301可以对应于例如对密码保护网站的网页的请求。第一微服务302a可以被配置为接收api请求301,获取与api请求301相关联的用户的登录信息(例如,用户名的指示和/或密码的指示),并在内部消息304a中将其传输到第二微服务302b。第二微服务302b可以被配置为获取网站的登录页面并使用登录信息来执行认证步骤,然后在内部消息304b中将认证的确认传输到最后微服务302n。最后微服务302n可以被配置为基于认证的确认来获取网页数据并将其传递回第一微服务302a,该第一微服务可以将网页数据作为api响应303传输。第二微服务302b可能直到从第一微服务302a接收到内部消息304a才获取网站的登录页面。因此,在第二微服务302b的执行中可能存在延迟。
49.预测性微服务执行
50.图4描绘了涉及串行的多个微服务的示意性api调用(与图3的那种类似),并且已经添加了事件队列402。图4中描绘的事件队列402可以是计算设备(例如,数据库)和/或在计算设备上执行的过程,其被配置为接收、存储内部消息并向微服务传输内部消息。在图4中,api请求301、第一微服务302a、第二微服务302b、最后微服务302n、api响应303、内部消息304a和内部消息304b可以与图3所示的相同。第一微服务302a可以向事件微服务401传输对应于api请求301的事件消息403a,该事件微服务401可以被配置为向事件队列402发送事件消息403b。事件消息403b可以对应于事件消息403a,使得两个消息可以相似但不必相同。例如,事件消息403b可以基于事件微服务401接收到事件消息403a而被传输,但是包含在事件消息403b中的数据可以是包含在事件消息403a中的数据的子集。事件队列402可以被配置为接收、存储和/或传输内部消息(诸如事件消息403b)。如箭头404a和箭头404b所描绘的,微服务(诸如第二微服务302b和最后微服务302n)可以被配置为向事件队列402发送消息和从该事件队列接收消息。
51.事件微服务401可以通信地耦接到第一微服务302a,使得可以在从第一微服务302a传输内部消息(例如,内部消息304a)之前将内部消息传输到事件队列402。附加地和/或另选地,第一微服务302a可以通信地耦接到事件队列402,使得第一微服务302a可以执行关于事件微服务401描述的所有步骤。附加地和/或另选地,事件微服务401可以但不必通信地耦接到第一微服务302a。例如,事件微服务401可以通信地耦接到第二微服务302b。
52.事件消息403a和事件消息403b可以包括关于api请求301的信息。例如,事件消息403a和/或事件消息403b可以包括与api请求301相关联的类型或时间的识别。作为另一个示例,事件消息403a和/或事件消息403b可以包括关于api请求301所需的一个或更多个微服务、与api请求301相关联的依赖性等的信息。事件消息403a和/或事件消息403b可以指示已经接收到api请求301。例如,事件消息403a和/或事件消息403b可以包括api请求301的标识,并且事件队列402可以使用该标识来查询数据库,以基于api请求301确定要传输到微服务的一个或更多个内部消息。尽管事件消息403a和事件消息403b在图4中分别示出,但单个事件消息可以从第一微服务302a传输到事件队列402。事件消息403a和事件消息403b不必相同。例如,事件消息403a可以包含关于api请求301的大量数据,并且事件微服务401可以确定微服务只需要一部分数据,并且将除微服务所需要的数据部分以外的所有数据移除。例如,可以在事件消息403b中仅传输特定微服务所需的数据。这可以有利地提高将事件消
息403b存储并传输到微服务的速度。
53.如箭头404a和箭头404b所示,微服务302a

302n可以被配置为从事件队列402获取事件消息,和/或事件队列402可以被配置为向微服务302a

302n传输新事件消息。例如,第二微服务302b可以被配置为查询事件队列402的事件消息。可以周期性地传输此类查询,例如,使得与当前执行一个或更多个步骤的微服务相比,当前未执行任何步骤的微服务可以更快地查询事件队列402。微服务可以被配置为向事件队列402传输对事件消息的请求,并且事件队列402可以被配置为响应于该请求向微服务传输事件消息。事件队列402可以被配置为在没有接收到请求的情况下向一个或更多个微服务传输事件消息。例如,当接收到新事件消息时,事件队列402可以向微服务发送这样的新事件消息。从事件队列402获取事件消息可以使用与微服务通过其传输诸如内部消息304a和内部消息304b的内部消息的机制相同或不同的机制来执行。例如,微服务可以通过网络向事件队列402传输请求和/或从事件队列接收事件消息。
54.微服务302a

302n可以被配置为基于事件队列402中的事件消息(例如,事件消息403b)执行早期执行步骤。早期执行步骤可以包括不依赖于来自先前微服务的输出的任何形式的执行,尽管此类早期执行步骤可以依赖于事件队列中的事件消息中包含的信息。早期执行步骤可以是早期的,因为它们是在后续执行步骤之前执行的,该后续执行步骤确实依赖于来自先前微服务的内部消息。例如,第二微服务可以在接收到内部消息304a之前执行早期执行步骤,并且然后在接收到内部消息304a之后执行不同的稍后执行步骤。微服务302a

302n可以被配置为基于事件队列402中的一个或更多个事件消息来认证一个或更多个微服务。例如,事件队列402中的一个或更多个事件消息可以包括认证数据(例如,与api请求301相关联的用户名),并且第二微服务302b可以使用认证数据以利用不同计算设备的服务来认证本身。例如,服务可以是不同计算设备上的银行服务,并且认证数据可以用于认证微服务对银行服务所支持的支票帐户的访问。作为另一个示例,事件队列402中的一个或更多个事件消息可以包括用户名,并且第二微服务302b可以使用该用户名来从存储设备中获取与和该用户名相关联的帐户相关联的数据。例如,微服务可以使用该用户名从外部数据库获取与该用户名相关联的互联网协议(ip)地址。微服务302a

302n可以被配置为基于事件队列402中的一个或更多个事件消息来高速缓存来自存储设备的数据。例如,事件队列402中的一个或更多个消息可以包括关于api请求301的信息,并且基于该信息,第二微服务302b可以高速缓存来自存储设备的其可能需要以执行与api请求有关的一个或更多个步骤的信息。作为特定示例,api请求301可以使网页显示,并且高速缓存信息可以包括从外部存储设备获取用于在网页上使用的图像。
55.微服务302a

302n可以被配置为基于早期执行步骤产生输出,这可以使微服务302a

302n的其他微服务执行早期执行步骤。例如,第一微服务302a可以执行早期执行步骤,包括利用外部服务器认证第一微服务302a,并且基于成功认证,第一微服务302a可以向第二微服务302b传输输出,该输出使第二微服务302b执行包括从外部服务器获取数据的早期执行步骤。
56.也如箭头404a和箭头404b所示,微服务302a

302n可以直接向事件队列402传输事件消息,其可以使其他微服务执行早期执行步骤。例如,第二微服务302b可以向事件队列402传输新事件消息,其可以使最后微服务302n执行附加的早期执行步骤。以此方式,在相
应微服务(例如,第二微服务302b和最后微服务302n)处接收到其他内部消息(例如,内部消息304a和/或内部消息304b)之前,微服务可以使用事件队列402中的事件消息来彼此内部通信。例如,最后微服务302n可以基于事件消息403b执行第一组早期执行步骤(例如,访问网站的登录页面),并且可以基于来自第二微服务302b的事件队列402中的不同事件消息执行第二组早期执行步骤(例如,使用认证凭证来登录到登录页面中)。作为又一个示例,微服务可以等待执行早期执行步骤,直到对应于api请求的事件消息(例如,事件消息403b)和一个或更多个附加事件消息(例如,从第二微服务302b传输到事件队列402的附加事件消息)都存在于事件队列402中。
57.事件消息403a和事件消息403b可以基于微服务302a

302n中的一者或更多者的操作状态来传输。操作状态可以对应于微服务302a

302n中的一者或更多者的可用处理资源,使得例如,操作状态可以指示微服务为忙、空闲,其处理资源(例如,分配给微服务的处理器线程)的特定百分比被占用等。事件微服务401可以基于微服务302a

302n中的一者或更多者的操作状态来确定是否将事件消息403b传输到事件队列402。例如,如果第二微服务302b为忙,使得它在从第一微服务302a接收输出之前不能执行早期执行步骤,则可以跳过向事件队列402传输事件消息403b,因为它在执行时间上可以具有可忽略的益处。作为另一个示例,事件微服务401可以被配置为当此类微服务执行早期执行步骤和/或其他执行步骤时跟踪微服务的执行时间。在此类示例中,如果第二微服务302b执行早期执行步骤所花费的平均时间超过预定阈值,则可以跳过向事件队列402传输事件消息403b,因为其可以对执行时间产生负面影响。事件微服务401可以基于确定与api请求301相关联的估计处理时间超过阈值而将事件消息403b传输到事件队列402。例如,如果通过将事件消息403b传输到事件队列402并使一个或更多个微服务执行早期执行步骤来改进估计处理时间,则可以传输事件消息403b。作为另一个示例,如果在所有微服务302a

302n上的估计处理时间是可忽略的,则使用事件队列可以引入附加的不必要处理,其实际上可能对执行时间产生负面影响,因此不需要传输事件消息403b。
58.作为图4中微服务302a

302n可以如何操作的简化示例(与针对图3提供的示例一样),api请求301可以对应于例如对密码保护网站的网页的请求。第一微服务302a可以被配置为接收api请求301,获取与api请求301相关联的用户的登录信息,并在内部消息304a中将其传输到第二微服务302b。第一微服务302a可以被进一步配置为将事件消息403a(例如,包含诸如用户名和密码的登录信息、用户想要访问的网页的标识,以及传输api请求301的时间等)传输到事件微服务401,该事件微服务401然后可以将事件消息403b(例如,包含与事件消息403a相比相同或不同的信息)传输到事件队列402。第二微服务302b可以在接收内部消息304a之前检测事件队列402中的事件消息403b,并且可以执行早期执行步骤,诸如获取网站的登录页面。类似地,最后微服务302n可以基于事件消息403b,在接收到内部消息304b之前高速缓存所请求的网页的一个或更多个部分。例如,最后微服务302n可以基于事件消息403b中的统一资源定位符(url)来高速缓存与url相关联的级联样式表(css)数据,并且在接收到内部消息304b之后获取与url相关联的附加网页数据。作为另一个示例,最后微服务302n可以基于事件消息403b中的url来下载与url相关联的一个或更多个图像(例如,背景图像、标题标志),并且在接收到内部消息304b之后获取与url相关联的附加网页数据。然后,先前关于图3描述的过程随后可以进行地快得多。当第二微服务302b从第一微服
务302a接收内部消息304a时,它可以随后更快地在内部消息304b中将确认传输到最后微服务302n,因为它已经预先执行了某些认证步骤(例如,获取执行认证所需的登录页面)。类似地,最后微服务302n可以更快地获取网页数据并将其传输回第一微服务302a以包括在api响应303中,因为它已经预先获取了网页数据的部分。
59.对于使第一微服务302a将事件消息(例如,事件消息403a和/或事件消息403b)传输到事件队列402,事件微服务401不需要被实现。例如,相对于事件微服务401描述的部分或全部功能可以由第一微服务302a执行。可能期望单独地实现事件微服务401,以例如避免使第一微服务302a执行可以延迟第一微服务302a的其他步骤的某些步骤(例如,监测执行时间、从事件消息403a移除数据以创建事件消息403b)。例如,通过在事件微服务401而不是第一微服务302a中实现相对于事件队列402的一些步骤,可以释放第一微服务302a以用于其他步骤,使得可以减少与api请求301相关联的总处理时间。
60.图5是描绘可以由微服务执行并且相对于事件队列(诸如图4所描绘的微服务和事件队列402)执行的步骤的流程图。在步骤501中,可以确定事件队列402中的消息。确定事件队列402中的事件消息可以包括向事件队列402请求消息(例如,通过查询事件队列402)和/或通过接收从事件队列402传输的事件消息。微服务可以确定多个事件消息,诸如对应于不同api请求的事件消息。
61.可以查询(例如,由一个或更多个微服务,诸如第一微服务302a)事件队列402以接收事件消息。查询事件队列402可以包括通过传输对消息列表的请求而从事件队列402获取消息。微服务查询事件队列402的周期性可以取决于微服务的操作状态。例如,如果与第二微服务302b相关联的计算设备具有有限的空闲处理资源,以及因为它可能缺乏用于执行早期执行步骤的空闲处理资源,则它可以减低其查询事件队列402的频率以释放与此类查询相关联的附加处理资源。
62.在步骤502中,确定指示api请求(例如,api请求301)的消息是否在事件队列402中。事件队列402中的一些事件消息可能与api请求无关。例如,消息可以用于其他微服务功能,诸如使一个或更多个功能刷新高速缓存、延迟执行直到附加处理资源(例如,当前由特定微服务使用的那些资源)变得可用等。如果存在对应于api请求(例如,api请求301)的消息,则流程图前进到步骤503。否则,流程图在步骤501处重新开始。
63.在步骤503中,基于确定指示api请求的消息的存在,微服务可以确定早期执行步骤是否可用。基于事件队列402中的一个或更多个消息的内容,早期执行步骤可以是可用的。例如,微服务能够执行早期认证步骤,但仅当事件队列402中的消息包括此类早期认证步骤所需的认证数据(例如,用户名和密码)时。并非所有的api请求都可以服从于所有微服务的早期执行步骤。例如,一些微服务的执行可以完全依赖于来自先前微服务的输出,使得在从先前微服务接收到内部消息之前,不执行任何步骤。确定早期执行步骤是否可用可以包括基于api请求来选择早期执行步骤。微服务可以被配置有多个不同的可能早期执行步骤,但可以基于所做的特定api请求来选择多个可能早期执行步骤中的第一早期执行步骤。例如,如果api请求涉及利用不需要双因素认证的第一服务对用户进行认证,则不需要执行与双因素认证相关联的可用早期执行步骤。作为另一个示例,如果api请求涉及获取数据,并且如果数据是未压缩的,则不需要执行与对压缩数据进行解压相关联的可用早期执行步骤。如果早期执行步骤可用,则流程图前进到步骤504。否则,流程图返回步骤501。
64.在步骤504中,可以执行早期执行步骤。执行早期执行步骤可以包括向事件队列402传输一个或更多个新事件消息。在第一微服务执行早期执行步骤之后,第一微服务可以向事件队列402传输指示已经完成早期执行步骤的新事件消息,并且第二微服务可以依赖于新事件消息来执行早期执行步骤。串行的微服务可以基于事件队列402中的事件消息并行执行。例如,基于事件队列402中的事件消息(例如,事件消息403b),第二微服务302b和最后微服务302n两者可以同时执行早期执行步骤。微服务可以等待执行早期执行步骤,直到确定多个事件消息。例如,最后微服务302n可以直到确定事件消息403b和来自第二微服务302b的事件消息都存在于事件队列402中才执行早期执行步骤。
65.图6是涉及api源600的消息流程图。api源600可以是被配置为传输api请求(例如,api请求301)和/或接收api响应(例如,api响应303)的任何计算设备或计算设备集合。在步骤601中,api源600可以向第一微服务302a传输可以与api请求301相同的api请求。在步骤602中,第一微服务302a然后可以向事件微服务401传输事件消息,在步骤603中,该事件微服务401可以广播事件消息。在步骤604a和604b中,第二微服务302b和其他微服务(诸如最后微服务302n)可以接收事件消息。这样的接收可以类似于步骤501

504中描述的接收,使得微服务可以执行早期执行步骤。在步骤605中,并且在第一微服务302a已经执行了处理之后,第一微服务302a可以向第二微服务302b传输内部消息。在步骤606中,并且在第二微服务302b已经执行处理之后,第二微服务可以向例如最后微服务302n发送内部消息。在步骤607中,并且在最后微服务302n已经执行处理之后,最后微服务302n可以向第二微服务302b传输内部消息。在步骤608中,并且在第二微服务302b已经执行附加处理之后,第二微服务302b可以向第一微服务302a传输内部消息。在步骤609中,并且在第一微服务302a已经执行任何附加处理之后,第一微服务302a可以向api源600传输api响应(例如,api响应303)。
66.图7是从第一微服务302a的角度的流程图。在步骤701中,第一微服务302a可以接收api请求,诸如api请求302。在步骤702中,可以确定事件微服务(例如,事件微服务401)是否可用。如果可用,则流程图可以前进到步骤703;否则,流程图可以前进到步骤704。在步骤703中,基于确定事件微服务可用,第一微服务302a可以向事件微服务传输事件消息(例如,事件消息403a)。在步骤704中,第一微服务302a可以执行一个或更多个处理步骤。在步骤705中,基于步骤704中的处理,第一微服务302a可以向第二微服务302b传输内部消息(例如,内部消息304a)。
67.尽管主题已经以特定于结构特征和/或方法行为的语言进行了描述,但应当理解,在所附权利要求中限定的主题不一定限于上述特定特征或行为。相反,上面描述的特定特征和行为被描述为所附权利要求的示例实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1