首页> 中国专利> 提供低延迟搜索查询响应的数据存储系统

提供低延迟搜索查询响应的数据存储系统

摘要

一种用于向数据搜索系统提供对查询低延迟响应的方法,包括使用第一面向列的存储格式将第一数字数据存储在第一数字数据储存库中;使用第二面向列的存储格式将第二数字数据存储在第二数字数据储存库中,其中,所述第二面向列的存储格式不同于所述第一面向列的存储格式;基于暴露数据和风险项数据生成多个预计算视图;使用第二面向列的存储格式将多个预计算视图存储在第二数据储存库中;及,响应于接收到搜索查询,基于多个预计算视图中的一个或多个特定的预计算视图,确定响应于该查询的结果集,并将该结果集作为输出提供给另一计算机或显示设备。

著录项

  • 公开/公告号CN112384908A

    专利类型发明专利

  • 公开/公告日2021-02-19

    原文格式PDF

  • 申请/专利权人 风险管理解决方案公司;

    申请/专利号CN201980026846.3

  • 发明设计人 克里斯多夫·乔治;

    申请日2019-04-18

  • 分类号G06F16/33(20060101);

  • 代理机构11569 北京高沃律师事务所;

  • 代理人崔玥

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 09:54:18

说明书

技术领域

本发明属于电子数字数据存储系统技术领域。本发明还属于被编程用于查询处理和数据存储的计算机系统技术领域,特别是用于向搜索查询提供低延迟响应的数据存储系统。

背景技术

本节中描述的方法是可以获得的方法,但不一定是先前已经设想到的或获得的方法。因此,除非另有说明,否则不应仅由于方法包括在本节中就将本节所述的任一方法视为现有技术。

“大数据”描述庞大而复杂的数据集的集合,以至于很难使用传统的数据库管理工具或传统的数据处理应用程序对其进行处理。如今,企业和数据中心应用程序都要求以最小延迟来处理越来越大的数据集。

数据处理应用程序部署的其中一个考虑因素是配置数据库系统以获得最佳查询性能。大数据集可包含跨数十亿行的数百个列,针对该数据集的查询可能包含对这数百个列中任何列的预测。例如,保险数据可包括数百个保险投资组合,每个保险投资组合包括众多保险合同,这些合同总共涵盖数十万房地产。每项房地产可包括数百个属性,例如,地址、区域信息、土壤类型、结构类型等。

一查询示例例如是请求检索距离海岸线五英里的具有木结构且位于沙质土壤上的所有房地产。通常的数据库系统可能无法扩展存储此数据量。此外,这样的请求将花费大量时间来计算和提供结果。键-值数据存储(如Cassandra或HBase)可能具有更好的查询处理时间,但无法处理对任意数据列都有预测的查询。

因此,人们期望一种能够接受对大数据集的任意列的查询并且可在没有明显延迟的情况下提供搜索结果的数据处理系统。

附图简要说明

附图中:

图1示出了根据一个实施例的本文所述技术可在其中实践的一示例计算机系统。

图2示出了根据一个实施例的管理永久性客户端连接的示例作业服务器。

图3示出了根据一实施例的对搜索查询提供响应的流程图。

图4示出了可在其上实现一实施例的计算机系统。

具体实施方式

在下文中,出于解释目的,阐述了许多细节方面的内容以便对本发明有个全面的理解。然而,很明显地,可以在没有这些细节的情况下实践本发明。在其它实例中,公知结构和装置以框图形式示出,以避免不必要地使本发明复杂难懂。

本发明的文本结合附图旨在,在与本发明所属领域的技术人员用来就要编程的功能、输入、变换、输出和其它编程方面进行彼此通信的细节程度相同的细节程度上,以散文体形式陈述对计算机进行编程以实现所要求保护的发明所必需的算法。也就是说,本发明所阐述的详细程度与本领域技术人员通常用来彼此通信以表达要编程的算法或者实现本文所要求保护的发明的程序的结构和功能的详细程度相同。

1.0总体概述

为对搜索查询提供低延迟响应的数据搜索系统提供了技术。低延迟响应可以是对搜索查询的实时或接近实时的响应。

在一实施例中,第一数字数据使用第一面向列的存储格式存储在第一数字数据储存库中。第二数字数据使用第二面向列的存储格式存储在第二数字数据储存库中,其中,所述第二面向列的存储格式不同于所述第一面向列的存储格式。基于暴露数据(exposuredata)和风险项数据生成多个预先计算的视图(或称为预计算视图)(pre-computedviews)。使用所述第二面向列的存储格式将多个预计算视图存储在第二数据储存库中。响应于接收到搜索查询,基于所述多个预计算视图中的一个或多个特定预计算视图确定响应于该查询的结果集。该结果集作为输出提供给另一台计算机或显示设备。

