CN117751347A - 用于分布式界面组件生成的技术 - Google Patents

用于分布式界面组件生成的技术 Download PDF

Info

Publication number
CN117751347A
CN117751347A CN202280050591.6A CN202280050591A CN117751347A CN 117751347 A CN117751347 A CN 117751347A CN 202280050591 A CN202280050591 A CN 202280050591A CN 117751347 A CN117751347 A CN 117751347A
Authority
CN
China
Prior art keywords
component
data
visual components
client device
interface
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.)
Pending
Application number
CN202280050591.6A
Other languages
English (en)
Inventor
D·C·玛塔罗德里格茨
A·沙克尔
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN117751347A publication Critical patent/CN117751347A/zh
Pending legal-status Critical Current

Links

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/75Indicating network or usage conditions on the user display
    • 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/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于在基础设施即服务(IaaS)环境中高效生成和维护界面组件的技术。系统可以接收显示组件仪表板的请求。生成组件的声明性元数据集,并且多用途代理用于解析声明性元数据集。可以根据所解析的声明性定义来复制多用途代理,以便创建与一个或多个确定的界面组件对应的多用途代理的多个实例。然后,多用途代理的多个实例可以实时生成并维护界面组件。组件生成可以分布在系统之间,以防止过多的数据传送和浪费的通信。

Description