在一实施例中,用于提供低延迟查询响应的服务器系统包括Kudu数据储存库、Parquet数据储存库和由Spark集群管理器管理的多个Spark集群计算实例。

通过作为一个整体的本发明,其它实施例、方面和特征将变得明显。

2.0数据搜索系统

图1示出了一示例性计算机系统,根据一个实施例,可以在该系统中实践所描述的技术。

计算机系统100包括计算集群120、数据存储系统130和客户端计算设备140。计算集群120、数据存储系统130和计算设备140可以使用任何合适的数据通信机制相互连接,例如,一个或多个数据网络。所述一个或多个数据网络可包括一个或多个局域网(LANs)、一个或多个广域网(WANs)、一个或多个互联网络(如,公共因特网)或公司网络。

2.1计算集群

计算集群120包括多个集群计算实例125。该些集群计算实例125可通过任何合适的数据网络或通信机制(包括一个或多个LANs、一个或多个WANs、一个或多个互连网络和因特网)互连。

在一个实施例中,集群计算实例125为服务器计算机系统,其例如包括运行服务器操作系统(例如,基于MicrosoftWindows、Unix或Linux的操作系统)的商品或易于获得的硬件组件。集群计算实例125还可以由虚拟机系统或计算设备的其它基于软件的实现来实现。在一实施例中,集群计算实例125为云计算实例,例如,EC2实例、ComputeEngine实例或Azure实例。

在一实施例中,每个集群计算实例125托管或执行一个或多个用于管理、处理和/或分析大量数据的大数据处理框架。大数据处理框架的示例包括Spark、Hadoop、Hive、Presto和Impala。

在一实施例中,计算集群120包括集群管理器。在一实施例中,该集群管理器被编程或配置为管理多个集群计算实例125。额外地或替代地,所述集群管理器可被编程或配置为管理在多个集群计算实例125上运行的应用或服务。集群管理器可以调度要由多个计算实例125执行的任务。此外,集群管理器可以在多个集群计算实例125间分配资源。

所述集群管理器可以在一个或多个集群计算实例125上执行。额外地或替代地,集群管理器可以在与多个集群计算实例125分离的计算设备或计算实例上执行。所述集群管理器可以是,例如,Spark独立管理器、Mesos、Kubernetes、YARN或适于管理多个集群计算实例125的任意其它集群管理器。

2.2客户端计算设备

客户端计算设备140可以是任意计算设备,包括,但不限于:服务器、机架、工作站、个人计算机、通用计算机、笔记本电脑、因特网装置、无线设备、有线设备、多处理器系统、微型计算机等。

客户端计算设备140可以执行命令行界面、图形用户界面或REST端点以与计算集群120进行交互。所述界面和/或端点可以被配置或编程为向计算集群120提供搜索查询并接收由计算集群120生成的一组搜索结果。在一实施例中,该组搜索结果可以存储在提供给客户端计算设备140的数据文件中或者存储在可由客户端计算设备140访问的数据文件中。数据文件的示例包括JSON、逗号分离值、SQLdump和其它文件类型。额外地或替代地,该组搜索结果可以使用例如命令行界面或图形用户界面显示在客户端计算设备140上。

2.3作业服务器

在图1所示的实施例中,客户端计算设备通过作业服务器110与计算集群120通信。作业服务器110提供用于向计算集群120提交作业和/或在计算集群120上管理作业执行的界面。该界面可以是命令行界面、图形用户界面或RESTful界面。在一实施例中,作业服务器110可以管理多个计算集群的作业执行。额外地或替代地,多个作业服务器可以管理相同计算集群的作业执行,例如,计算集群120。作业服务器110可包括计算机或在相同物理硬件或虚拟计算实例上执行的软件进程,用于实现本系统的其它要素。

在一实施例中,作业服务器110在一个或多个集群计算实例125上执行。例如,作业服务器110可以在与集群管理器相同的集群计算实例上运行。替代地,作业服务器110可以在与计算集群120分开的计算设备或计算实例上执行。

在一实施例中,作业服务器110管理到计算集群120的客户端连接。客户端连接可用于向计算集群120提交作业,例如,搜索查询。例如,作业服务器110可以是管理一个或多个SparkContexts的SparkJobServer。在一实施例中,作业服务器110可以管理多种类型的集群计算实例的作业,例如,一个或多个Spark、Mesos、Kubernetes和/或YARN实例。

在一实施例中,作业服务器110被编程或配置为管理一个或多个持久性客户端连接。持久性客户端连接信息可存储在执行作业服务器110的一个或多个计算设备的存储器中。在提交给计算集群120的作业完成后,持久性客户端连接不断开。而是,持久性客户端连接继续运行,并且对计算集群120的后续调用可以重新使用一个或多个持久性客户端连接。这样就避免了每次客户端(例如,客户端计算设备140)连接至计算集群120时启动新的客户端连接的开销。

在一实施例中,所述一个或多个持久性客户端连接用于处理搜索查询。通常,Spark等大数据框架用于成批处理,而不是提供对搜索查询的实时响应。由于持久性客户端连接减少了提交搜索查询时创建客户端连接的开销,因此减少了将结果提供给搜索查询所需的时间。这使得可以执行低延迟搜索。

在一实施例中,每个持久性客户端连接与特定类型的作业和/或特定类型的数据访问相关联。另外,每个持久性客户端连接可以与来自多个集群计算实例125的用于处理特定类型的作业的一个或多个特定集群计算实例相关联。

作为示例,第一组的一个或多个持久性客户端连接可用于成批作业。一个或多个持久性客户端连接的另一组可用于使用例如ODBC或JDBC应用程序编程接口访问数据库管理系统。第三组的一个或多个持久性客户端连接可用于默认的常规用途。作业服务器110可基于接收到的作业来确定该作业应使用哪个持久性客户端连接。例如,成批处理作业可使用与第一持久性客户端连接相关联的第一组集群计算实例,而搜索查询可以使用与第二持久性客户端连接相关联的不同组的集群计算实例。这样就避免了搜索查询必须等待成批处理作业完成或必须与成批处理作业共享计算资源。

图2描绘了阐述作业服务器110管理多个持久性客户端连接的框图。

在一实施例中,作业服务器110与持久性客户端连接210、持久性客户端连接212和持久性客户端连接214相连。每个持久性客户端连接都连接至集群120中的相应的一组集群计算实例。在图2示出的示例中,持久性客户端连接210连接至第一组集群计算实例220,持久性客户端连接212连接至第二组集群计算实例222,持久性客户端连接214连接至第三组集群计算实例224。每个持久性客户端连接可用于特定类型的作业。通过每个持久性客户端连接提交的作业可以在相应的一组集群计算实例的集群计算实例上运行。

2.4数据存储系统

在一实施例中,数据存储系统130包括存储在任何合适的存储设备上的程序和数据,该存储设备例如是一个或多个硬盘驱动器、存储器或配置为存储大数据的任何其它电子数字数据记录设备。尽管数据存储系统130在图1中被示出为单个设备,但是,数据存储系统130可以跨位于一个或多个物理位置的多个设备。在一实施例中,数据存储系统130是包括多个数据节点的分布式文件系统或分布式数据存储。例如,数据存储系统130可以是Hadoop分布式文件系统(HDFS)、MapR文件系统(MapRFS)、HBase或其他合适的分布式数据存储。

数据存储系统130可以存储多个数据储存库。每个数据储存库可以存储不同类型的数据。另外,存储在每个数据储存库中的数据可以是不同的格式。

在图1所示的示例中,数据存储系统130包括第一数据储存库132和第二数据储存库134。作为示例,假设第一数据储存库132存储餐厅信息,第二数据储存库134存储多个用户餐厅评论。可以使用第一数据存储格式来存储餐厅信息,并且可以使用与第一数据存储格式不同的第二数据存储格式来存储用户餐厅评论。

在一实施例中,每个不同的数据存储格式是面向列的存储格式。面向列的数据存储格式的示例包括Parquet、Kudu和ObjectRelationalColumnar(ORC)。用于在每个数据储存库中存储数据的特定数据存储格式可能取决于存储在数据储存库中的数据类型的特征,例如,访问模式和更新模式。例如,如果经常添加或修改数据项,则期望一种允许项易于更新或添加的数据存储格式。

在一实施例中,第一数据储存库132以Kudu数据格式存储数据。Kudu是一种易于更新的关系列式存储格式,它允许轻松插入、更新和/或删除数据项。列中的每一行都可以单独更新。Kudu数据格式可用于存储需要频繁添加、删除和/或更新的数据。

在一实施例中,第二数据储存库134以Parquet数据格式存储数据。Parquet是一种将数据存储为多个数据文件的非关系列式存储格式,并且多个数据文件中的每个数据文件都与相应的模式文件(schemafile)关联存储,该模式文件定义存储在数据文件中的数据的模式。每个文件可以与特定的数据表关联。通过添加新的数据文件和模式文件可以添加其它表。

此外,以Parquet数据格式存储的表可以通过合并相关联的模式文件来合并。因此,可以通过合并与不同的表相关联的模式文件并查询组合模式来处理跨不同表的查询。但是,要修改以Parquet存储的数据的数据项,要更新整个文件。Parquet数据格式可用于存储不需要很多更新或主要需要批量更新的数据。额外地或替代地,可以使用Parquet数据格式来存储需要频繁进行模式更新的数据。

3.0预计算视图

在一实施例中,计算机系统100生成多个预先计算的视图或预计算视图,并将这些预计算视图存储在数据存储系统130中。预计算视图可以存储在现有的数据储存库中,例如,数据储存库132和数据储存库134,或者可以存储在单独的数据储存库中。预计算视图可以以与其存储在其中的数据储存库相同的数据存储格式来进行存储。例如,如果数据储存库134以Parquet数据格式存储数据并且预计算视图被存储在数据储存库134中,则预计算视图也将以Parquet数据格式进行存储。额外地或替代地,预计算视图所存储的数据存储格式基于从其产生了预计算视图的数据的数据存储格式。

在一实施例中,预计算视图是预结合一个或多个现有数据表的结果。例如,预计算视图可以结合来自多个数据储存库中的两个或更多个数据存储库的数据。预计算视图可以包括来自数据储存库132的第一组数据和来自数据储存库134的第二组数据。

此外,第一和第二数据组或集可以以不同的数据存储格式存储。例如,第一数据集可以以第一数据存储格式存储,第二数据集可以以与第一数据存储格式不同的第二数据存储格式存储。所产生的预计算视图可以以第一数据存储格式或第二数据存储格式进行存储。集群计算实例125可以执行能够结合以不同存储格式存储的数据的数据框架。

在一实施例中,来自于包括在预计算视图中的每个数据储存库的数据部分基于一个或多个搜索查询需求。例如,可生成预计算视图以解决预期由计算机系统100接收到的特定类型的查询。参照上面的有关系统存储餐厅和评论数据的示例,预计算视图可以将餐厅与其各自的评论数据结合。生成多个预计算视图可以基于例如示例查询、指示特定预计算视图的用户输入、配置文件或用于指示应将哪些数据包括在特定预计算视图中的其它方法。

在一实施例中,预计算视图可以提供包括聚合数据和/或汇总数据的聚合或概要视图。参考上面的示例,预计算概要视图可以平均每个餐厅的用户评分。该概要视图可用于例如处理指定平均评分为3/5或更高的餐厅的搜索查询。

在一实施例中,当数据首次被加载或存储到系统中时,生成一个或多个预计算视图。此外,当存储的数据发生改变时,可以生成预计算视图。预计算视图是不可改变的,并且可遵循命名约定被存储在数据存储系统130上。

在一实施例中,对应于预计算视图的视图元数据通过SparkDataFrames被持久化在持久性上下文中。如果一视图元数据不可用,则执行加载元数据的请求。元数据包括在数据存储系统130内用于相应的预计算视图的位置和节点信息、以及模式信息。此元数据允许视图在非分布式系统中充当传统数据库表,并允许具有低内存开销的低延迟访问。例如,数十万视图元数据可以轻松地容纳在内存中,覆盖大数据集,而这些大数据集原本容纳在内存中很不切实际或昂贵。

4.0进程概述

图3示出了使用计算机系统100提供搜索结果的示例步骤。

在步骤300,使用第一面向列的存储格式将第一数字数据存储在第一数字数据储存库132中。为了阐述清楚的示例,假定第一数字数据包括保险暴露数据(insuranceexposuredata)。暴露数据存储与保险合同、每个保险合同所针对的风险以及发生风险事件可能造成的损失有关的信息。风险数据可能需要频繁添加和修改,但由于保险合同的结构相对一致,因此可能不需要频繁的模式添加或修改。因此,可以使用Kudu将暴露数据存储在数字数据储存库132中。

在步骤302,使用第二面向列的存储格式将第二数字数据存储在第二数字数据储存库134中。假设第二数字数据包括风险项数据。暴露数据中描述的风险均包括多个风险项。风险项可以是例如房地产(property)、建筑物、汽车、摩托车和其它保险项目。风险项数据存储与风险项有关的信息。例如,对于房地产信息,风险项数据可以包括房地产位置信息、结构信息、土壤信息等。作为另一个示例,车辆信息可以包括车辆制造商和型号以及车辆规格信息。一旦存储,风险项信息就不会经常更改,但是不同类型的风险项需要不同的数据存储架构。例如,船将具有与汽车不同的架构。因此,可以使用Parquet将风险项数据存储在数字数据储存库134中。

在步骤304,基于第一数字数据和第二数字数据生成多个预计算视图。在一实施例中,预计算视图结合以不同存储格式存储的数字数据。在当前示例中,预计算视图可以将以Kudu存储的暴露数据与以Parquet存储的风险项数据进行结合。可以基于将对暴露数据和风险项数据执行的预期搜索来生成预计算视图。例如,保险投资组合可以包括覆盖多个风险的多个合同。每个风险可以包括多个风险项。因此,可以生成将多个合同与包括在多个合同中的多个风险项结合在一起的投资组合视图。作为另一个示例,预计算视图可以是概要视图,其基于与保险合同相关联的风险项目指示每个保险合同的总保险价值。

在步骤306,将多个预计算视图存储在数据存储系统130中。在一实施例中,使用第二面向列的存储格式将预计算视图存储在第二数据储存库134中。在当前示例中,使用Parquet将多个预计算视图存储在数据储存库134中。

在步骤308,将多个预计算视图的视图元数据加载到搜索系统中。在一实施例中,使用SparkDataFrames执行该加载。视图元数据包含多个预计算视图中的每个预计算视图的模式和节点位置信息。

在步骤310,搜索系统接收搜索查询。例如,作业服务器110可以从客户端计算设备140接收搜索查询。作业服务器可以选择一个或多个持久性客户端连接中的特定持久性客户端连接以处理该搜索查询。

在步骤312,响应于接收到搜索查询,基于多个预计算视图中的一个或多个特定的预计算视图来确定结果集。为了阐述清楚的示例,假定计算集群120包括多个Spark实例,并且作业服务器110是维护多个持久性SparkContexts的Spark作业服务器。作业服务器110可以从客户端计算设备140接收搜索查询。搜索查询可以例如是诸如SQL的数据库语言的形式。作业服务器110使用一个或多个SparkContext在多个Spark实例中的一个或多个Spark实例上执行查询。

使用执行引擎,预加载的视图元数据用于确定数据存储系统130上的文件和节点位置,以便选择相关列。取决于实现,执行引擎可以是例如Spark、Presto、Impala等。由于基础数据以列格式存储,因此只从数据存储系统中检索满足查询所需的数据列。这样可以减少查询延迟和网络流量、以及查询引擎本身的内存开销。诸如聚合、分组依据和用户定义的功能之类的复杂操作由查询引擎处理。可选地,由于数据是从原始的预计算视图生成的,因此此时可发生与其他数据源(如保险模型损失)的合并。执行引擎允许结合可以Kudu、Parquet、甚至Postgres存在的不同数据集。

可基于搜索查询的内容来确定一个或多个特定的预计算视图。例如,如果搜索查询指定“海岸线五英里以内的房地产的所有损失”,那么除了查询风险项数据和/或指示所涵盖房地产的位置的暴露数据之外,还可以查询存储预先计算的损失累积的预计算视图。

在步骤314,将结果集提供给另一台计算机或显示设备。例如,可以将结果集提供给客户端计算设备140,或者作为输出经由图形用户界面提供给显示设备。额外地或替代地,结果集可以存储在存储设备中,例如,数据存储系统130上。

在一实施例中,可以将存储第一数字数据和第二数字数据及生成多个预计算视图作为批处理来执行。另外,可以在系统离线并且不连接到任何客户端计算设备或网络时执行步骤。加载视图元数据、接收搜索查询、确定结果集以及提供搜索结果可以是同步调用。另外,在系统在线并且连接到客户端计算设备和/或网络时执行步骤。

使用这些技术,通常用于耗时的批处理作业的大数据框架和存储格式能够提供对搜索查询的实时响应。这允许使用本文描述的系统执行低延迟搜索。通过最大限度地利用诸如Spark之类的技术的重大查询计划优化,并将其与诸如Parquet和Kudu之类的列存储格式以原本需要两种复杂技术(如ElasticSearch和MongoDB或Cassandra)间的数据的镜像的方式相结合。对于太大而无法容纳于传统关系数据库的宽列集,此体系结构提供了一种快速且分布式的读取大数据集的方式,同时将磁盘和网络I/O的开销降至最低。大多数数据存储技术,包括NoSQL数据库,都要求在运行时之前确定数据的索引和其他二级结构。但是,在本文描述的方法和保险用例中,adhoc查询和数据浏览跨数百列是正常的。这使索引所有信息列变得昂贵且不切实际。与传统方法相比,具有复杂分布式查询引擎的列式存储技术的优势为风险探索和分析提供了很大的优势。

5.0实施实例-硬件概述

根据一个实施例,本文所述的技术由至少一个计算设备实现。可以使用至少一个服务器计算机和/或使用诸如分组数据网络之类的网络耦合的其它计算设备的组合来全部或部分地实施这些技术。计算设备可以硬连线以执行该些技术,或者可以包括数字电子设备,例如,至少一个专用集成电路(ASIC)或被持久地编程为执行该些技术的现场可编程门阵列(FPGA),或者可包括至少一个通用硬件处理器,该通用硬件处理器被编程为根据固件、存储器、其它存储或组合中的程序指令来执行该些技术。这样的计算设备还可将定制硬连线逻辑、ASIC或FPGA与定制编程相结合以实现所描述的技术。此类计算设备可以是服务器计算机、工作站、个人计算机、便携式计算机系统、手持设备、移动计算设备、可穿戴设备、身体安装或可植入设备、智能手机、智能设备、网络互连设备、自主或半自主设备(例如,机器人或无人驾驶的陆上车辆或飞行器)、结合硬线和/或程序逻辑以实现所描述技术的任何其他电子设备,数据中心中的一个或多个虚拟计算机或实例,和/或服务器计算机和/或个人计算机的网络。

图4是示出了一实施例可利用其实现的示例性计算机系统的框图。在图4的该示例中,计算机系统400和硬件、软件或硬件和软件的组合中的用于实现所公开技术的指令被示意性地表示为例如方框和圆圈,其细节程度与本发明所属领域中的普通技术人员用于关于计算机体系结构和计算机系统实现进行通信所通常使用的细节程度相同。

计算机系统400包括输入/输出(I/O)子系统402,其可以包括用于通过电子信号路径在计算机系统400的各组件之间传送信息和/或指令的总线和/或其它通信机制。I/O子系统402可包括I/O控制器、存储器控制器和至少一个I/O端口。电子信号路径在附图中示意性地表示为例如线、单向箭头或双向箭头。

至少一个硬件处理器404耦合至I/O子系统402,用于处理信息和指令。硬件处理器404可包括例如通用微处理器或微控制器和/或专用微处理器,诸如嵌入式系统或图形处理单元(GPU)或数字信号处理器或ARM处理器。处理器404可以包括集成算术逻辑单元(ALU),或者可以耦合至单独的ALU。

计算机系统400包括一个或多个存储器单元406,例如,主存储器,其耦合至I/O子系统402,以电子方式数字存储数据和要由处理器404执行的指令。存储器406可包括易失性存储器,例如,各种形式的随机存取存储器(RAM)或其他动态存储设备。存储器406还可以用于在执行要由处理器404执行的指令期间存储临时变量或其他中间信息。这样的指令当被存储在处理器404可访问的非暂时性计算机可读存储介质中时,使得计算机系统400变为被定制用于执行指令中指定的操作的专用机器。

计算机系统400还包括耦合至I/O子系统402用于存储用于处理器404的信息和指令的非易失性存储器,例如,只读存储器(ROM)408或其它静态存储设备。ROM408可包括各种形式的可编程ROM(PROM),例如,可擦PROM(EPROM)或电可擦PROM(EEPROM)。永久性存储410的单元可包括各种形式的非易失性RAM(NVRAM),例如,FLASH存储器,或者固态存储,磁盘或光盘,例如,CD-ROM或DVD-ROM,并且可耦合至I/O子系统402,用于存储信息和指令。存储410是可用于存储指令和数据的非暂时性计算机可读介质的示例,该些指令和数据在由处理器404执行时导致执行计算机实现的方法来执行本文所述的技术。

存储器406、ROM408或存储410中的指令可包括一组或多组指令,这些指令被组织为模块、方法、对象、功能、例程或调用。该些指令可被组织为一个或多个计算机程序、操作系统服务或包括移动应用程序的应用程序。这些指令可包括操作系统和/或系统软件;一个或多个支持多媒体、编程或其他功能的库;数据协议指令或堆栈,用于实现TCP/IP、HTTP或其它通信协议;文件格式处理指令,用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG编码的文件;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,例如,办公套件、互联网访问应用程序、设计和制造应用程序、图形应用程序、音频应用程序、软件工程应用程序、教育应用程序、游戏或其它应用程序。这些指令可以实现web服务器、web应用服务器或web客户端。这些指令可以被组织为表示层、应用层和数据存储层,例如,使用结构化查询语言(SQL)或不使用SQL的关系数据库系统、对象存储、图形数据库、平面文件系统或其它数据存储。

计算机系统400可经由I/O子系统402耦合至至少一个输出设备412。在一个实施例中,输出设备412是数字计算机显示器。可以在各种实施例中使用的显示器的示例包括触摸屏显示器或发光二极管(LED)显示器或液晶显示器(LCD)或电子纸显示器。替代地或除了显示设备之外,计算机系统400可包括其它类型的输出设备412。其它输出设备412的示例包括打印机、票证打印机、绘图机、投影仪、声卡或显卡、扬声器、蜂鸣器或压电设备或其它音响设备、灯或LED或LCD指示器、触觉设备、致动器或伺服器。

至少一个输入设备414耦合至I/O子系统402,用于将信号、数据、命令选择或手势传达给处理器404。输入设备414的示例包括触摸屏、麦克风、静态式数字照相机和数字摄像机、字母数字和其它键、小键盘、键盘、图形输入板、图像扫描仪、操纵杆、时钟、开关、按钮、转盘(dials)、滑动件(slides)和/或各种类型的传感器,例如,力传感器、运动传感器、热传感器、加速度计、陀螺仪和惯性测量单元(IMU)传感器和/或各种类型的收发器,例如,无线(如蜂窝或Wi-Fi)、射频(RF)或红外(IR)收发器和全球定位系统(GPS)收发器。

另一类型的输入设备是控制设备416,其可以代替输入功能或除了输入功能之外还执行光标控制或其它自动控制功能,例如,在显示屏上的图形界面中进行导航。控制设备416可以是触摸板、鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传达给处理器404并用于控制显示器412上的光标移动。该输入设备可以具有至少两个在两个轴上的自由度,第一轴(例如,x)和第二轴(例如,y),允许设备指定平面中的位置。另一类型的输入设备是有线、无线或光学控制设备,例如,操纵杆、棒(wand)、控制台、方向盘、踏板、变速机构或其它类型的控制设备。输入设备414可以包括多个不同的输入设备的组合,例如,摄像机和深度传感器。

在另一实施例中,计算机系统400可包括物联网(IoT)设备,其中省略输出设备412、输入设备414和控制设备416中的一个或多个。或者,在这样的实施例中,输入设备414可包括一个或多个照相机、运动检测器、温度计、麦克风、地震检测器、其它传感器或检测器、测量设备或编码器,并且输出设备412可包括专用显示器,例如,单线LED或LCD显示器、一个或多个指示器、显示面板、仪表、阀、螺线管、执行器或伺服器。

当计算机系统400是移动计算设备时,输入设备414可包括耦合至GPS模块的全球定位系统(GPS)接收器,该GPS模块能够对多个GPS卫星进行三角测量、确定并生成地理定位或位置数据,例如,计算机系统400的地球物理位置的纬度-经度值。输出设备412可包括硬件、软件、固件和接口,其用于生成位置报告数据包、通知、脉冲或心跳信号、或其它指向主机424或服务器430的单独指定计算机系统400的位置或指定其位置与其它应用程序特定数据的重现数据传输。

计算机系统400可使用定制硬连线逻辑、至少一个ASIC或FPGA、固件和/或程序指令或逻辑来实现本文所述的技术,其中,所述程序指令或逻辑当加载和使用或与计算机系统一起执行时,会使计算机系统作为专用计算机操作或将计算机系统编程为作为专用计算机操作。根据一个实施例,本文的技术由计算机系统400响应于处理器404执行包含在主存储器406中的至少一个指令的至少一个序列来执行。这样的指令可以从另一存储介质(如存储410)读入主存储器406。执行包含在主存储器406中的指令序列可使处理器404执行本文所述的进程步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令结合使用。

本文所用术语“存储介质”是指存储使机器以特定方式运行的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如,存储410。易失性介质包括动态存储器,例如,存储器406。存储介质的常见形式包括例如硬盘、固态驱动器、闪存驱动器、磁性数据存储介质、任何光学或物理数据存储介质、存储芯片等。

存储介质不同于传输介质,但可以与传输介质结合使用。传输介质参与存储介质间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,其包括包含I/O子系统402的总线的线。传输介质还可以采用声波或光波的形式,例如,在无线电波和红外数据通信期间产生的声波或光波。

各种形式的介质可用于将至少一条指令的至少一个序列传送给处理器404以供执行。例如,指令最初可承载在远程计算机的磁盘或固态驱动器上。远程计算机可以将这些指令加载到其动态存储器中,并使用调制解调器通过通信链路(例如,光纤或同轴电缆或电话线)发送这些指令。计算机系统400本地的调制解调器或路由器可以在通信链路上接收数据,并将数据转换为计算机系统400可以读取的格式。例如,诸如射频天线或红外探测器之类的接收器可以接收无线或光信号中携带的数据,并且适当的电路可以将这些数据提供给I/O子系统402,例如,将数据放置在总线上。I/O子系统402将数据传送到存储器406,处理器404从存储器406检索并执行指令。由存储器406接收的指令可任选地在处理器404执行之前或之后存储在存储器410上。

计算机系统400还包括耦合至总线402的通信接口418。通信接口418提供耦合至直接或间接连接至至少一个通信网络(如,网络422或因特网上的公共或私有云)的网络链路420的双向数据通信。例如,通信接口418可以是以太网联网接口、综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或向相应类型的通信线路(如,以太网电缆或任何种类的金属电缆或光纤线或电话线)提供数据通信连接的调制解调器。网络422广义地表示局域网(LAN)、广域网(WAN)、校园网、互联网络或其任何组合。通信接口418可包括:LAN卡,以向兼容LAN提供数据通信连接;或者,蜂窝无线电话接口,其被连线以根据蜂窝无线电话无线联网标准来发送或接收蜂窝数据;或者卫星广播接口,其被连线以根据卫星无线网络标准发送或接收数字数据。在任何这样的实施方式中,通信接口418在信号路径上发送和接收电、电磁或光信号,其中,该些信号路径承载有表示各种类型的信息的数字数据流。

网络链路420通常使用例如卫星、蜂窝、Wi-Fi或蓝牙技术直接或通过至少一个网络向其它数据设备提供电、电磁或光数据通信。例如,网络链路420可通过网络422向主机计算机424提供连接。

此外,网络链路420可通过网络422提供连接或经由互联网服务提供商(ISP)426运营的互联网络设备和/或计算机向其它计算设备提供连接。ISP426通过表示为互联网428的全球分组数据通信网络提供数据通信服务。服务器计算机430可耦合至互联网428。服务器430广泛地表示任何计算机、数据中心、具有或不具有hypervisor的虚拟机或虚拟计算实例、或者执行容器化程序系统(如DOCKER或KUBERNETES)的计算机。服务器430可表示一种使用多于一台计算机或实例来实现并通过传输Web服务请求、具有HTTP有效载荷中的参数的统一资源定位符(URL)字符串、API调用、app服务调用或其它服务调用来访问和使用的电子数字服务。计算机系统400和服务器430可形成分布式计算系统的元件,该分布式计算系统包括协作执行任务或执行应用程序或服务的其它计算机、处理集群、服务器群或其它计算机组织。服务器430可包括被组织为模块、方法、对象、功能、例程或调用的一组或多组指令。这些指令可被组织为一个或多个计算机程序、操作系统服务或包括移动应用程序的应用程序。这些指令可包括操作系统和/或系统软件;一个或多个支持多媒体、编程或其它功能的库;用于实现TCP/IP、HTTP或其它通信协议的数据协议指令或堆栈;用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG编码的文件的文件格式处理指令;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,如办公套件、互联网访问应用程序、设计和制造应用程序、图形应用程序、音频应用程序、软件工程应用程序、教育应用程序、游戏或其它应用程序。服务器430可包括Web应用服务器,其有表示层、应用层和数据存储层,例如,使用结构化查询语言(SQL)或不使用SQL的关系数据库系统、对象存储、图形数据库、平面文件系统或其它数据存储。

计算机系统400可通过一个或多个网络、网络链接420和通信接口418发送消息并接收数据和指令,包括程序代码。在因特网(Internet)示例中,服务器430可通过因特网428、ISP426、本地网络422和通信接口418为应用程序发送请求的代码。所接收的代码可以在其被接收时由处理器404执行,和/或存储在存储410或其它非易失性存储中,以供以后执行。

如本节所述的指令的执行可以实现正在被执行的由程序代码和其当前活动组成的计算机程序实例的形式的进程。取决于操作系统(OS),一进程可由多个并行执行指令的执行线程组成。在这种情况下,计算机程序是指令的被动集合,而过程可能是这些指令的实际执行。多个进程可与同一程序相关联;例如,打开同一程序的多个实例通常意味着正在执行多于一个的进程。可实现多任务处理以允许多个进程共享处理器404。虽然每个处理器404或处理器的核心一次执行一个任务,但是,计算机系统400可被编程为实现多任务处理以允许每个处理器在正在被执行的任务之间切换而不必等待每个任务完成。在一实施例中,可在任务执行输入/输出操作时、当一任务指示它可以被切换时或在硬件中断时,执行切换。可实现分时,以通过快速执行上下文切换来提供多个进程的并行执行的同时出现而允许对交互式用户应用程序的快速响应。在一实施例中,为了安全性和可靠性,操作系统可防止独立进程间的直接通信,从而提供严格介导且受控的进程间通信功能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号