用于分布式界面组件生成的技术
相关申请的交叉引用
本申请是PCT申请,并依据35USC 119(e)要求2021年7月29日提交的、标题为“TECHNIQUES FOR DISTRIBUTED INTERFACE COMPONENT GENERATION”的美国非临时申请17/389,116的利益和优先权,其内容出于所有目的通过引用全文并入本文。
背景技术
基于云的服务提供商为客户提供各种服务。客户可以通过服务提供商实现大量的程序和服务。这些服务中的许多服务很复杂,并且需要大量数据才能工作。服务提供商可以选择提供可视化界面用于访问和监视该信息。全面的模块化数字界面可以向客户显示活动服务的简化视图。模块化数字界面可以被定制以显示与客户的活动服务对应的数据和交互组件,并且以客户最期望的格式进行显示。
可以生成和维护界面的交互组件以改善客户体验。但是,在多个定制的个性化界面上为多个客户显示和维护多个单独的组件是资源密集型的。客户和服务提供商之间的通信数量众多且效率低下,导致严重的系统资源消耗。由于每个处理都实现了一个或多个个性化界面,因此资源消耗随着使用这些处理的客户数量呈指数级增长。用于在界面上显示和维护各个组件的方法可能是重复的且低效的,导致进一步的资源消耗和服务提供商系统的严重问题。
发明内容
本公开的各方面包括用于生成和维护与多用途组件代理的模块化界面的技术。多用途组件代理可以提供简化的数字组件,用于解析模块相关的声明性元数据来构建界面。可以创建多用途组件代理或“多用途代理”的多个实例,以高效地分配组件管理职责。多用途代理实例还可以在分布式系统内使用。多用途代理可以托管在通信地耦合到服务器系统的组件生成引擎内。服务器系统可以代表服务提供商存储和处理数据,同时组件生成引擎和相关联的多用途代理使用处理后的数据代表客户端执行界面生成。
一种示例方法包括接收用于在界面上显示一个或多个视觉组件的声明性元数据;解析该声明性元数据以确定要在界面上显示的一个或多个视觉组件;为要在界面上显示的一个或多个视觉组件中的每个特定视觉组件复制组件代理以创建多个组件代理;以及生成一组或多组渲染数据,由多个组件代理中的特定组件代理生成的一组或多组渲染数据中的每个特定组渲染数据对应于一个或多个视觉组件中的特定视觉组件,并且能够执行以渲染该一个或多个视觉组件。客户端设备可以从服务器设备接收声明性元数据。服务器设备可以被配置为生成声明性元数据。服务器设备生成声明性元数据可以通过来自客户端设备的对由服务器设备提供的模块化界面的组件的请求和/或来自客户端设备的对与模块化界面的组件相关的数据的请求来触发。该请求可以由客户端设备传输到服务器设备。服务器设备可以同时服务类似于所述客户端设备的多个客户端设备,其中该多个客户端设备中的每个客户端设备单独请求模块化界面的(一个或多个)组件和/或与模块化界面的(一个或多个)组件相关的数据。
本公开的各方面还包括跨单独设备的分布式数据共享。一种示例方法包括接收声明性元数据,该声明性元数据的至少一部分对应于要在界面上显示的一个或多个视觉组件;解析该声明性元数据以确定一个或多个视觉组件;为一个或多个视觉组件中的每个视觉组件复制组件代理以创建多个组件代理;以及生成一组或多组渲染数据,该一组或多组渲染数据中的每组渲染数据由多个组件代理中的组件代理生成并且对应于一个或多个视觉组件中的特定视觉组件,该渲染数据能够执行以渲染该一个或多个视觉组件。本公开的各方面还包括执行渲染数据以使得在界面上显示该一个或多个视觉组件。
本公开的各方面还包括对与所显示的组件的交互进行检测和响应。一种示例方法包括至少部分地基于声明性元数据来确定与一个或多个视觉组件对应的一个或多个交互响应;检测与和界面上显示的一个或多个视觉组件的交互对应的输入;以及作为响应,使得执行一个或多个交互响应。在一些示例方法中,一个或多个交互响应至少包括组件更新响应,该组件更新响应通过更新一组或多组渲染数据中的至少一组渲染数据而使得更新所显示的一个或多个视觉组件中的至少一个所显示的视觉组件。
另一个示例方法还包括上述步骤,其中组件代理解析声明性元数据以确定将被复制以创建多个组件代理的数个组件代理。
本公开的各方面还包括在复制的多用途代理实例之间共享数据资源以进行高效的组件和界面管理。示例方法包括上述步骤,还包括从多个组件代理中的第一组件代理向多个组件代理中的第二组件代理发送由第一组件代理生成的一组渲染数据的至少一部分,其中由第二组件代理生成的一组渲染数据是至少部分地基于由第一组件代理发送的所述一组渲染数据的所述部分来生成的。
本公开的各方面涉及利用仪表板数据来构建用于仪表板的组件的声明性元数据。示例包括上述步骤,其中用于在界面上显示一个或多个视觉组件的声明性元数据与表示仪表板界面内的一个或多个视觉组件的特定配置的仪表板数据对应。仪表板数据可以从组件目录构建以在仪表板上显示。示例方法还包括接收多个视觉组件的列表,该多个视觉组件包括一个或多个视觉组件;接收从多个视觉组件的列表中对一个或多个视觉组件的选择;基于对该一个或多个视觉组件的选择来生成仪表板数据;以及基于仪表板数据生成声明性元数据。仪表板数据的所选择的组件然后可以用于生成用于构建和显示仪表板的声明性元数据。
本公开的各方面涉及利用服务度量和测量作为用于在仪表板界面上显示的组件的一部分。示例方法包括上述步骤,还包括接收服务数据,该服务数据对应于与一个或多个视觉组件相关的一个或多个服务的一个或多个度量,其中一组或多组渲染数据是至少部分地基于声明性元数据和服务数据生成的。
本公开的另一方面包括一种系统,该系统包括一个或多个处理器和非暂态计算机可读介质,该非暂态计算机可读介质包括当由一个或多个处理器执行时使该一个或多个处理器执行上述方法的指令。
本公开的另一方面包括一种非暂态计算机可读介质,其包括当由一个或多个处理器执行时使得该一个或多个处理器执行上述方法的指令。
提及这些说明性实施例并不是为了限制或定义本公开,而是为了提供示例来帮助理解本公开。在具体实施方式中讨论了另外的实施例,并且在那里提供了进一步的描述。
附图说明
当参考附图阅读以下具体实施方式时,可以更好地理解本公开的特征、实施例和优点。
图1是根据本公开的某些实施例的用于生成视觉组件的分布式基础设施即服务系统的框图。
图2是根据本公开的某些实施例的组件促进系统的框图。
图3是根据本公开的某些实施例的客户端引擎系统的框图。
图4是图示根据本公开的某些实施例的客户端引擎系统和组件促进系统的子系统之间的交互的框图。
图5描绘了根据本公开的某些实施例的使用多用途代理来生成界面组件的处理的示例流程图。
图6描绘了根据本公开的某些实施例的使用多用途代理来生成界面组件的分布式系统和处理的示例流程图。
图7是根据本公开的某些实施例的包括仪表板库和用于生成界面的仪表板引擎的分布式系统的框图。
图8描绘了根据本公开的某些实施例的用于组件利用的示例图形界面。
图9是图示根据至少一个实施例的用于实现云基础设施即服务系统的一种模式的框图。
图10是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图11是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图12是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图13是图示根据至少一个实施例的示例计算机系统的框图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。但是,显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在是限制性的。
服务提供商可以提供可以由所提供的服务的客户(例如,订户)订阅的服务。客户经常利用这些服务来使用服务提供商所拥有的服务器设备来存储、管理和更新他们自己的数据。例如,一种服务可以将客户的数据存储在数据库中,另一种服务可以允许客户访问虚拟机,还有一种服务可以允许客户为其客户端实现自动化客户服务,等等。利用这些特征的客户通常需要全面的数字界面来查看和管理与其个人服务使用相关的数据。例如,食品供应商可以利用服务提供商的web托管服务来存储和管理食品供应商销售的食品项目的交互式菜单。食品供应商还可以利用服务提供商的虚拟处理环境来接受和处理供应商的商品的货币支付。食品供应商还可以利用服务提供商的数据存储服务来存储与供应商的销售相关的商业数据。客户利用的服务以及由此生成的数据可能是众多且复杂的。这些供应商服务和与其相关的数据中的每一个可以由供应商通过服务提供商管理的界面上的组件来表示。
由于服务提供商所使用的服务可能因他们所连接的每个客户而异,因此服务提供商可能希望为其客户提供模块化和可定制的界面,以使他们的体验更加个性化。模块化界面是一种通常包括外壳(shell)(例如,静态界面背景)和一个或多个组件(例如,背景上显示关于所使用的服务的交互组件的各个面板)的界面。可定制的界面是客户可以挑选并选择要在特定背景上显示的组件的界面。界面可以结合这两个特征以获得更好的客户体验。该界面将传达客户在单个数字地点所使用的服务的相关方面。现有的模块化界面允许客户选择一个或多个预定义组件来显示在外壳上。例如,服务提供商可以基于预定义的代码来存储多个预构建的界面组件以供在外壳上执行和显示,以便创建界面。每个单独的组件都是模块化的,并且将独立于其它界面组件执行其代码指令。客户可以利用组件的“仪表板”的多个界面。例如,客户可能拥有与业务操作、数据管理操作等相关的组件的单独仪表板。
虽然每个界面组件的独立执行促进了模块化功能,但它导致界面和对应服务的重复、低效和/或不安全的性能。作为一个示例,显示相同或高度相似信息的两个组件可以独立地获取相同的数据,从而有效地使得用于显示组件的服务器资源利用率加倍。如果食品供应商在界面上放置两个组件-一个组件用于销售收入并且一个组件用于销售利润-那么这两个组件将彼此独立地执行和显示信息。因此,两个组件都会两次获取相同的销售数据,从而重复资源支出。在另一个示例中,每个单独的界面组件必须包括用于执行该组件固有的过程的各个代码指令。代码指令占组件大小的很大一部分,并且利用具有相似代码的多个组件会相应地提高资源利用率。当多个组件在同一系统上执行代码来渲染组件时,系统会经历显著的资源消耗。
提供交互式数字界面的服务提供商面临上述问题。随着客户数量的增加,问题变得复杂,通常会使服务提供商的系统减慢甚至瘫痪。例如,向数百万客户提供基于云的服务的服务提供商通常需要维护数千万个单独的模块化组件。本文描述的方法和处理允许通过利用分布式系统中的多用途代理来维护数字界面。多用途代理可以被复制任意多次,以便以最少的输入管理各个界面组件。例如,组件可以仅包括用于实现界面组件的声明性定义和参数。然后,多用途代理可以解析声明性定义、根据参数获取客户数据,并且独立实现组件。通过将组件生成分配给客户端引擎并将数据存储分配给中央系统,可以减少昂贵的数据传送和通信。
多用途代理可以被复制到多个实例中,以分别维护界面的不同组件。因为多用途代理被配备为基于声明性定义来实现多个不同的界面组件,因此多用途代理的复制实例可以同时实现不同的界面组件。多用途代理的实例可以通过共享通信协议在其它参与者之间传送和共享数据。多用途代理还可以生成如由声明性定义指定的交互界面组件。这些组件可以由多用途代理维护和监视,以响应客户的交互输入。补充声明性定义的特定于客户的参数可以允许多用途代理进一步定制处理交互的方式。
实现用于生成和维护多个界面组件的多用途代理和分布式系统与先前的界面生成方法相比具有多种优点。移除每个组件的单独代码指令可以减少实现组件的开销。由于多用途代理只需要解析声明性定义来生成组件,因此服务提供商将更高效地利用系统资源并减少界面实现期间的数据膨胀。此外,服务提供商的客户体验到更简化的个性化界面生成方法。
通过多用途代理及其复制实例来维护界面组件意味着只需在存储器中获取多用途代理参与者一次即可开始界面生成,从而节省宝贵的计算资源。利用标准协议的代理实例之间的交互还可以改善数据通信并减少低效的资源支出。此外,通过由服务提供商控制的多用途代理来实现组件,客户无需编写和实现电子代码指令,从而消除了界面生成的显著进入障碍。通过将恶意参与者与直接代码访问隔离开来,安全功能也得到改进,从而允许服务提供商安全地指定每个多用途代理和每个界面组件的操作参数。
组件生成在多个系统之间的进一步分布也提供了显著的优势。用于生成多个界面组件的处理可以分布在多个系统中以保留资源。服务系统可以存储组件的储存库,客户端可以将其实现为特定于客户端的界面的一部分。这些组件可以对应于可由驻留在客户端设备处的生成引擎解析的声明性定义。以这种方式,整个组件和组件代码不需要通过通信信道传递到引擎,而只需带注释的声明性定义。
声明性定义可以在客户端侧生成引擎处被解析并与特定于客户端的服务数据组合以生成带注释的渲染数据。可以执行渲染数据以向客户显示完整的仪表板界面。服务系统和客户端系统可以协同工作,以实时更新界面和界面组件。这种分布式处理可以防止在同一系统执行这些步骤中的每个步骤时会出现的资源瓶颈,同时将通信数据减少到最低水平以保留现有资源。
图1是根据本公开的某些实施例的用于生成视觉组件的分布式基础设施即服务系统的框图。图1中描绘的系统100包括直接或间接连接到网络160的系统和设备。网络160可以是通过其可以传输数据的任何通信实体或介质。例如,网络160可以是互联网、内联网、基于云的网络、局域网、硬线连接、无线信号、虚拟网络或用于设备之间的联网通信的其它介质。本领域普通技术人员将认识到可以使用的各种网络,并且下面还讨论了若干网络。
网络160可以通信地耦合到客户端引擎系统120。客户端引擎系统可以由客户端设备110来实现。客户端设备110可以是以执行本文描述的实施例所需的任何格式操作的任何类型的设备,并且可以包括实施例的客户端设备的数量不受限制。在各种实施例中,客户端设备110是可由客户端和/或客户操作以请求、生成、显示组件界面和/或与组件界面交互的设备。
客户端设备110可以将客户端引擎系统120实现为在客户端设备110上执行的数字程序、应用或指令集。客户端引擎系统120可以是包括可操作以执行本文中根据各种实施例描述的处理和方法的软件、硬件或两者组合的系统。客户端引擎系统120还可以包括多个子系统。如本文所描述的,子系统可以指在较大的主机系统内操作以执行与主机系统的功能集成的更具体和专用的处理的系统。
客户端引擎系统120可以包括仪表板显示子系统121。仪表板显示子系统121可以是可操作以在电子显示器上显示仪表板和各种仪表板组件的子系统。客户端引擎系统120还可以包括输入处置子系统122。输入处置子系统122可以是可操作以检测并响应由客户端做出的并且与所显示的仪表板对应的交互式输入的子系统。在各种实施例中,输入处置子系统122可以将一个或多个输入监听器实现为单独的子系统以检测一种或多种类型的输入和/或输入上下文。客户端引擎系统120还可以包括仪表板引擎子系统123。仪表板引擎子系统123可以是可操作以解析组件的一个或多个声明性定义并生成用于创建数字仪表板的渲染数据的子系统。在各种实施例中,输入处置子系统123可以实现一个或多个多用途代理,用于并行处理和创建仪表板组件。图3中描绘了客户端引擎系统120的更详细的示图。
网络160还可以通信地耦合到组件促进系统140。组件促进系统140可以由服务器130来实现。服务器130可以是以执行本文描述的实施例所需的任何格式操作的任何类型的设备,并且可以包括实施例的服务器设备的数量不受限制。在各种实施例中,服务器130是可由服务提供商和/或管理员操作以存储、发送、接收、渲染、生成和管理所生成的与基于组件的界面相关的数据的设备。
服务器130可以将组件促进系统140实现为在服务器130上执行的数字程序、应用或指令集。组件促进系统140可以是包括可操作以执行本文中根据各种实施例描述的处理和方法的软件、硬件或两者组合的系统。在各种实施例中,组件促进系统140利用发送到其并存储在其中的数据来使得在可向客户端设备(诸如客户端设备110)显示的界面上渲染组件。组件促进系统140还可以包括作为组件促进系统140的一部分操作的多个子系统/独立系统。
目录子系统141可以是用于存储和提供与一个或多个可渲染组件相关的组件数据和/或插件信息的子系统。目录子系统141可以被配置为存储、访问和/或以其它方式利用组件列表或与组件相关的数据来操作目录。例如,目录子系统141可以托管可以包括在仪表板显示中的组件目录。客户端可以指定从目录中选择的组件子集以作为仪表板的一部分进行显示。
组件促进系统140还可以包括服务数据子系统142。服务数据子系统142可以是被配置为提供与客户端利用的服务相关的服务数据和度量以促进仪表板的子系统。服务可以是作为客户端与服务提供商之间的商业交互的一部分而提供给客户端的服务。例如,客户端可以利用服务提供商提供的一个或多个基于云的服务。服务提供商可以将服务数据(即,与服务的操作相关的度量)存储在服务数据子系统142中。服务数据可以被检索、变换和/或以其它方式用于显示包括服务数据的仪表板。
组件促进系统140还可以包括仪表板创建子系统143。仪表板创建子系统143可以是可操作以创建仪表板并用组件填充仪表板的子系统。例如,仪表板创建子系统143可以被配置为从客户端引擎系统120接收仪表板规范。仪表板创建子系统143可以利用仪表板规范来创建与客户端相关联的仪表板界面的新实例。
网络160还可以通信地耦合到数据存储装置150。数据存储装置150可以包括一个或多个电子数据存储存储器,用于促进本文描述的实施例。存储装置可以指用于促进本文描述的实施例的任何物理、电子和/或基于云的存储装置。数据存储器可以是内部存储存储器或者存储与另一个系统分离的、内部或外部的电子数据的介质。例如,数据存储装置150可以存储与客户端引擎系统120和组件促进系统140之间的通信协议相关的数据或信息,网络160可以通过该通信协议与两个实体交互。将认识到的是,可以以任何必要的方式使用数据存储装置150或任何其它存储装置来促进本文描述的处理。
图2是根据本公开的某些实施例的组件促进系统140的框图。具体而言,图2描绘了组件促进系统140和其中包括的各种子系统。组件促进系统140可以包括目录子系统141。目录子系统141可以包括组件编目器(cataloger)200。在各种实施例中,组件编目器可以是对多个组件进行编目以创建组件列表的子系统。组件列表可以对应于将作为界面的一部分显示在仪表板上的多个视觉组件。例如,组件编目器200可以通信地耦合到组件清单(manifest)获取模块和存储组件的多个插件。组件编目器可以使用组件清单来识别插件中的多个组件以创建组件列表。组件列表可以是要从组件储存库接收的组件的列表。
目录子系统141还可以包括组件储存库210。组件储存库210可以是可在仪表板界面中实现的组件或组件信息的储存库。在各种实施例中,组件储存库210从组件编目器200接收组件列表。然后,组件储存库210或类似实体可以识别与在组件列表上识别出的视觉组件相关的一组或多组声明性元数据并将其分组。例如,组件编目器200可以将组件列表发送到组件储存库210,指定要生成用于在仪表板界面上显示的数字组件“小部件(widget)”的组件。组件储存库210可以识别与该数字组件的功能相关的声明性元数据以供进一步处理。
组件促进系统140可以包括服务数据子系统142。服务数据子系统142可以包括查询指令220。查询指令220可以是用于接收和/或处理对与仪表板相关的服务数据的查询的指令。在各种实施例中,查询指令220可以被配置为从传入的服务数据查询中提取对服务数据的一个或多个请求。
服务数据子系统142还可以包括服务数据共享指令230。服务数据共享指令230可以是用于检索和传输与服务提供商可操作的服务相关的服务数据的指令集。在各种实施例中,服务数据共享指令230接收由查询指令220指定的服务数据的指示。服务数据共享指令230然后可以响应地检索与服务相关的一组或多组服务数据。例如,查询指令220可以指定与服务的操作相关并且将被显示为仪表板界面的一部分的一个或多个度量。服务数据共享指令230可以识别在服务提供商处执行的相关服务、检索与服务的操作相关的度量、以及将服务数据传输回查询实体。
组件促进系统140可以包括仪表板创建子系统143。仪表板创建子系统143可以包括仪表板组件显示指令240。组件显示指令240可以是使得在可视仪表板界面上显示组件或创建数据以执行相同操作的指令集。在各种实施例中,仪表板组件显示指令240接收显示,诸如由查询指令220生成的显示数据。仪表板组件显示指令240可以使得将显示数据发送到包括数字显示器的设备,诸如客户端设备120。然后,显示数据可以用于在数字显示器上显示组件。在各种实施例中,仪表板组件显示指令240基于所渲染的组件生成显示数据。
仪表板创建子系统143还可以包括仪表板库250。仪表板库250可以是包括用于生成特定界面/仪表板的一部分的数据的存储装置或储存库。在各种实施例中,仪表板库250包含可以直接显示在界面上而不需要在显示之前生成的一个或多个公共组件。在各种实施例中,仪表板库250包含一个或多个仪表板外壳,用于生成可以用组件填充的仪表板界面。在各种实施例中,来自仪表板库250的仪表板数据被发送到客户端设备,诸如客户端设备120,以生成仪表板外壳,当组件变得可用于根据仪表板组件显示指令240显示时,该仪表板外壳将用组件填充。
组件促进系统140还可以包括渲染子系统260。渲染子系统260可以被配置为渲染组件以作为服务器侧渲染配置的一部分显示在仪表板上。例如,渲染子系统260可以接收由仪表板创建子系统143生成的仪表板数据。渲染子系统260可以将仪表板数据转换成渲染数据,该渲染数据可以被发送到客户端设备以用于显示仪表板界面的渲染版本。下面将参考图4来描述客户端设备120和组件促进系统140的子系统之间的交互的另外的示例。
图3是根据本公开的某些实施例的客户端引擎系统的框图。具体而言,图3描绘了客户端引擎系统120和其中包括的各种子系统。客户端引擎系统120可以包括仪表板显示子系统121。仪表板显示子系统121可以是客户端引擎系统120内的子系统,其促进仪表板界面在客户端设备(诸如客户端设备110)的电子显示器上的显示。在各种实施例中,仪表板显示子系统121被配置为接收并利用显示数据来使得显示仪表板界面。
客户端引擎系统120还可以包括输入处置子系统122。输入处置子系统122可以是客户端引擎系统120内的用于检测和处置输入的子系统。在各种实施例中,输入处置子系统122促进使用一个或多个输入监听器来检测来自设备的用户的交互和/或输入。在各种实施例中,输入处置子系统122可以生成与检测到的输入对应的数据并将该数据发送到系统以使得更新对应的组件。例如,响应于检测到与显示在仪表板界面上的特定组件对应的输入,输入处置子系统可以生成交互元数据并将交互元数据发送到模块用于引起响应更新,诸如更新指令230。
客户端引擎系统120还可以包括本地存储子系统300。本地存储装置300可以是存储与客户端设备相关的一组或多组数据的存储装置或储存库。在各种实施例中,本地存储子系统300包括涉及与一个或多个组件的功能相关的一组或多组信息的数据。本地存储子系统300可以存储、发送和以其它方式利用该信息来促进如本文所述的组件的生成。例如,作为组件生成处理的一部分,本地存储子系统300可以将相关客户端数据发送到生成引擎以完成组件的生成。在示例实施例中,组件可以在仪表板界面上的小部件组件中显示客户利润的指示。利润信息存储在客户设备的客户端侧。组件可以对应于需要显示客户端数据的不完整的声明性定义。在这种情况下,所需的客户端数据是客户端侧存储的利润数据。作为生成处理的一部分,组件生成引擎可以向本地存储子系统300征求利润数据以完成组件的生成。
客户端引擎系统120还可以包括仪表板引擎子系统123。仪表板引擎子系统可以是组件生成引擎,其促进利用多用途代理来生成一个或多个组件作为仪表板界面显示处理的一部分。仪表板引擎子系统123可以包括代理子系统310。代理子系统310可以是仪表板引擎子系统123的子系统,其促进用于生成仪表板界面的组件的一个或多个多用途代理的创建、维护、复制和/或删除。
代理子系统310可以包括组件代理320。组件代理320可以是如本文中所描述的处于实例化或非实例化/存储状态的多用途代理。在各种实施例中,组件代理320包括存储在代理子系统310中的数据,该代理子系统310响应于声明性定义的接收而被激活。例如,响应于客户端引擎系统120接收声明性元数据(诸如来自组件促进系统140的元数据),客户端引擎系统120实例化仪表板引擎子系统123内的组件代理320。在各种实施例中,组件代理320接收并解析声明性元数据以开始组件生成处理。组件代理320可以包括元数据解析指令322。元数据解析指令322可以是可由组件代理320用来解析元数据(诸如声明性元数据)的指令。
组件代理320还可以包括组件生成指令324。组件生成指令324可以是用于基于解析的声明性元数据生成组件的指令。在各种实施例中,对于要生成的每个组件,实例化的组件代理可以被复制至少一次。在各种实施例中,组件代理320可以从本地存储装置(诸如本地存储子系统300)检索客户端信息,以便使得生成组件。组件生成处理在图5中进一步描述。在各种实施例中,组件代理320的组件生成指令324可以被配置为利用由组件代理320解析的声明性元数据来产生渲染数据作为客户端侧渲染配置的一部分。例如,组件代理320可以从声明性定义中解析元数据并且将元数据变换成可执行以使得显示仪表板界面的对应视觉组件的渲染数据。组件代理320还可以包括代理间通信指令326。代理间通信指令326可以是用于使得两个或更多个实例化的组件代理之间进行通信作为组件生成处理的一部分的指令。
仪表板引擎子系统123可以包括服务通信子系统330。服务通信子系统330可以是客户端引擎系统120的子系统,其促进一个或多个服务与客户端引擎系统120之间的通信。例如,与组件或生成组件所需的数据相关的一个或多个外部服务可以从外部服务接收并且由客户端引擎系统120用来生成一个或多个组件。
图4是图示根据本公开的某些实施例的客户端引擎系统120和组件促进系统140的子系统之间的交互的框图。如图4中所描绘的,分布式系统400包括通信地耦合到客户端设备110的客户端引擎系统120。客户端设备110可以是用户可以通过其指定、生成、查看仪表板和/或与仪表板交互的设备。如图4中所示,在分布式系统400内,出于这些目的,客户端引擎系统120还可以通信地耦合到组件促进系统140的子系统。
客户端引擎系统120可以通信地耦合到组件促进系统140的目录子系统141。客户端引擎系统120可以被配置为向目录子系统141发送目录查询410。目录查询410可以是对可用于作为仪表板界面的一部分显示的组件的列表的查询。响应于接收到目录查询410,目录子系统141可以被配置为将目录数据420发送到客户端引擎系统120。例如,客户端设备110的用户可以利用客户端引擎系统120来查询可以被显示为用户个性化仪表板界面的一部分的组件的列表。目录子系统410可以接收查询并将编目组件的列表返回到客户端引擎120。客户端引擎120然后可以从组件目录中选择组件以包括在用户个性化仪表板界面中。在各种实施例中,目录子系统410是小部件目录子系统。小部件目录子系统可以存储可用小部件的列表并将其发送到客户端引擎系统120,以供客户端设备110的用户从中选择、添加到小部件组件仪表板、配置或以其它方式利用。
客户端引擎系统120还可以通信地耦合到组件促进系统140的仪表板创建子系统143。客户端引擎系统120可以被配置为向仪表板创建子系统143发送与期望的仪表板配置对应的新仪表板数据430。响应于接收到新仪表板数据430,仪表板创建子系统143可以被配置为生成与新仪表板的配置相关的数据。仪表板创建子系统143可以被配置为将所生成的数据作为更新后的仪表板数据440发送到客户端引擎系统120。例如,客户端设备110的用户可以创建用户期望在客户端设备110上查看的“模拟”仪表板。客户端可以利用客户端引擎系统120将新仪表板数据430发送到仪表板创建子系统143,其将生成更新后的仪表板数据440。更新后的仪表板数据440可以包括用于创建与用户创建的“模拟”仪表板对应的功能仪表板的声明性元数据。更新后的仪表板数据440可以在被发送到客户端引擎系统120之前被存储在仪表板创建子系统250的仪表板库250中。在图4中未绘出的各种实施例中,仪表板创建子系统143可以利用渲染子系统(诸如渲染子系统260)来基于更新后的仪表板数据440来生成渲染数据,作为服务器侧渲染配置系统的一部分。在各种实施例中,更新后的仪表板数据440包括与小部件定义对应的声明性定义,小部件定义包括用于以用户指定的定制配置在仪表板界面上渲染一个或多个小部件组件的声明性元数据。
客户端引擎系统120还可以通信地耦合到组件促进系统140的服务数据子系统142。客户端引擎系统120可以被配置为向服务数据子系统142发送服务查询450。服务查询450可以是对与服务提供商维护的一个或多个服务的性能和/或状态相关的服务数据/度量的查询。响应于接收到服务查询450,服务数据子系统142可以被配置为生成与由服务查询450指定的一个或多个服务的性能相关的服务数据460。服务数据子系统142可以被配置为将所生成的服务数据460发送到客户端引擎系统120。例如,客户端设备110的用户可以指定该用户所使用的服务的一个或多个性能度量,这些性能度量被寻求作为仪表板界面的可显示元素。一个或多个性能度量可以与仪表板界面上的一个或多个组件组合以将这些服务的性能显示为仪表板界面的一部分。客户端可以利用客户端引擎系统120将服务查询450发送到服务数据子系统142,该服务数据子系统142将生成服务数据460。在各种实施例中,服务数据460包括可由多用途代理利用以在仪表板界面上生成一个或多个小部件组件的小部件数据。例如,服务数据460可以包括可以被插入到一个或多个组件小部件中的小部件数据。小部件组件可以显示接收到的小部件数据的一部分,以显示小部件组件内的服务的某个方面。在各种实施例中,服务数据460可以包括与服务的性能相关的度量和/或其它服务数据。例如,服务数据460可以包括与服务提供商运营的服务相关的度量、日志数据、计费数据、搜索数据等。在各种实施例中,服务数据涉及托管在由服务提供商运营的云基础设施上的基于云的服务的各方面。客户端可以访问或以其它方式利用这些基于云的服务,并且接收到的服务数据可以涉及关于客户端可以访问/利用的这些基于云的服务的各方面/性能数据。
在各种实施例中,客户端引擎系统120内的组件代理320可以通过与图4中描绘的组件促进系统140的系统通信来促进仪表板界面的显示。例如,客户端设备110的用户可以查询来自目录子系统141的组件列表。目录子系统141可以将与编目组件的列表对应的目录数据发送到客户端引擎系统120。用户可以选择特定配置中的组件子集来构建仪表板界面。该配置可以被打包为新的仪表板数据并且被发送到仪表板创建子系统143。基于仪表板数据指定的配置,仪表板创建子系统143可以生成声明性元数据形式的更新后的仪表板数据。声明性元数据可以被发送到客户端引擎系统120以在客户端侧渲染配置中进行渲染或者直接在服务器侧渲染配置中进行渲染。
在客户端侧渲染配置中,声明性元数据由客户端引擎系统接收,并且诸如多用途代理之类的组件代理320解析声明性元数据。多个多用途代理被复制以构建由声明性元数据指定的组件。完成组件的渲染后,一个或多个多用途代理可以向服务数据子系统142查询将被显示为仪表板定义的组件的一部分的服务数据。服务数据子系统将服务数据返回给多用途代理。在利用服务器侧渲染配置的实施例中,服务数据被直接发送到仪表板创建子系统以生成渲染数据。
返回客户端侧渲染配置,多用途代理利用声明性元数据和从服务数据子系统接收的服务数据两者来生成可执行以按照用户指定的配置显示仪表板界面的渲染数据。客户端引擎系统120可以使用多用途代理来主动监视所显示的仪表板组件。例如,多用途代理可以定期地从服务数据子系统142获取新的服务数据以实时更新所显示的组件。多用途代理还可以对仪表板界面的显示组件处的用户输入做出反应并相应地做出响应。在各种实施例中,用户可以编辑仪表板界面的配置,并且客户端引擎系统120可以将新的仪表板数据发送到仪表板创建子系统143,使得接收包括新仪表板配置的更新后的声明性定义的更新后的仪表板数据。
图5描绘了根据本公开的某些实施例的使用多用途代理来生成界面组件的处理的示例流程图。具体而言,图5描绘了用于利用多个分布式组件代理来生成用于显示界面的组件渲染的处理500的示例流程图。处理500在步骤510处通过接收用于在界面上显示一个或多个视觉组件的声明性元数据开始。声明性元数据可以由多用途代理接收作为组件生成处理的一部分。例如,多用途代理可以接收与将在仪表板界面上显示的一个或多个组件的配置对应的声明性定义。多用途代理可以从诸如组件促进系统之类的单独系统接收声明性定义。
在各种另外的实施例中,声明性元数据包括特定组件的静态元数据和可变元数据,静态元数据对应于要渲染的特定组件的一个或多个已知方面,并且可变元数据对应于要渲染的特定组件的一个或多个可变方面。特定组件的一个或多个可变方面可以是生成声明性元数据的系统未知的方面和/或可以在仪表板界面的显示持续时间期间改变的方面。例如,跟踪虚拟机的动态上传速度的仪表板组件可以包括静态元数据和可变元数据两者。静态元数据可以指定正在被跟踪的特定虚拟机。可变元数据可以指定在所显示的仪表板组件上定期更新的虚拟机的动态更新的上传速度。在各种实施例中,从服务数据子系统接收到的服务数据被用来在渲染数据的生成期间填充可变元数据。
在步骤520处,解析声明性元数据以确定一个或多个视觉组件。在各种实施例中,声明性元数据被发送到将解析声明性定义的多用途代理的实例。在各种另外的实施例中,多用途代理将解析元数据以确定与要在界面上显示的一个或多个视觉组件对应的声明性元数据的一个或多个子集。在各种另外的实施例中,声明性元数据可以是一个或多个声明性数据子集的汇编,该一个或多个声明性数据子集可由多用途代理单独地解析以确定要在界面上显示的一个或多个对应的视觉组件。
在步骤530处,复制组件代理以到达要在界面上显示的一个或多个视觉组件中的特定视觉组件。在各种实施例中,从解析声明性元数据的原始多用途代理复制组件代理。在各种实施例中,为每个确定的视觉组件复制至少一个多用途代理。在各种另外的实施例中,每个复制的多用途代理促进对应的视觉组件的生成。
在步骤540处,生成一组或多组渲染数据,该渲染数据可执行以显示一个或多个视觉组件。在各种实施例中,复制的多用途代理中的每个多用途代理利用声明性元数据的至少一个子集来生成渲染数据的对应子集。例如,基于步骤520中对声明性元数据的解析,声明性元数据的一个或多个子集可以由特定复制的多用途代理接收。每个特定复制的多用途代理可以被委托声明性元数据的子集,用于生成对应的视觉组件。特定多用途代理可以使用接收到的声明性元数据的子集来生成渲染数据。例如,多用途代理可以接收描述要生成的视觉组件的声明性元数据的子集和服务数据的一部分以填充声明性元数据子集内的可变元数据。多用途代理将利用该数据来生成渲染数据的对应子集作为一组渲染数据。
多用途代理可以基于声明性元数据的子集和来自客户端设备的本地数据来生成组件。在各种实施例中,响应于接收到声明性元数据的子集,复制的多用途代理可以查询和/或检索生成组件所需的一个或多个数据集。例如,多用途代理可以基于接收到的声明性元数据来确定将完成声明性定义的一个或多个可变数据集。多用途代理然后可以从本地数据源(诸如本地存储子系统300)检索可变数据,并且使用不完整的声明性元数据和检索到的变量数据来编译完整的声明性数据集。
在各种实施例中,多用途代理可以使用完整的声明性数据集来生成用于渲染视觉组件的渲染数据。渲染数据可以是生成的数据,当执行该数据时,使得组件被渲染以放置在视觉界面中。例如,多用途代理可以将完整的声明性数据集作为输入,并输出用于渲染组件的渲染数据。生成渲染数据可以包括由多用途代理创建组件的模拟或传真(facsimile)。例如,多用途代理可以使用完整的声明性数据集来生成计算机存储器中的视觉组件的临时表示。临时表示可以包括定义视觉组件的任何信息,包括数字屏幕上的位置、组件内的文本或符号、动态更新的字段等。多用途代理然后可以使用临时表示来生成渲染数据用于根据临时表示的规范渲染视觉组件。例如,渲染数据可以是可执行以根据临时表示中生成的规范在计算机存储器中创建视觉组件的渲染表示的数据。
在各种实施例中,由多用途代理实例生成渲染数据可以并行执行,这意味着每个多用途代理实例可以独立于其它多用途代理实例来生成渲染数据的子集。在各种实施例中,多用途代理的每个实例直接或间接地通信地耦合到其它多用途代理实例。多用途代理然后可以通过通信协议(诸如服务通信子系统330)共享数据。多用途代理实例之间的数据共享通过减少或消除冗余数据采购处理极大地提高了资源利用率。例如,第一多用途代理实例可以生成与第二多用途代理将生成的渲染数据类似的渲染数据。第一多用途代理可以将渲染数据发送到第二多用途代理以防止第二多用途代理使用计算资源来生成相同的数据。在另一个示例中,第一多用途代理可以将用于生成渲染数据的数据共享给第二多用途代理,以防止对相同本地数据的冗余查询。
图6描绘了根据本公开的某些实施例的使用多用途代理来生成界面组件的分布式系统和处理的示例流程图。具体而言,图6描绘了实现多代理促进的处理600的分布式系统,该处理600用于显示和监视作为系统的客户端侧渲染配置的一部分的组件界面。该分布式系统包括客户端引擎系统120和组件促进系统140以执行处理600。处理600开始于步骤610,此时客户端引擎系统120生成显示组件仪表板的请求。显示组件仪表板的请求可以来自请求在客户端设备的电子显示器上显示组件仪表板的客户端。例如,客户端可以使用执行客户端引擎系统120的客户端设备110来将查看组件仪表板的请求发送到执行组件促进系统140的服务提供商的服务器130。在各种实施例中,显示组件仪表板的请求包括客户端指示符,该客户端指示符对应于所存储的仪表板配置。在各种实施例中,显示组件仪表板的请求包括列出用于在仪表板上显示的多个期望组件的组件清单。
在步骤615处,组件促进系统140接收来自客户端引擎系统120的请求并确定组件插件来填充所请求的仪表板。组件促进系统140可以利用特定于客户端的组件清单来确定用于填充所请求的仪表板的组件插件。在各种实施例中,可以从客户端引擎系统120接收该清单作为显示组件仪表板的请求的一部分。在各种实施例中,组件促进系统140将组件清单存储在内部存储器中并且基于从客户端引擎系统123接收到的仪表板指示符来检索清单。基于该清单,可以识别一个或多个插件。插件可以是包含一个或多个组件定义或功能的软件包。多个插件可以存储在内部存储器上或者可由组件促进系统140的内部存储器访问。插件可以对应于用于在仪表板界面上渲染组件的声明性数据。
在步骤620处,基于所确定的组件插件,组件促进系统140生成用于组件生成的声明性元数据。声明性元数据可以基于从所确定的组件插件获取的声明性数据或者从存储基于所确定的组件插件的声明性数据的计算机存储器来生成。例如,基于组件清单,可以组合从组件插件获取的一组或多组声明性数据以形成一组声明性元数据。声明性元数据可以包括一组或多组静态元数据和一组或多组可变元数据,用于生成特定于客户端的视觉组件。
在步骤625处,客户端引擎系统120从组件促进系统140接收声明性元数据并解析该声明性元数据以确定一个或多个视觉组件。这可以类似于处理500中的步骤510和520。在步骤630处,基于所确定的一个或多个视觉组件,客户端引擎系统120将组件代理复制到组件代理的一个或多个实例中。这可以类似于处理400中描述的步骤430。在步骤635处,客户端引擎系统120生成对将用于促进仪表板界面的服务数据的请求。该请求被发送到组件促进系统140,其跟踪并记录与服务的性能相关的度量。
在步骤640处,组件促进系统140检索用于完成视觉组件的服务数据。组件促进系统140可以使用在框635中生成的请求来识别在服务提供商系统处执行的服务并且提取要发送到客户端引擎系统120的度量数据。
在步骤645处,客户端引擎系统120从组件促进系统140接收服务数据并生成用于在仪表板界面上渲染完整组件的渲染数据。例如,客户端引擎系统120和其中复制的多用途代理可以使用声明性元数据和服务数据来编译完整组件的一个或多个实例并生成完整组件的渲染数据。
在步骤650处,客户端引擎系统120利用所生成的渲染数据来显示包括组件仪表板的界面。在各种实施例中,客户端引擎系统120先前已经接收到将用仪表板界面填充的外壳仪表板。外壳仪表板在生成时会实时填充有界面数据。例如,当由客户端渲染配置中的客户端引擎系统120生成渲染数据时,组件促进系统140可以并行地生成一组或多组界面数据。在服务器侧渲染配置中,仪表板组件在其从组件促进系统140被接收并由客户端引擎系统120执行时被显示。
在步骤655处,客户端引擎系统120实时监视所显示的界面以确定任何改变或与界面的交互。实时监视界面可以允许对界面进行实时更新。例如,客户端引擎系统120可以监视界面以检测用户与界面的交互。用户交互可能导致仪表板上特定组件的更新。客户端引擎系统120可以响应于确定交互而使得更新组件。例如,如果与界面的交互将使得更新小部件组件,那么组件引擎可以与组件促进系统140交互以使得重新生成或更新组件。在步骤660处,组件促进系统140与客户端引擎系统120并发地实时监视所显示的界面,以确定与组件的任何改变或交互。通过同时监视界面,两个系统可以响应于与界面的交互而不是响应于与另一个系统的通信来采取动作。
图7是根据本公开的某些实施例的包括仪表板库和用于生成界面的仪表板引擎的分布式系统的框图。具体而言,图7描绘了示例界面结构和促进界面显示的实体的框图。图7中所示的框图可以描绘用于创建根据本文描述的实施例的仪表板界面的描述性流程。如图7中所示,存在多个插件700A-700N,其包括与可以显示在仪表板界面上的组件相关的数据和/或信息。
插件700A-700N通信地耦合到组件编目器200,组件编目器200从插件700A-700N接收数据以生成用于实现界面的组件目录。可以使用插件700A-700N和用于显示的组件的某个清单(诸如作为仪表板请求的一部分从客户端设备接收到的清单)来创建组件目录。组件编目器200可以通信地耦合到组件储存库210,组件储存库210接收组件目录并检索与组件目录对应的一个或多个组件数据集。检索到的一个或多个组件数据集可以被编译成声明性元数据。声明性元数据可以包括直接从插件获取的一些静态数据以及将由存储在客户端设备处的本地数据填充的可变数据的字段。在各种实施例中,先前描述的实体中的每一个可以存储在组件促进系统处。
组件储存库210可以通信地耦合到仪表板引擎子系统123,仪表板引擎子系统123从一个或多个检索到的组件接收声明性元数据。仪表板引擎子系统123可以存储在与前述组件促进系统分离的客户端引擎系统处。仪表板引擎子系统123可以被配置为利用来自组件储存库210的声明性元数据来使得生成一个或多个组件。
仪表板子系统123可以包括一个或多个代理实例710A-710N。该一个或多个代理实例可以是多用途代理,其能够解析声明性元数据、复制和生成组件的渲染数据。仪表板子系统123还可以包括存储装置720。存储装置720可以是包括用于生成多用途代理710的实例的数据的存储装置。存储装置720可以是本地存储装置,诸如包含用于补充不完整的声明性元数据的本地数据的本地存储子系统300。例如,代理实例710可以解析传入的声明性元数据并确定复制代理实例710A-710N。代理实例710A-710N中的每一个可以被委托用于渲染的组件。每个单独的代理实例710可以用来自存储装置720的本地数据来补充声明性元数据的子集以创建一组完整的声明性数据。然后,代理实例可以基于完整的声明性数据来生成渲染数据。
仪表板子系统123可以通信地耦合到一个或多个渲染子系统730。一个或多个渲染子系统730可以是用于促进一个或多个仪表板组件的生成的内部或外部服务。例如,渲染子系统可以是外部渲染子系统,诸如可作为服务器侧渲染配置的一部分操作的组件促进系统140的渲染子系统260。在合并客户端侧渲染配置的各种实施例中,渲染由仪表板引擎子系统123的代理实例710A-710N执行。
仪表板子系统123可以通信地耦合到服务数据子系统142。服务数据子系统142可以将服务数据发送到仪表板引擎子系统123以完成由仪表板引擎子系统123接收到的声明性元数据,从而形成完整的组件。例如,服务可以独立于仪表板显示处理代表客户端执行,用于为客户端的客户托管虚拟机。可以查询服务以检索用于填充字段的服务数据,并且响应地向仪表板引擎子系统123发送回服务数据。在上面的示例中,虚拟机服务可以发送诸如虚拟机当前的上传速度、下载速度、维护状态等信息。
仪表板库250可以存储用于实例化仪表板界面的一个或多个仪表板配置。仪表板库250可以包含与和客户端或用户相关联的一个或多个定制模块化仪表板配置相关的信息。在各种实施例中,不受限制地并且与先前描述的任何处理并行地,仪表板库250可以接收与显示特定客户端的仪表板或更新后的客户端仪表板的请求相关的数据。仪表板库250然后可以开始生成将由所生成的一个或多个组件填充的仪表板界面外壳。仪表板库250可以通信地耦合到将托管仪表板界面的客户端设备上执行的控制台应用740。仪表板库250可以将数据发送到包括与特定客户对应的仪表板外壳的控制台应用740。作为响应,控制台应用740可以使得在用户经由电子显示器可见的控制台应用的主机界面750上生成仪表板界面751。仪表板界面751可以在组件753变得可用时由组件753填充并且通过执行显示数据来显示。
以这种方式,仪表板库26=50和代理实例710A-710N可以用于在控制台应用740的主机界面750上生成仪表板界面751。在各种实施例中,外壳组件被放置在仪表板界面751上,同时组件生成处理等待以向客户端指示一个或多个组件将来要被放置在仪表板界面751上。仪表板界面751还可以包括全局控制组件752。全局控制组件752可以是单独的组件,其本质上是仪表板界面751的一部分,而不需要组件生成。全局控制组件752可以是客户端可以与之对接以使得仪表板界面的某个方面改变的组件。例如,全局控制组件752可以改变仪表板界面的一个或多个视觉方面,诸如亮度水平、阴影水平等。在另一个示例中,全局控制组件752可以改变仪表板界面的一个或多个功能方面,诸如输入协议、更新协议等。
组件753A-753N可以在它们被生成时显示在仪表板界面751上。例如,第一组件可以在第二组件之前被渲染。然后,第一组件可以在第二组件之前在仪表板界面上被显示,而第二组件仍在进行渲染。组件753A-753N可以是交互式组件。当检测到与组件的交互时,交互组件可以以某种方式改变或使得执行某个功能。例如,如图7中所示,组件753A用边框突出显示,指示客户端已使用数字界面与组件753A交互。代理实例710A-710N可以使用仪表板引擎子系统123可访问的本地数据来主动地实时监视和更新其对应的组件。
在各种实施例中,控制台应用740还可以包括组件编辑界面760。组件编辑界面760可以是客户端可以通过其改变当前组件753的某个方面或者创建新组件的界面。组件编辑界面760可以是实时交互的,这意味着当客户端通过组件编辑界面760与组件交互时,可以实时生成和编辑声明性元数据。例如,如图7中所示,插件A 700A可以包含与在组件编辑界面760中正在编辑的组件的功能相关的一些数据。可以从插件A 700A实时获取和/或转换数据以在组件编辑界面700中生成组件的传真。
图8描绘了根据本公开的某些实施例的用于组件利用的示例图形界面。具体而言,图8描绘了根据本文描述的实施例生成的示例仪表板界面。如图8中所示,主机界面750可以显示由多个组件填充的组件仪表板。主机界面750可以包括全局控制组件752。主机界面750可以包括多个视觉组件,诸如组件800。如图8中所示,组件800是显示虚拟机的操作状态的小部件式组件。
主机界面750还可以包括新组件810。新组件810可以是用于在主机界面750上创建新组件的占位符组件。例如,通过与数字显示器上的新组件810交互,可以开始新组件编辑处理。新组件编辑处理可以包括用于新组件810的组件编辑界面760的启动。如图8中所示,组件编辑界面760可以执行并向客户端显示用于生成新组件的选项。例如,如图8中所示,潜在的新组件可以是用于显示活动服务器位置的活动服务器位置(ACTIVE SERVERLOCATIONS)小部件组件。根据与潜在新小部件对应的声明性元数据,潜在新组件被显示为所生成组件的传真。例如,传真包含静态数据(诸如关于组件的若干信息字段的标题和位置)以及可变数据(诸如将作为客户端可以指定的显示信息的主题的几个服务器)。
下面描述用于实现图8中描绘的界面的示例实施例。实现可以在其上显示界面的客户端引擎系统120的客户端设备110的用户可以指定仪表板“我的虚拟机仪表板(MYVIRTUAL MACHINE DASHBOARD)”的显示。用户可以通过编辑界面760与新组件810交互以请求创建新组件。响应于检测到与新组件810的交互,客户端引擎系统120可以查询组件促进系统140的目录子系统141以检索并发送编目组件的列表。编目组件中的一个这样的组件可以在组件编辑界面760上显示为传真组件。
一旦用户已经指定了新组件810的创建,客户端引擎系统就可以将与新配置对应的仪表板数据发送到组件促进系统140的仪表板创建子系统143。仪表板创建子系统143解析仪表板数据并访问多个插件700以检索与新仪表板配置相关的声明性元数据。仪表板创建子系统143然后可以将声明性元数据发送到客户端引擎系统120。客户端引擎系统120可以利用多用途代理来解析声明性定义并使得复制多用途代理以使数个组件显示为“我的虚拟机仪表板(MY VIRTUAL MACHINE DASHBOARD)”的一部分。一些多用途代理可以查询组件促进系统140的服务数据子系统142以检索与要显示的组件相关的服务数据。例如,与新组件810对应的特定多用途代理可以向服务数据子系统142查询与由服务提供商操作并由客户端使用的服务器的服务器状态相关的服务数据。服务数据子系统142可以将该信息发送回特定的多用途代理。
多用途代理可以使用从仪表板创建子系统143接收到的声明性定义和从服务数据子系统142接收到的服务数据来生成要在仪表板界面上显示的组件的渲染数据。然后可以执行渲染数据以填充外壳界面并显示图8中描绘的界面。
如上所述,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、日志记录、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用堆栈的剩余元素。例如,用户可以登录到IaaS平台以创建虚拟机(VM)、在每个VM上安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶、甚至将企业软件安装到该VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)IaaS的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
在一些示例中,IaaS部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层(例如,服务器、存储装置、网络硬件和虚拟化)之下。因此,客户可以负责处理(OS)、中间件和/或(例如,在(例如可以按需启动的)自助服务虚拟机等上的)应用部署。
在一些示例中,IaaS供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
在一些情况下,IaaS供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集合存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
在一些示例中,基础设施可以具有许多互连的元素。例如,可能存在一个或多个虚拟私有云(VPC)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个入站/出站业务组规则以定义将如何设置网络的入站和/或出站业务以及一个或多个虚拟机(VM)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元素,基础设施可以逐步演进。
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境来部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具来供给资源,和/或一旦供给基础设施就可以利用部署工具来部署代码。
图9是图示根据至少一个实施例的IaaS体系架构的示例模式的框图900。服务运营商902可以通信地耦合到可以包括虚拟云网络(VCN)906和安全主机子网908的安全主机租赁904。在一些示例中,服务运营商902可以使用一个或多个客户端计算设备(客户端计算设备可以是便携式手持设备(例如,蜂窝电话、/>计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google/>头戴式显示器)),运行软件(诸如MicrosoftWindows/>)和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等),并且支持互联网、电子邮件、短消息服务(SMS)、或其它通信协议。可替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的Microsoft/>Apple/>和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统(诸如例如GoogleChrome OS))中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有手势输入设备的Microsoft Xbox游戏控制台)、和/或能够通过可以访问VCN906和/或互联网的网络进行通信的个人消息传递设备。
VCN 906可以包括本地对等网关(LPG)910,该VCN 906可以经由包含在安全壳(SSH)VCN 912中的LPG 910通信地耦合到SSH VCN 912。SSH VCN 912可以包括SSH子网914,并且SSH VCN 912可以经由包含在控制平面VCN 916中的LPG 910通信地耦合到控制平面VCN 916。此外,SSH VCN 912可以经由LPG 910通信地耦合到数据平面VCN 918。控制平面VCN 916和数据平面VCN 918可以包含在可以由IaaS提供商拥有和/或操作的服务租赁919中。
控制平面VCN 916可以包括充当外围网络(例如,公司内部网络和外部网络之间的公司网络的部分)的控制平面非军事区(DMZ)层920。基于DMZ的服务器可以承担有限责任并有助于控制违规。此外,DMZ层920可以包括一个或多个负载平衡器(LB)子网922、可以包括(一个或多个)应用(app)子网926的控制平面应用层924、可以包括(一个或多个)数据库(DB)子网930(例如,(一个或多个)前端DB子网和/或(一个或多个)后端DB子网)的控制平面数据层928。包含在控制平面DMZ层920中的(一个或多个)LB子网922可以通信地耦合到包含在控制平面应用层924中的(一个或多个)应用子网926和可以包含在控制平面VCN 916中的互联网网关934,并且(一个或多个)应用子网926可以通信地耦合到包含在控制平面数据层928中的(一个或多个)DB子网930以及服务网关936和网络地址转换(NAT)网关938。控制平面VCN 916可以包括服务网关936和NAT网关938。
控制平面VCN 916可以包括数据平面镜像应用层940,其可以包括(一个或多个)应用子网926。包含在数据平面镜像应用层940中的(一个或多个)应用子网926可以包括可以执行计算实例944的虚拟网络接口控制器(VNIC)942。计算实例944可以将数据平面镜像应用层940的(一个或多个)应用子网926通信地耦合到可以包含在数据平面应用层946中的(一个或多个)应用子网926。
数据平面VCN 918可以包括数据平面应用层946、数据平面DMZ层948和数据平面数据层950。数据平面DMZ层948可以包括(一个或多个)LB子网922,其可以通信地耦合到数据平面应用层946的(一个或多个)应用子网926和数据平面VCN 918的互联网网关934。(一个或多个)应用子网926可以通信地耦合到数据平面VCN 918的服务网关936和数据平面VCN918的NAT网关938。数据平面数据层950还可以包括可以通信地耦合到数据平面应用层946的(一个或多个)应用子网926的(一个或多个)DB子网930。
控制平面VCN 916和数据平面VCN 918的互联网网关934可以通信地耦合到元数据管理服务952,该元数据管理服务952可以通信地耦合到公共互联网954。公共互联网954可以通信地耦合到控制平面VCN 916和数据平面VCN 918的NAT网关938。控制平面VCN916和数据平面VCN 918的服务网关936可以通信地耦合到云服务956。
在一些示例中,控制平面VCN 916或数据平面VCN 918的服务网关936可以对云服务956进行应用编程接口(API)调用,而无需通过公共互联网954。从服务网关936到云服务956的API调用可以是单向的:服务网关936可以对云服务956进行API调用,并且云服务956可以将请求的数据发送到服务网关936。但是,云服务956可以不发起对服务网关936的API调用。
在一些示例中,安全主机租赁904可以直接连接到服务租赁919,服务租赁919否则可以被隔离。安全主机子网908可以通过LPG 910与SSH子网914通信,LPG 910可以使得能够在否则隔离的系统上进行双向通信。将安全主机子网908连接到SSH子网914可以使安全主机子网908访问服务租赁919内的其它实体。
控制平面VCN 916可以允许服务租赁919的用户设置或以其它方式供给期望资源。在控制平面VCN 916中供给的期望资源可以在数据平面VCN 918中部署或以其它方式使用。在一些示例中,控制平面VCN 916可以与数据平面VCN 918隔离,并且控制平面VCN916的数据平面镜像应用层940可以经由VNIC 942与数据平面VCN918的数据平面应用层946通信,VNIC 942可以包含在数据平面镜像应用层940和数据平面应用层946中。
在一些示例中,系统的用户或客户可以通过可以将请求传送到元数据管理服务952的公共互联网954来做出请求,例如创建、读取、更新或删除(CRUD)操作。元数据管理服务952可以通过互联网网关934将请求传送到控制平面VCN 916。请求可以由包含在控制平面DMZ层920中的(一个或多个)LB子网922接收。(一个或多个)LB子网922可以确定请求是有效的,并且响应于该确定,(一个或多个)LB子网922可以将请求传输到包含在控制平面应用层924中的(一个或多个)应用子网926。如果请求被验证并且需要对公共互联网954的调用,那么对公共互联网954的调用可以被传输到可以对公共互联网954进行调用的NAT网关938。请求可能期望存储的存储器可以存储在(一个或多个)DB子网930中。
在一些示例中,数据平面镜像应用层940可以促进控制平面VCN916和数据平面VCN918之间的直接通信。例如,可能期望对包含在数据平面VCN 918中的资源应用对配置的更改、更新或其它适当的修改。经由VNIC 942,控制平面VCN 916可以直接与包含在数据平面VCN 918中的资源通信,并且从而可以执行对这些资源的配置的更改、更新或其它适当的修改。
在一些实施例中,控制平面VCN 916和数据平面VCN 918可以包含在服务租赁919中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面VCN 916或数据平面VCN918。替代地,IaaS提供商可以拥有或操作控制平面VCN 916和数据平面VCN 918,这两种平面都可以包含在服务租赁919中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源进行交互的网络。此外,该实施例可以允许系统的用户或客户私自存储数据库,而无需依赖可能不具有期望的威胁防范级别的公共互联网954以进行存储。
在其它实施例中,包含在控制平面VCN 916中的(一个或多个)LB子网922可以被配置为从服务网关936接收信号。在这个实施例中,控制平面VCN 916和数据平面VCN 918可以被配置为由IaaS提供商的客户调用而无需调用公共互联网954。IaaS提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由IaaS提供商控制并且可以存储在服务租赁919上,服务租赁919可能与公共互联网954隔离。
图10是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1000。服务运营商1002(例如,图9的服务运营商902)可以通信地耦合到安全主机租赁1004(例如,图9的安全主机租赁904),该安全主机租赁1004可以包括虚拟云网络(VCN)1006(例如,图9的VCN 906)和安全主机子网1008(例如,图9的安全主机子网908)。VCN 1006可以包括本地对等网关(LPG)1010(例如,图9的LPG 910),该VCN 1006可以经由包含在安全壳(SSH)VCN1012(例如,图9的SSH VCN 912)中的LPG 910通信地耦合到SSH VCN 1012。SSH VCN 1012可以包括SSH子网1014(例如,图9的SSH子网914),并且SSH VCN 1012可以经由包含在控制平面VCN 1016(例如,图9的控制平面VCN 916)中的LPG 1010通信地耦合到控制平面VCN1016。控制平面VCN 1016可以包含在服务租赁1019(例如,图9的服务租赁919)中,并且数据平面VCN1018(例如,图9的数据平面VCN 918)可以包含在可能由系统的用户或客户拥有或操作的客户租赁1021中。
控制平面VCN 1016可以包括控制平面DMZ层1020(例如,图9的控制平面DMZ层920),其可以包括(一个或多个)LB子网1022(例如,图9的(一个或多个)LB子网922)、可以包括(一个或多个)应用子网1026(例如,图9的(一个或多个)应用子网926)的控制平面应用层1024(例如,图9的控制平面应用层924)、可以包括(一个或多个)数据库(DB)子网1030(例如,类似于图9的(一个或多个)DB子网930)的控制平面数据层1028(例如,图9的控制平面数据层928)。包含在控制平面DMZ层1020中的(一个或多个)LB子网1022可以通信地耦合到包含在控制平面应用层1024中的(一个或多个)应用子网1026和可以包含在控制平面VCN1016中的互联网网关1034(例如,图9的互联网网关934),并且(一个或多个)应用子网1026可以通信地耦合到包含在控制平面数据层1028中的(一个或多个)DB子网1030以及服务网关1036(例如,图9的服务网关)和网络地址转换(NAT)网关1038(例如,图9的NAT网关938)。控制平面VCN 1016可以包括服务网关1036和NAT网关1038。
控制平面VCN 1016可以包括可以包括(一个或多个)应用子网1026的数据平面镜像应用层1040(例如,图9的数据平面镜像应用层940)。包含在数据平面镜像应用层1040中的(一个或多个)应用子网1026可以包括可以执行计算实例1044(例如,类似于图9的计算实例944)的虚拟网络接口控制器(VNIC)1042(例如,942的VNIC)。计算实例1044可以促进数据平面镜像应用层1040的(一个或多个)应用子网1026和可以包含在数据平面应用层1046(例如,图9的数据平面应用层946)中的(一个或多个)应用子网1026之间的经由包含在数据平面镜像应用层1040中的VNIC 1042以及包含在数据平面应用层1046中的VNIC 1042的通信。
包含在控制平面VCN 1016中的互联网网关1034可以通信地耦合到元数据管理服务1052(例如,图9的元数据管理服务952),该元数据管理服务1052可以通信地耦合到公共互联网1054(例如,图9的公共互联网954)。公共互联网1054可以通信地耦合到包含在控制平面VCN 1016中的NAT网关1038。包含在控制平面VCN 1016中的服务网关1036可以通信地耦合到云服务1056(例如,图9的云服务956)。
在一些示例中,数据平面VCN 1018可以包含在客户租赁1021中。在这种情况下,IaaS提供商可以为每个客户提供控制平面VCN1016,并且IaaS提供商可以为每个客户设置包含在服务租赁1019中的唯一计算实例1044。每个计算实例1044可以允许包含在服务租赁1019中的控制平面VCN 1016和包含在客户租赁1021中的数据平面VCN 1018之间的通信。计算实例1044可以允许在包含在服务租赁1019中的控制平面VCN 1016中供给的资源被部署或以其它方式用于包含在客户租赁1021中的数据平面VCN 1018中。
在其它示例中,IaaS提供商的客户可以具有存在于客户租赁1021中的数据库。在这个示例中,控制平面VCN 1016可以包括数据平面镜像应用层1040,该数据平面镜像应用层1040可以包括(一个或多个)应用子网1026。数据平面镜像应用层1040可以驻留在数据平面VCN 1018中,但数据平面镜像应用层1040可能不在数据平面VCN 1018中。换句话说,数据平面镜像应用层1040可以访问客户租赁1021,但是数据平面镜像应用层1040可能不存在于数据平面VCN1018中或者由IaaS提供商的客户拥有或操作。数据平面镜像应用层1040可以被配置为对数据平面VCN 1018进行调用,但可以不被配置为对包含在控制平面VCN 1016中的任何实体进行调用。客户可能期望在数据平面VCN 1018中部署或以其它方式使用在控制平面VCN1016中供给的资源,并且数据平面镜像应用层1040可以促进客户的期望部署或资源的其它使用。
在一些实施例中,IaaS提供商的客户可以将过滤器应用到数据平面VCN 1018。在这个实施例中,客户可以确定数据平面VCN 1018可以访问什么,并且客户可以限制从数据平面VCN 1018对公共互联网1054的访问。IaaS提供商可能无法应用过滤器或以其它方式控制数据平面VCN 1018对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁1021中的数据平面VCN 1018上可以帮助将数据平面VCN 1018与其它客户和公共互联网1054隔离开。
在一些实施例中,云服务1056可以由服务网关1036调用以访问公共互联网1054、控制平面VCN 1016或数据平面VCN 1018上可能不存在的服务。云服务1056与控制平面VCN1016或数据平面VCN1018之间的连接可以不是实时的或连续的。云服务1056可以存在于由IaaS提供商拥有或操作的不同网络上。云服务1056可以被配置为接收来自服务网关1036的调用并且可以被配置为不接收来自公共互联网1054的调用。一些云服务1056可以与其它云服务1056隔离,并且控制平面VCN 1016可以与可能与控制平面VCN 1016不在同一区域的云服务1056隔离。例如,控制平面VCN 1016可能位于“区域1”,并且云服务“部署6”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面VCN 1016中的服务网关1036对部署6进行调用,那么该调用可以被传输到区域1中的部署6。在这个示例中,区域1中的部署6或控制平面VCN 1016可能不与区域2中的部署6通信地耦合或以其它方式通信。
图11是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1100。服务运营商1102(例如,图9的服务运营商902)可以通信地耦合到安全主机租赁1104(例如,图9的安全主机租赁904),该安全主机租赁1104可以包括虚拟云网络(VCN)1106(例如,图9的VCN 906)和安全主机子网1108(例如,图9的安全主机子网908)。VCN 1106可以包括LPG1110(例如,图9的LPG910),该VCN 1106可以经由包含在SSH VCN 1112(例如,图9的SSH VCN912)中的LPG 1110通信地耦合到SSH VCN 1112。SSH VCN 1112可以包括SSH子网1114(例如,图9的SSH子网914),并且SSH VCN 1112可以经由包含在控制平面VCN 1116(例如,图9的控制平面VCN 916)中的LPG 1110通信地耦合到控制平面VCN1116并且经由包含在数据平面VCN 1118(例如,图9的数据平面918)中的LPG 1110通信地耦合到数据平面VCN 1118。控制平面VCN 1116和数据平面VCN 1118可以包含在服务租赁1119(例如,图9的服务租赁919)中。
控制平面VCN 1116可以包括可以包括(一个或多个)负载平衡器(LB)子网1122(例如,图9的(一个或多个)LB子网922)的控制平面DMZ层1120(例如,图9的控制平面DMZ层920)、可以包括(一个或多个)应用子网1126(例如,类似于图9的(一个或多个)应用子网926)的控制平面应用层1124(例如,图9的控制平面应用层924)、可以包括(一个或多个)DB子网1130的控制平面数据层1128(例如,图9的控制平面数据层928)。包含在控制平面DMZ层1120中的(一个或多个)LB子网1122可以通信地耦合到包含在控制平面应用层1124中的(一个或多个)应用子网1126和可以包含在控制平面VCN 1116中的互联网网关1134(例如,图9的互联网网关934),并且(一个或多个)应用子网1126可以通信地耦合到包含在控制平面数据层1128中的(一个或多个)DB子网1130以及服务网关1136(例如,图9的服务网关)和网络地址转换(NAT)网关1138(例如,图9的NAT网关938)。控制平面VCN 1116可以包括服务网关1136和NAT网关1138。
数据平面VCN 1118可以包括数据平面应用层1146(例如,图9的数据平面应用层946)、数据平面DMZ层1148(例如,图9的数据平面DMZ层948),以及数据平面数据层1150(例如,图9的数据平面数据层950)。数据平面DMZ层1148可以包括可以通信地耦合到数据平面应用层1146的(一个或多个)可信应用子网1160和(一个或多个)不可信应用子网1162以及包含在数据平面VCN 1118中的互联网网关1134的(一个或多个)LB子网1122。(一个或多个)可信应用子网1160可以通信地耦合到包含在数据平面VCN 1118中的服务网关1136、包含在数据平面VCN 1118中的NAT网关1138、以及包含在数据平面数据层1150中的(一个或多个)DB子网1130。(一个或多个)不可信应用子网1162可以通信地耦合到包含在数据平面VCN1118中的服务网关1136和包含在数据平面数据层1150中的(一个或多个)DB子网1130。数据平面数据层1150可以包括可以通信地耦合到包含在数据平面VCN 1118中的服务网关1136的(一个或多个)DB子网1130。
(一个或多个)不可信应用子网1162可以包括可以通信地耦合到租户虚拟机(VM)1166(1)-(N)的一个或多个主VNIC 1164(1)-(N)。每个租户VM 1166(1)-(N)可以通信地耦合到可以包含在相应容器出口VCN 1168(1)-(N)中的相应应用子网1167(1)-(N),该相应容器出口VCN 1168(1)-(N)可以包含在相应客户租赁1170(1)-(N)中。相应辅VNIC 1172(1)-(N)可以促进包含在数据平面VCN 1118中的(一个或多个)不可信应用子网1162与包含在容器出口VCN 1168(1)-(N)中的应用子网之间的通信。每个容器出口VCN 1168(1)-(N)可以包括NAT网关1138,该NAT网关1138可以通信地耦合到公共互联网1154(例如,图9的公共互联网954)。
包含在控制平面VCN 1116中以及包含在数据平面VCN 1118中的互联网网关1134可以通信地耦合到元数据管理服务1152(例如,图9的元数据管理系统952),该元数据管理服务1152可以通信地耦合到公共互联网1154。公共互联网1154可以通信地耦合到包含在控制平面VCN 1116中以及包含在数据平面VCN 1118中的NAT网关1138。包含在控制平面VCN1116中以及包含在数据平面VCN 1118中的服务网关1136可以通信地耦合到云服务1156。
在一些实施例中,数据平面VCN 1118可以与客户租赁1170集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于IaaS提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,IaaS提供商可以确定是否运行由客户给予IaaS提供商的代码。
在一些示例中,IaaS提供商的客户可以向IaaS提供商授予临时网络访问,并请求附加到数据平面层应用1146的功能。运行该功能的代码可以在VM 1166(1)-(N)中执行,并且该代码可以不被配置为在数据平面VCN 1118上的其它任何地方运行。每个VM 1166(1)-(N)可以连接到一个客户租赁1170。包含在VM 1166(1)-(N)中的相应容器1171(1)-(N)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器1171(1)-(N)运行代码,其中容器1171(1)-(N)可能至少包含在(一个或多个)不可信应用子网1162中所包含的VM1166(1)-(N)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏IaaS提供商的网络或损坏不同客户的网络。容器1171(1)-(N)可以通信地耦合到客户租赁1170并且可以被配置为传输或接收来自客户租赁1170的数据。容器1171(1)-(N)可以不被配置为从数据平面VCN 1118中的任何其它实体传输或接收数据。在运行代码完成后,IaaS提供商可以终止或以其它方式处置容器1171(1)-(N)。
在一些实施例中,(一个或多个)可信应用子网1160可以运行可以由IaaS提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网1160可以通信地耦合到(一个或多个)DB子网1130并且被配置为在(一个或多个)DB子网1130中执行CRUD操作。(一个或多个)不可信应用子网1162可以通信地耦合到(一个或多个)DB子网1130,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)DB子网1130中执行读取操作。可以包含在每个客户的VM 1166(1)-(N)中并且可以运行来自客户的代码的容器1171(1)-(N)可以不与(一个或多个)DB子网1130通信地耦合。
在其它实施例中,控制平面VCN 1116和数据平面VCN 1118可以不直接通信地耦合。在这个实施例中,控制平面VCN 1116和数据平面VCN 1118之间可能不存在直接通信。但是,通信可以通过至少一个方法而间接地发生。LPG 1110可以由IaaS提供商建立,其可以促进控制平面VCN 1116和数据平面VCN 1118之间的通信。在另一个示例中,控制平面VCN1116或数据平面VCN 1118可以经由服务网关1136对云服务1156进行调用。例如,从控制平面VCN 1116对云服务1156的调用可以包括对可以与数据平面VCN 1118通信的服务的请求。
图12是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1200。服务运营商1202(例如,图9的服务运营商902)可以通信地耦合到安全主机租赁1204(例如,图9的安全主机租赁904),该安全主机租赁1204可以包括虚拟云网络(VCN)1206(例如,图9的VCN 906)和安全主机子网1208(例如,图9的安全主机子网908)。VCN 1206可以包括LPG1210(例如,图9的LPG910),该VCN 1206可以经由包含在SSH VCN 1212(例如,图9的SSH VCN912)中的LPG 1210通信地耦合到SSH VCN 1212。SSH VCN 1212可以包括SSH子网1214(例如,图9的SSH子网914),并且SSH VCN 1212可以经由包含在控制平面VCN 1216(例如,图9的控制平面VCN 916)中的LPG 1210通信地耦合到控制平面VCN1216并且经由包含在数据平面VCN 1218(例如,图9的数据平面918)中的LPG 1210通信地耦合到数据平面VCN 1218。控制平面VCN 1216和数据平面VCN 1218可以包含在服务租赁1219(例如,图9的服务租赁919)中。
控制平面VCN 1216可以包括可以包括(一个或多个)LB子网1222(例如,图9的(一个或多个)LB子网922)的控制平面DMZ层1220(例如,图9的控制平面DMZ层920)、可以包括(一个或多个)应用子网1226(例如,图9的(一个或多个)应用子网926)的控制平面应用层1224(例如,图9的控制平面应用层924)、可以包括(一个或多个)DB子网1230(例如,图10的(一个或多个)DB子网1030)的控制平面数据层1228(例如,图9的控制平面数据层928)。包含在控制平面DMZ层1220中的(一个或多个)LB子网1222可以通信地耦合到包含在控制平面应用层1224中的(一个或多个)应用子网1226和可以包含在控制平面VCN 1216中的互联网网关1234(例如,图9的互联网网关934),并且(一个或多个)应用子网1226可以通信地耦合到包含在控制平面数据层1228中的(一个或多个)DB子网1230以及服务网关1236(例如,图9的服务网关)和网络地址转换(NAT)网关1238(例如,图9的NAT网关938)。控制平面VCN 1216可以包括服务网关1236和NAT网关1238。
数据平面VCN 1218可以包括数据平面应用层1246(例如,图9的数据平面应用层946)、数据平面DMZ层1248(例如,图9的数据平面DMZ层948))、以及数据平面数据层1250(例如,图9的数据平面数据层950)。数据平面DMZ层1248可以包括可以通信地耦合到数据平面应用层1246的(一个或多个)可信应用子网1260(例如,图10的(一个或多个)可信应用子网1060)和(一个或多个)不可信应用子网1262(例如,图10的(一个或多个)不可信应用子网1062)以及包含在数据平面VCN 1218中的互联网网关1234的(一个或多个)LB子网1222。(一个或多个)可信应用子网1260可以通信地耦合到包含在数据平面VCN 1218中的服务网关1236、包含在数据平面VCN 1218中的NAT网关1238以及包含在数据平面数据层1250中的(一个或多个)DB子网1230。(一个或多个)不可信应用子网1262可以通信地耦合到包含在数据平面VCN 1218中的服务网关1236和包含在数据平面数据层1250中的(一个或多个)DB子网1230。数据平面数据层1250可以包括可以通信地耦合到包含在数据平面VCN 1218中的服务网关1236的(一个或多个)DB子网1230。
(一个或多个)不可信应用子网1262可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网1262内的租户虚拟机(VM)1266(1)-(N)的主VNIC 1264(1)-(N)。每个租户VM 1266(1)-(N)可以运行相应容器1267(1)-(N)中的代码,并且可通信地耦合到可以包含在数据平面应用层1246中的应用子网1226,该数据平面应用层1246可以包含在容器出口VCN 1268中。相应辅VNIC 1272(1)-(N)可以促进包含在数据平面VCN 1218中的(一个或多个)不可信应用子网1262和包含在容器出口VCN 1268中的应用子网之间的通信。容器出口VCN可以包括可以通信地耦合到公共互联网1254(例如,图9的公共互联网954)的NAT网关1238。
包含在控制平面VCN 1216中以及包含在数据平面VCN 1218中的互联网网关1234可以通信地耦合到元数据管理服务1252(例如,图9的元数据管理系统952),该元数据管理服务1252可以通信地耦合到公共互联网1254。公共互联网1254可以通信地耦合到包含在控制平面VCN 1216中以及包含在数据平面VCN 1218中的NAT网关1238。包含在控制平面VCN1216中以及包含在数据平面VCN 1218中的服务网关1236可以通信地耦合到云服务1256。
在一些示例中,图12的框图1200的体系架构所示的模式可以被认为是图10的框图1000的体系架构所示的模式的例外,并且在IaaS提供商不能直接与客户通信(例如,断开连接的区域)的情况下,这种模式可能是IaaS提供商的客户所期望的。客户可以实时访问每个客户的包含在VM 1266(1)-(N)中的相应容器1267(1)-(N)。容器1267(1)-(N)可以被配置为对包含在数据平面应用层1246的(一个或多个)应用子网1226中的相应辅VNIC 1272(1)-(N)进行调用,该数据平面应用层1246可以包含在容器出口VCN 1268中。辅VNIC 1272(1)-(N)可以将调用传输到NAT网关1238,该NAT网关1238可以将调用传输到公共互联网1254。在这个示例中,可以由客户实时访问的容器1267(1)-(N)可以与控制平面VCN 1216隔离,并且可以与包含在数据平面VCN 1218中的其它实体隔离。容器1267(1)-(N)也可以与来自其它客户的资源隔离。
在其它示例中,客户可以使用容器1267(1)-(N)来调用云服务1256。在这个示例中,客户可以运行容器1267(1)-(N)中的从云服务1256请求服务的代码。容器1267(1)-(N)可以将该请求传输到辅VNIC 1272(1)-(N),该辅VNIC 1272(1)-(N)可以将请求传输到NAT网关,该NAT网关可以将请求传输到公共互联网1254。公共互联网1254可以经由互联网网关1234将请求传输到包含在控制平面VCN 1216中的(一个或多个)LB子网1222。响应于确定请求有效,(一个或多个)LB子网可以将请求传输到(一个或多个)应用子网1226,该(一个或多个)应用子网1226可以经由服务网关1236将请求传输到云服务1256。
应当认识到的是,各图中描绘的IaaS体系架构900、1000、1100、1200可以具有除所描绘的组件之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,IaaS系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的组件布置或配置。
在某些实施例中,本文描述的IaaS系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类IaaS系统的示例是本受让方提供的Oracle云基础设施(OCI)。
图13图示了其中可以实现各种实施例的示例计算机系统1300。系统1300可以用于实现上述任何计算机系统。如图所示,计算机系统1300包括经由总线子系统1302与多个外围子系统通信的处理单元1304。这些外围子系统可以包括处理加速单元1306、I/O子系统1308、存储子系统1318和通信子系统1324。存储子系统1318包括有形计算机可读存储介质1322和系统存储器1310。
总线子系统1302提供用于让计算机系统1300的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1302被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1302可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1304控制计算机系统1300的操作。一个或多个处理器可以被包括在处理单元1304中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1304可以被实现为一个或多个独立的处理单元1332和/或1334,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1304也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1304可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1304中和/或存储子系统1318中。通过适当的编程,(一个或多个)处理器1304可以提供上述各种功能。计算机系统1300可以附加地包括处理加速单元1306,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1308可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如运动感测和/或手势识别设备,诸如Microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如Microsoft/>360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为去往输入设备(例如,Google/>)的输入的Google/>眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,/>导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板、以及音频/视频设备,诸如扬声器、数码相机、数码摄录机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1300向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备、以及调制解调器。
计算机系统1300可以包括包含软件元件、被示为当前位于系统存储器1310内的存储子系统1318。系统存储器1310可以存储在处理单元1304上可执行且可加载的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统1300的配置和类型,系统存储器1310可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。RAM通常包含可被处理单元1304立即访问和/或目前正被处理单元1304操作和执行的数据和/或程序模块。在一些实施方案中,系统存储器1310可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方案中,包含有助于在诸如启动期间在计算机系统1300内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以被存储在ROM中。作为示例而非限制,系统存储器1310也示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1312、程序数据1314、以及操作系统1316。作为示例,操作系统1316可以包括各种版本的MicrosoftApple/>和/或Linux操作系统、各种可商业获得的/>或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google/>OS等)和/或诸如iOS、/>Phone、/>OS、/>10OS和/>OS操作系统的移动操作系统。
存储子系统1318也可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1318中。这些软件模块或指令可以被处理单元1304执行。存储子系统1318也可以提供用于存储根据本公开使用的数据的储存库。
存储子系统1300也可以包括可被进一步连接到计算机可读存储介质1322的计算机可读存储介质读取器1320。与系统存储器1310一起,并且可选地与其相结合,计算机可读存储介质1322可以全面地表示用于临时和/或更持久地包含、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移除的存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1322也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输、或者可以用于传输期望信息并且可以被计算系统1300访问的任何其它介质。
举例来说,计算机可读存储介质1322可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1322可以包括但不限于:/>驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质1322也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如基于固态RAM、动态RAM、静态RAM、DRAM的SSD)、磁阻RAM(MRAM)SSD、以及使用基于DRAM的SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1300提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1324提供到其它计算机系统和网络的接口。通信子系统1324用作用于从其它系统接收数据和从计算机系统1300向其它系统传输数据的接口。例如,通信子系统1324可以使计算机系统1300能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1324可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术、诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术、WiFi(IEEE802.11系列标准)、或其它移动通信技术、或其任何组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,通信子系统1324可以提供有线网络连接(例如,以太网),作为无线接口的附加或者替代。
在一些实施例中,通信子系统1324也可以代表可以使用计算机系统1300的一个或多个用户接收结构化和/或非结构化的数据馈送1326、事件流1328、事件更新1330等形式的输入通信。
举例来说,通信子系统1324可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1326,诸如馈送、/>更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1324也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1328和/或事件更新1330。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统1324也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送1326、事件流1328、事件更新1330等,该一个或多个数据库可以与耦合到计算机系统1300的一个或多个流式传输数据源计算机进行通信。
计算机系统1300可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、/>计算平板电脑、PDA)、可穿戴设备(例如,Google/>头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1300的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
虽然已经描述了具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。因而,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作、或通过其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同的进程对可以使用不同的技术,或者同一进程对可以在不同时间使用不同的技术。
因而,说明书和附图被认为是说明性的而不是限制性的意义。但是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,显然可以对其进行添加、减少、删除和其它修改和改变。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称应被解释为涵盖单数和复数两者,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在内、附接到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中的值范围的描述仅旨在用作单独引用落入该范围内的每个单独值的简略方法,并且每个单独值被并入说明书中,就好像它在本文中单独描述一样。除非本文另有指示或与上下文明显矛盾,否则本文描述的所有方法都可以以任何合适的顺序执行。除非另有声明,否则本文提供的任何和全部示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明实施例并且不对本公开的范围构成限制。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
除非另有明确说明,否则析取(disjunctive)语言(诸如短语“X、Y或Z中的至少一个”)旨在在上下文中被理解为用作一般地表示项目、术语等可以是X、Y或Z中的一者或者是它们的任何组合(例如,X、Y和/或Z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。这些优选实施例的变型对于本领域普通技术人员在阅读前述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。因而,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括上述元素在其所有可能的变型中的任何组合。
本文引用的所有参考文献(包括出版物、专利申请和专利)均以相同的程度通过引用并入本文,就好像指示每个参考文献单独且具体地通过引用并入并且在本文中全文阐述一样。
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的环境和应用之外的任何数量的环境和应用中被使用。因而,本说明书和附图应当被认为是说明性而不是限制性的。各种修改和等同形式包括实施例中公开的特征的相关的、适当的组合。

Claims (22)

1.一种方法,包括:
由客户端设备接收声明性元数据,所述声明性元数据的至少一部分对应于要在界面上显示的一个或多个视觉组件;
由客户端设备解析所述声明性元数据以确定所述一个或多个视觉组件;
由客户端设备为所述一个或多个视觉组件中的每个视觉组件复制客户端设备的组件代理,以创建客户端设备的多个组件代理;以及
生成一组或多组渲染数据,所述一组或多组渲染数据中的每组渲染数据由客户端设备的所述多个组件代理中的相应组件代理生成并且对应于所述一个或多个视觉组件中的特定视觉组件,所述渲染数据能够执行以渲染所述一个或多个视觉组件。
2.如权利要求1所述的方法,还包括执行所述一组或多组渲染数据以使得所述一个或多个视觉组件显示在界面上。
3.如权利要求2所述的方法,还包括:
至少部分地基于所述声明性元数据确定与所述一个或多个视觉组件对应的一个或多个交互响应;
检测与和界面上显示的一个或多个视觉组件的交互对应的输入;以及
作为响应,使得执行所述一个或多个交互响应。
4.如权利要求3所述的方法,其中所述一个或多个交互响应至少包括组件更新响应,所述组件更新响应通过更新所述一组或多组渲染数据中的至少一组渲染数据而使得更新所显示的一个或多个视觉组件中的至少一个所显示的视觉组件。
5.如权利要求1-4中的任一项所述的方法,其中所述组件代理解析所述声明性元数据以确定将被复制以创建所述多个组件代理的数个组件代理。
6.如权利要求5所述的方法,还包括,响应于接收到所述声明性元数据,从计算机存储器中检索组件代理。
7.如权利要求1-4中的任一项所述的方法,还包括将由所述多个组件代理中的第一组件代理生成的一组渲染数据的至少一部分从第一组件代理发送到所述多个组件代理中的第二组件代理,其中由第二组件代理生成的一组渲染数据是至少部分地基于由第一组件代理发送的所述一组渲染数据的所述部分生成的。
8.如权利要求1-4中的任一项所述的方法,其中用于在界面上显示所述一个或多个视觉组件的声明性元数据对应于表示仪表板界面内的所述一个或多个视觉组件的特定配置的仪表板数据。
9.如权利要求8所述的方法,还包括:
由客户端设备接收至少包括所述一个或多个视觉组件的列表;
由客户端设备接收对列表中的所述一个或多个视觉组件的选择;以及
由客户端设备至少部分地基于对所述一个或多个视觉组件的选择来生成仪表板数据,其中服务器设备被配置为至少部分地基于仪表板数据并发地生成声明性元数据。
10.如权利要求1-4中的任一项所述的方法,还包括:
由客户端设备检测对所述一个或多个视觉组件的更新,其中服务器设备被配置为并发地并且响应于检测到客户端设备对所述一个或多个视觉组件的更新,生成更新后的声明性元数据,并且其中对应于一个或多个更新后的视觉组件的更新后的声明性元数据的至少一部分要被显示在界面上。
11.如权利要求10所述的方法,其中:
所述多个组件代理由客户端设备实现;
所述服务器设备被配置为生成更新后的声明性元数据;以及
所述方法还包括:
由客户端设备监视所述一个或多个视觉组件以检测对所述一个或多个视觉组件的更新,其中服务器设备被配置为并发地监视所述一个或多个视觉组件以检测更新;
响应于由客户端设备检测到对所述一个或多个视觉组件的更新,在客户端设备处向服务器设备发送输入数据;以及
由客户端设备从服务器设备接收更新后的声明性元数据。
12.如权利要求1-4中的任一项所述的方法,还包括接收服务数据,所述服务数据对应于与所述一个或多个视觉组件相关的一个或多个服务的一个或多个度量,其中所述一组或多组渲染数据至少部分地基于声明性元数据和服务数据来生成。
13.一种存储能够由客户端设备的一个或多个处理器执行的多条指令的非暂态计算机可读存储介质,所述多条指令在由客户端设备的所述一个或多个处理器执行时,使得所述一个或多个处理器执行包括以下的操作:
接收声明性元数据,所述声明性元数据的至少一部分对应于要在界面上显示的一个或多个视觉组件;
解析所述声明性元数据以确定所述一个或多个视觉组件;
为所述一个或多个视觉组件中的每个视觉组件复制客户端设备的组件代理,以创建客户端设备的多个组件代理;以及
生成一组或多组渲染数据,所述一组或多组渲染数据中的每组渲染数据由客户端设备的所述多个组件代理中的相应组件代理生成并且对应于所述一个或多个视觉组件中的特定视觉组件,所述渲染数据能够执行以渲染所述一个或多个视觉组件。
14.如权利要求13所述的存储能够由一个或多个处理器执行的多条指令的非暂态计算机可读存储介质,还包括指令,所述指令在由所述一个或多个处理器执行时,使得执行所述一组或多组渲染数据以使得所述一个或多个视觉组件显示在界面上。
15.如权利要求14所述的存储能够由一个或多个处理器执行的多条指令的非暂态计算机可读存储介质,还包括指令,所述指令在由所述一个或多个处理器执行时,使得:
至少部分地基于所述声明性元数据确定与所述一个或多个视觉组件对应的一个或多个交互响应;
检测与和界面上显示的一个或多个视觉组件的交互对应的输入;以及
作为响应,使得执行所述一个或多个交互响应。
16.如权利要求13-15中的任一项所述的存储能够由一个或多个处理器执行的多条指令的非暂态计算机可读存储介质,其中所述组件代理解析所述声明性元数据以确定将被复制以创建所述多个组件代理的数个组件代理,并且还包括指令,所述指令在由所述一个或多个处理器执行时,使得响应于接收到所述声明性元数据,从计算机存储器中检索组件代理。
17.如权利要求13-15中的任一项所述的非暂态计算机可读存储介质,还包括指令,所述指令在由所述一个或多个处理器执行时,使得:
检测对所述一个或多个视觉组件的更新;以及
响应于检测到对所述一个或多个视觉组件的更新,生成更新后的声明性元数据,所述更新后的声明性元数据的至少一部分对应于要在界面上显示的一个或多个更新后的视觉组件。
18.如权利要求13-15中的任一项所述的非暂态计算机可读存储介质,其中:
所述多个组件代理由客户端设备实现;
服务器设备被配置为生成更新后的声明性元数据;以及
所述非暂态计算机可读存储介质还包括指令,所述指令在由所述一个或多个处理器执行时,使得:
由客户端设备监视所述一个或多个视觉组件以检测对所述一个或多个视觉组件的更新,其中服务器设备被配置为并发地监视所述一个或多个视觉组件以检测更新;
响应于由客户端设备检测到对所述一个或多个视觉组件的更新,在客户端设备处向服务器设备发送输入数据;以及
由客户端设备从服务器设备接收更新后的声明性元数据。
19.一种实现视觉组件生成系统的客户端设备,包括:
一个或多个数据处理器;以及
非暂态计算机可读存储介质,包括指令,所述指令在所述一个或多个数据处理器上执行时,使所述一个或多个数据处理器至少:
接收声明性元数据,所述声明性元数据的至少一部分对应于要在界面上显示的一个或多个视觉组件;
解析所述声明性元数据以确定所述一个或多个视觉组件;
为所述一个或多个视觉组件中的每个视觉组件复制客户端设备的组件代理,以创建客户端设备的多个组件代理;以及
生成一组或多组渲染数据,所述一组或多组渲染数据中的每组渲染数据由客户端设备的所述多个组件代理中的相应组件代理生成并且对应于所述一个或多个视觉组件中的特定视觉组件,所述渲染数据能够执行以渲染所述一个或多个视觉组件。
20.一种系统,包括如权利要求19所述的客户端设备,以及服务器设备,其中:
所述多个组件代理由客户端设备实现;
所述服务器设备被配置为生成更新后的声明性元数据;以及
所述指令还使得所述一个或多个数据处理器:
由客户端设备监视所述一个或多个视觉组件以检测对所述一个或多个视觉组件的更新,其中服务器设备被配置为并发地监视所述一个或多个视觉组件以检测更新;
响应于由客户端设备检测到对所述一个或多个视觉组件的更新,在客户端设备处向服务器设备发送输入数据;以及
由客户端设备从服务器设备接收更新后的声明性元数据。
21.一种包括用于执行根据权利要求1-12中的任一项所述的步骤的部件的装置。
22.一种计算机程序产品,包括计算机指令,所述计算机指令在由处理器执行时,实现如权利要求1-12中的任一项所述的方法的步骤。
CN202280050591.6A 2021-07-29 2022-03-09 用于分布式界面组件生成的技术 Pending CN117751347A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/389,116 US11949761B2 (en) 2021-07-29 2021-07-29 Techniques for distributed interface component generation
US17/389,116 2021-07-29
PCT/US2022/019566 WO2023009179A1 (en) 2021-07-29 2022-03-09 Techniques for distributed interface component generation

Publications (1)

Publication Number Publication Date
CN117751347A true CN117751347A (zh) 2024-03-22

Family

ID=81307911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280050591.6A Pending CN117751347A (zh) 2021-07-29 2022-03-09 用于分布式界面组件生成的技术

Country Status (4)

Country Link
US (1) US11949761B2 (zh)
EP (1) EP4377789A1 (zh)
CN (1) CN117751347A (zh)
WO (1) WO2023009179A1 (zh)

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020040314A1 (en) * 2000-05-08 2002-04-04 Michael Tolson Method and system for business application of a portable information agent
CN1799026A (zh) * 2003-06-05 2006-07-05 瑞士再保险公司 用于产生一致的设备无关图形用户界面的方法和终端
CA2515187C (en) * 2003-07-31 2017-03-14 Samsung Electronics Co., Ltd. Information storage medium storing graphic data and apparatus and method of processing the graphic data
US8566732B2 (en) * 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US9104294B2 (en) * 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US20070162850A1 (en) * 2006-01-06 2007-07-12 Darin Adler Sports-related widgets
AU2006252194B2 (en) * 2006-12-21 2010-02-11 Canon Kabushiki Kaisha Scrolling Interface
US10387130B1 (en) * 2007-02-23 2019-08-20 Sugarcrm Inc. Metadata driven distributed application behavior system and method
US8933943B2 (en) * 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
KR101961741B1 (ko) * 2009-06-15 2019-03-25 삼성전자 주식회사 위젯 생성 및 통신 방법
US8775917B2 (en) * 2012-08-09 2014-07-08 Sweetlabs, Inc. Systems and methods for alert management
US20140149836A1 (en) * 2012-11-29 2014-05-29 Jason Bedard Dashboard Visualizations Using Web Technologies
KR102067661B1 (ko) * 2013-05-23 2020-01-17 에스케이플래닛 주식회사 위젯 저작 시스템 및 방법
US10084650B2 (en) * 2013-07-09 2018-09-25 Tail-f Systems AB Graphical user interface for customizing graphical representations based on registry data
US9785320B2 (en) * 2014-04-02 2017-10-10 Microsoft Technology Licensing, Llc Service gallery user interface presentation
DE112015003587T5 (de) * 2014-09-02 2017-05-11 Ab Initio Technology Llc Spezifizieren von komponenten in graphbasierten programmen
CN104239514A (zh) * 2014-09-16 2014-12-24 可牛网络技术(北京)有限公司 网页渲染方法、装置及移动终端
US10536353B2 (en) * 2014-10-09 2020-01-14 Splunk Inc. Control interface for dynamic substitution of service monitoring dashboard source data
US9916400B1 (en) * 2015-02-12 2018-03-13 United Technologies Corporation User defined object pusher for multi-user CAx environment
US9684526B2 (en) * 2015-05-15 2017-06-20 Ab Initio Technology Llc Techniques for configuring a generic program using controls
US10037131B2 (en) * 2015-05-21 2018-07-31 Adobe Systems Incorporated Facilitating object set replication
US10375072B2 (en) * 2015-11-09 2019-08-06 Microsoft Technology Licensing, Llc Dashboard as remote computing services
US9959257B2 (en) * 2016-01-08 2018-05-01 Adobe Systems Incorporated Populating visual designs with web content
US10642853B2 (en) * 2016-12-14 2020-05-05 Palantir Technologies Inc. Automatically generating graphical data displays based on structured descriptions
US11003465B2 (en) * 2017-02-23 2021-05-11 International Business Machines Corporation Method to create a declarative model that dynamically drives both a UI and the back-end runtime with a one to one correspondence
US20180268372A1 (en) * 2017-03-15 2018-09-20 Bipronum, Inc. Visualization of microflows or processes
DK179932B1 (en) * 2017-05-16 2019-10-11 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR NAVIGATING, DISPLAYING, AND EDITING MEDIA ITEMS WITH MULTIPLE DISPLAY MODES
US20190050121A1 (en) * 2017-08-09 2019-02-14 Walmart Apollo, Llc Systems and methods for task execution based on automatically generated user input requests
US11216451B2 (en) * 2017-09-29 2022-01-04 Oracle International Corporation Dynamic dashboard with guided discovery
US10162624B1 (en) * 2017-12-15 2018-12-25 Intuit Inc. Web shell for dynamically generated cross-platform applications
US11269500B2 (en) * 2018-05-21 2022-03-08 Samsung Electronics Co., Ltd. Method and system for modular widgets in smart devices
US11720643B2 (en) * 2018-08-30 2023-08-08 Bublup, Inc. Methods of website generation
US11201795B2 (en) * 2019-04-30 2021-12-14 Salesforce.Com, Inc. Declarative and reactive data layer for component-based user interfaces
US11068146B2 (en) * 2019-05-13 2021-07-20 EMC IP Holding Company LLC Techniques for user interface components
US11216602B2 (en) * 2019-12-20 2022-01-04 Accenture Global Solutions Limited Micro frontends with model-based state
EP4143692A4 (en) * 2020-04-28 2024-05-01 Mirata Software Llc SYSTEM AND METHOD FOR THE DYNAMIC DEFINITION OF DIGITAL FORMS
US11657064B2 (en) * 2020-12-16 2023-05-23 Salesforce, Inc. Componentized dashboards
US20220229870A1 (en) * 2021-01-21 2022-07-21 Vmware, Inc. Self adjusting dashboards for log and alert data
US20220334809A1 (en) * 2021-04-14 2022-10-20 Salesforce.Com, Inc. Process flow builder for extensible web component sequences
US11762962B2 (en) * 2021-06-29 2023-09-19 Capital One Services, Llc Onboarding of monitoring tools

Also Published As

Publication number Publication date
US20230037019A1 (en) 2023-02-02
US11949761B2 (en) 2024-04-02
EP4377789A1 (en) 2024-06-05
WO2023009179A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
JP6967534B2 (ja) データベースプロビジョニングのためのリソース配分
JP7009455B2 (ja) 分散イベント処理システムにおけるデータシリアライズ
US10503493B2 (en) Distributed versioning of applications using cloud-based systems
JP6871943B2 (ja) モバイルクラウドサービスのための予め形成された命令
US10909186B2 (en) Multi-tenant customizable composites
CN107431721B (zh) 划分用于不同电子设备的应用分发的方法、系统和介质
JP2020536312A (ja) マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
US11658972B2 (en) Isolated cell architecture for cloud computing platform
US11650830B2 (en) Techniques for modifying a compute instance
US11722580B2 (en) Routing of web requests to on-premise network in a multi-tenant environment
US20240045771A1 (en) Techniques for scalable distributed system backups
US20220138220A1 (en) Dedicated replication channels for replicating records between regions
US20230055129A1 (en) Techniques for utilizing patterns and logical entities
US20230236955A1 (en) Application performance monitoring for monolithic applications and distributed systems
US11550994B2 (en) System and method with data entry tracker using selective undo buttons
US11949761B2 (en) Techniques for distributed interface component generation
US20240187501A1 (en) Techniques for distributed interface component generation
US11966754B2 (en) Cluster bootstrapping for distributed computing systems
US20230251851A1 (en) User interface for on-deck capabilities
US20230251873A1 (en) User interface for critical path resources
US20210342317A1 (en) Techniques for efficient migration of key-value data
WO2023154229A1 (en) User interface for critical path resources

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication