首页> 中国专利> 基于事务的事件跟踪机制

基于事务的事件跟踪机制

摘要

从客户端设备接收连接到与云计算设备相关联的无线网络的请求。接收指示第一客户端事务已开始的第一通知。使用第一计时器来识别与第一客户端事务的开始时间相关联的第一时间戳。生成具有第一客户端事务和第一时间戳的第一数据帧。接收指示第一客户端事务已完成的第二通知。使用第一计时器来识别与第一客户端事务的结束时间相关联的第二时间戳。使用第二时间戳来更新第一数据帧。向云计算设备发送第一数据帧。

著录项

  • 公开/公告号CN112956172A

    专利类型发明专利

  • 公开/公告日2021-06-11

    原文格式PDF

  • 申请/专利权人 思科技术公司;

    申请/专利号CN201980071207.9

  • 申请日2019-10-28

  • 分类号H04L29/08(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人郭妍

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 11:21:00

说明书

本申请要求2018年10月31日提交的美国专利申请No.16/177,147的优先权,其全部内容通过引用合并于此。

技术领域

本公开的一个技术领域是跟踪云计算环境中的无线客户端事件。另一个技术领域是边缘计算设备进行实时监视和基于事务(transaction)的事件跟踪。另一个技术领域是网络流量的数据导出优化。

背景技术

本节中描述的方法是可以实行的方法,但不一定是先前已经设想到或实行过的方法。因此,除非另有说明,否则不应仅由于将本节中描述的任何方法被包括在本节中而认为它们有资格作为现有技术。

无线接入点和无线局域网(LAN)控制器跟踪与Wi-Fi网络相关联的无线客户端事件,并构建可以导出到云分析平台的遥测数据。云分析平台提供有关客户端连接问题和失败(例如慢的验证或慢的漫游)的可行见解(insight)。通过遥测收集的数据的准确性对于下述两方面至关重要:使网络管理员能够了解网络上任何无线客户端的正确状态、以及作为到网络管理系统的数据源。当无线客户端的规模可能达到数十万,并且信息需要进行处理并有效地存储在数据库中时,这对于云分析平台而言变得尤为重要。

有关跟踪无线客户端事件的现有努力已经集中在事件的状态上。但是,基于状态的事件的数据在每个实现中可能会有所不同,从而导致客户端事件的不正确表示。

附图说明

在附图中:

图1A、图1B和图1C示出了包括客户端事件的各种事务时间的示例时间序列表;

图2示出了针对客户端事件序列的过程;

图3示出了将基于事务的客户端事件数据导出到云平台的示例;

图4示出了可以利用来实现实施例的示例计算机系统。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本公开的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践本公开。在其他实例中,以框图形式示出了公知的结构和设备,以避免不必要地使本公开变得晦涩。根据以下概述,在以下部分中描述了实施例:

1.总体概述

描述了用于在基于云的环境中基于事务来跟踪和导出客户端事件的技术。本公开通过定义客户端事件的事务、减少存储器占用并提供准确的度量来表示客户端对连接到无线网络的尝试,来对与无线联网相关联的事件进行建模。实施例可用于:在IEEE标准802.11协议实现方式或其他无线联网协议实现方式下,随着客户端经历无线联网关联的不同阶段而跟踪和导出客户端事件和状态。在一实施例中,事务模型对终端用户对连接到WiFi网络的尝试进行镜像,因此提供了更准确的度量来生成与用户相关的见解。该模型还针对有线上的带宽消耗对数据导出进行了优化,并降低了云分析平台上的计算复杂度,从而可以进行实时流处理。

在一个实施例中,从客户端设备接收到连接到与云计算设备相关联的无线网络的请求。接收第一通知以指示第一客户端事务已经开始。使用第一计时器来识别与第一客户端事务的开始时间相关联的第一时间戳。第一事务可以包括下述各项中的任一项:无线联网接入点关联请求、认证请求、漫游请求或动态主机配置协议(DHCP)请求。生成具有第一客户端事务和第一时间戳的第一数据帧。可以接收指示第一客户端事务已经完成的第二通知。使用第一计时器来识别与第一客户端事务的结束时间相关联的第二时间戳。使用第二时间戳来更新第一数据帧。第一数据帧被发送到云计算设备。

2.结构和功能概述

2.1无线联网协议事件和数据模型

在一实施例中,对于随客户端计算设备经历使用无线联网协议建立连接时所发生的每个状态机转换,在客户端事件流中创建记录。以这种方式创建数据模型为在程序控制下确定客户端如何在不同时间经历不同的关联状态提供了基础,并且具有关于特定状态是成功完成还是失败以及与该状态相关的其他数据的信息。

表1中列出了客户端事件的示例。

表1-无线联网协议中的客户端事件的示例

表2中列出了针对客户端关联的客户端事件数据流的样本输出:

表2-示例客户端事件数据流

#WLC-Name Timestamp Event Result Reason FIELDS

37 test-5520 1505855563192549 ASSOC_START SUCCESS(1)ASSOC ssid:test-dotlx,

apmac:28:6F:7F:5C:13:20,slot:1,

38 test-5520 1505855563192745 ASSOC_DONE SUCCESS(0)NO_REASON ssid:test-dotlx,

39 test-5520 1505855563195404 AUTH_START SUCCESS(0)NO_REASON

40 test-5520 1505855563290301 AUTH_DONE SUCCESS(89)DOT1X_FULL_AUTHuser:test-login,

svr:172.19.220.69

41 test-5520 1505855563299791 L2KEY_DONE SUCCESS(0)NO_REASON

42 test-5520 1505855563299882 MOBILITY_DONE SUCCESS(147)MM_HANDOFF_TIMEOUT role:1,

43 test-5520 1505855563299977 DHCP_DONE SUCCESS(192)IPLEARN_STATICipv4:0.0.0.0,

ipv6:2001:20:20:20:7415:c7ff:2f4:50fb,svr:0.0.0.0

44 test-5520 1505855563299989 RUN SUCCESS(0)NO_REASON ipv4:0.0.0.0,

ipv6:2001:20:20:20:7415:c7ff:2f4:50fb,role:1,

虽然以状态机转换为索引的客户端启动(onboarding)事件的前述表达形式是有效的,但是可以改进。在客户端正进行关联或漫游或运行应用程序时,分析平台需要就启动体验以及连接的体验展示见解。关于启动体验的一些关键见解包括:从关联开始到客户端可以传递流量时所花费的时间;客户端完成从一个AP到另一个AP的漫游所花费的时间;完成认证所花费的时间;完成DHCP IP地址学习所花费的时间;一次尝试关联的启动过程期间的重试次数;启动期间经历的失败。

为了生成这些见解,如果为每个状态机移动(以上示例)生成客户端事件记录,则基于云的分析计算实例中的流处理管道需要维护窗口以针对特定客户端MAC地址收集从启动开始直到达到终端状态的所有事件。在大型规模中,这成为一个问题,因为管道必须在该时间窗口中维护事务的状态。为关联尝试所生成的记录数量也非常高,因为为每个状态机移动创建了记录。因此,在一些实施例中,通过在边缘计算设备中执行分析并通过导出事务记录来将事件数据转换为事务。通过把创建事务的概念推到网络中的边缘计算设备,云分析平台中的管道可以是无状态的。

在一实施例中,事务包括给定客户端的一系列客户端事件,这些客户端事件以关联请求开始,并以运行事件或具有失败结果类型的任何其他事件结束。

在无线网络中,最相关的见解基于从终端用户体验的视角对客户端问题的实时跟踪。终端用户连接到网络的一次尝试可能经历多次重复客户端状态机移动。例如,对于我们从中收集数据的生产网络中的关联尝试,通常看到以下事件序列:

ASSOC_START

ASSOC_DONE

ASSOC_START

ASSOC_DONE

<上面的循环重复几次>

AUTH_START

AUTH_DONE

ASSOC_START

ASSOC_DONE

AUTH_START

AUTH_DONE

<上面的循环重复几次>

L2KEY_DONE

MOBILITY_DONE

DHCP_DONE

RUN

从终端用户的视角,上面列出的所有事件表示一次连接尝试。因此,分析平台应将事务作为整体来计算和输出所有度量。如果上述事务仅仅因为客户端状态机多次移动到ASSOC_START而分成多次关联尝试,则分析平台生成的度量将不会正确表示终端用户体验。

在一实施例中,以前述方式生成的客户端事件存储在Redis缓存中。分析模块消耗推到Redis DB中的这些事件,并基于上述定义创建事务。

在一实施例中,可以将事务的数据模型定义为:

key mac;

leaf mac{

type yang:mac-address;

description″MAC address of the client″;

}

list transactions{

key index;

description″this is a circular event queue″;

leaf index{

type uint16;

description″Index of the client transaction″;

}

leaf transaction-type{

type wlc-client-transaction-type;

description″Type of transaction.Possible values are:

1.Successful association

2.Slow association

3.Failed assocation

4.Successful roam

5.Slow roam

6.Failed roam

7.Incomplete transaction???;

}

leaf start-time{

type uint64;

description″Epoch timestamp at which the client transaction started″;

}

leaf auth-time{

type uint32;

description″Time taken to complete authentication″;

}

leaf dhcp-time{

type uint32;

description″Time taken to complete DHCP″;

}

leaf assoc-result-type{

type wlc-client-event-result-types;

description″Assocation state was completed with success or failure″;

}

leaf auth-result-type{

type wlc-client-event-result-types;

description″Authentication completed with success or failure″;

}

leaf dhcp-result-type{

type wlc-client-event-result-types;

description″DHCP state completed with success or failure″;

}

leaf mobility-result-type{

type wlc-client-event-result-types;

description″Mobility state was learnt with success or failure″;

}

leaf assoc-done-reason-type{

type wlc-client-assoc-reason-types;

description″Describes the reason due to which the event istriggered.″;

}

leaf auth-done-reason-type{

type wlc-client-auth-reason-types;

description″Describes the reason due to which the event istriggered.″;

}

leaf dhcp-done-reason-type{

type wlc-client-dhcp-reason-types;

description″Describes the reason due to which the event istriggered.″;

}

leaf mobility-done-reason-type{

type wlc-client-mobility-reason-types;

description″Describes the reason due to which the eventistriggered.″;

}

leaf slot-id{

type uint8;

description″Slot ID for a client event″;

}

leaf ap-mac{

type yang:mac-address;

description″MAC address of the Access point″;

}

leaf ssid{

type string;

description″SSID of the client″;

}

leaf ipv4{

type inet:ipv4-address;

description″IPv4 address of the client″;

}

leaf ipv6{

type inet:ipv6-address;

description″ipv6 address of the client″;

}

leaf vlan{

type uint32;

description″VLAN to which the client belongs″;

}

leaf dhcp-server-ip{

description″DHCP/Radius Server IP″;

type inet:ip-address;

}

leaf aaa-server-ip{

description″RADIUS Server IP″;

type inet:ip-address;

}

leaf username{

type string;

description″Username for the client device″;

}

leaf mobility-role{

type wlc-mobility-role-Type;

description″Role played by the client″;

}

list events{

key index;

description″List of events in this transaction with

time delta from transaction start time″;

leaf index{

type uint16;

description″Index of the client event″;

}

leaf event-type{

type wlc-client-event-type;

description″Event type″

}

leaf time-delta{

type uint32;

description″Time delta from start of transaction.″

}

}

}

默认情况下,当跟踪事务开始时,该事务是未完成事务。在客户端事件被消耗时,此数据帧中的列被填充并且状态被更新。在状态机中的每个客户端状态完成时,所花费在该状态中的时间被计算并填充在帧中。客户端状态机中的每个状态都有与之相关联的计时器,因此事务必须进入下一个状态,或者由于超时而以失败状态结束。因此,事务不会长期停留在未完成状态。一旦事务完成,数据导出模块将把它导出到云分析平台。

在所有转换被分析的情况下,子事件列表将携带具有时间增量(较小的存储器占用)的所有边缘。这对于分析失败或未完成事务以了解状态机移动和事务失败或未完成时的最后一个状态特别有用。

下面给出样本成功事务记录:

WLC-name index Fields

test-5520 8 transaction-type:Success,start-time:1505855563192549auth-time:94,dhcp-time:102,

slot-id:1,ap-mac:28:6F:7F:5C:13:20,ssid:test-dotlx,ipv4:0.0.0.0,ipv6:2001:20:20:20:7415:c7ff:2f4:50fb,

vlan:20,dhcp-server:0.0.0.0,aaa-server:172.19.220.69,username:test-login,mobility-role:1,

events:[1,2,1,2,1,2,1,2,3,1,2,3,1.2,3,4,5,6,7,9]

在一实施例中,当基于云的分析平台中的流处理管道接收到该记录时,生成见解的所有信息都已计算,因此可以通过任意更多处理被直接消耗。

利用这种方法,编程系统可以通过生成基于事务的记录来实现需要存储和处理的数据帧的数量的数量级减少。数据模型还有助于压缩数据量而不会丢失有关客户端事件的任何信息。具有针对事务的数据有助于使用边缘设备来执行计算并在云上保存资源。通过将客户端事件建模为事务而生成的见解和度量更准确,并且与消费者更相关。

2.2时间序列

图1A、图1B和图1C示出了包括客户端事件的各种事务时间的示例时间序列表。这些视图中的每一个表示随时间的一系列事件,这些事件可通过如本文进一步描述而编程的计算机实现过程被跟踪并与事务相关联。

首先参考图1A,示出了包括客户端事件的关联时间的示例时间序列表。图1A的示例时间序列表包括存储在电子数字计算机存储器中并在表示客户端连接状态的数据库中组织的数据结构。例如,图1A中表示的时间序列表包括具有用于记录事务时间和分析结果的多个列的表。每个列包括相应的事务信息的值,例如开始时间、关联时间、认证时间、DHCP时间、事务类型、结果类型或失败类型。当事务被处理时计算每个列的值。

可以使用被编程以执行如下的处理的无线联网接入点的主机计算机或处理器来实现实施例。在一实施例中,在从客户端设备接收到无线联网接入点关联请求时,生成时间序列表。客户端事件可以包括一系列事务,这些事务可以包括关联事务、认证事务、DHCP事务或移动性事务。客户端事件序列中的事务的顺序和数量可以基于网络配置而变化。

在一些实施例中,关联时间120指示完成关联事务花费的时间。认证时间130指示完成认证事务花费的时间。DHCP时间140指示完成DHCP IP学习花费的时间。结果类型150指示事务状态的类型(例如,成功)。失败类型160指定失败的原因(例如,802x认证失败)。

如图1A所示,在接收到请求时,把关联时间的时间值存储在时间序列表中。可以使用与关联事务相关联的计时器来计算时间值。每个事务都与设置有特定阈值的可配置计时器相关联。当计时器到期(即,满足阈值)时,事务被视为“失败的事务”,并且过程结束。当确定事务成功时,过程进行到客户端事件序列中的下一个事务。

图1B示出了包括关联时间和认证时间的示例时间序列表。在客户端事件序列中的关联事务之后可能发生认证事务。与认证事务相关联的计时器可用于识别与认证的开始时间相关联的第一时间戳,以及与认证结束时间相关联的第二时间戳。第一时间戳和第二时间戳用于计算完成认证事务花费的时间。计算出的时间被记录在认证时间字段130中。

在一些实施例中,当过程正在进行时,事务类型110可以指示事务“未完成”。当计算设备确定过程成功执行时,可以将事务类型更新为“成功的事务”,或者当过程以失败结束时,可以更新为“失败的事务”。事务类型可以包括“成功的事务”、“慢的事务”、“失败的事务”、“成功的漫游”、“慢的漫游”、“失败的漫游”和“未完成事务”的对应值。

图1C示出了具有分析结果的示例时间序列表。如果认证事务成功,则过程进入下一个事务140(例如,DHCP事务)。另一方面,当认证失败时,过程结束,并且时间序列表的其他字段用分析信息填充并被发送到云计算设备。

在一些实施例中,计算设备执行分析以跟踪无线连接的实时问题,以最小化云计算设备处的计算工作。例如,可以由计算设备基于第一时间戳和第二时间戳来识别结果类型150和失败类型160。作为一个示例,在确定完成认证花费的时间比平均周期更长但小于阈值时,计算设备可以确定认证的事务类型是“慢的事务”。在另一示例中,在确定完成认证花费的时间比阈值长时,计算设备可以确定认证的事务类型是“失败的事务”。计算设备还可以基于所识别的时间戳确定结果类型是“失败”并且失败类型是“802x_l认证失败”。分析结果存储在记录中并被发送到云计算设备。

图2示出了针对客户端事件序列的过程。

事件序列可以在步骤200开始。序列可以在从客户端设备接收到连接到Wi-Fi网络的无线联网接入点关联请求时开始。

在步骤210,当接收到关联请求时,在计算设备处生成时间序列记录。时间序列记录包括多个字段,以包括时间戳信息和每个事务的分析结果。时间序列记录可以包括每个事务的开始时间和结束时间的时间戳信息,基于开始时间和结束时间的时间戳计算的完成时间,以及对于事务结果和失败类型的分析结果。基于网络配置,可以在时间序列记录中包含其他类型的分析结果。

在步骤220,如果确定成功执行了认证事务,则过程进入下一个事务(例如,DHCP事务)。另一方面,在确定未成功执行认证时,过程以失败结束,并且由计算设备确定具有失败类型的数据帧,并在步骤250发送到云计算设备。计算设备确定事务类型(例如,失败的事务)、结果类型(例如,失败)和失败的原因(例如,错误的密码)。将基于事务的分析结果导出到云计算设备可以减少需要通过云计算设备分析的流量的量。

在步骤230,确定成功执行了DHCP事务。计算设备可以使用DHCP事务的计时器来确定完成DHCP事务花费的时间。DHCP事务的计时器可以与认证事务的计时器不同。因此,DHCP事务的超时阈值可以与认证事务的超时阈值不同。当DHCP过程的计时器到期时,计算设备确定该过程以失败结束(例如,失败的事务),并且在步骤250将具有失败分析结果的数据帧发送到云计算设备。用于DHCP失败的数据帧可以包括与用于认证失败的数据帧不同的信息。在用于DHCP失败的数据帧被发送到云计算设备之前,用于认证失败的数据帧被发送到云计算设备,并且可能不包括关于DHCP事务的任何信息。

在步骤240,在确定成功完成客户端事件序列中的所有步骤时,过程以总状态结束,并且客户端设备可以处于运行状态。可以重复客户端事件序列中的每个事务以经历多个状态机转换,以确保来自客户端设备的关联尝试的成功。图2中所示的客户端事件序列不是排他列表,并且可以包括其他连接事务。

2.3示例过程和算法

图3示出了将基于事务的客户端事件数据导出到云平台的示例。

图3旨在公开可以用作编写计算机程序以实现本文描述的功能的基础并且使计算机以本文公开的新方式操作的算法或功能描述。可以以任何顺序执行该过程的步骤,并且不限于图3所示的顺序。

在步骤310,与计算设备的通信开始。例如,从客户端设备接收连接到与云计算设备相关联的无线网络的请求。该过程可以由与云计算设备不同的计算设备来执行。在一些实施例中,计算设备可以是诸如路由器或交换机之类的边缘计算设备,或者是网络管理站。

在步骤320,接收指示第一客户端事务已开始的第一通知。在接收到第一通知时,可以生成时间序列记录以存储事务信息。在一些实施例中,第一客户端事务可以包括下述各项中的任意项:无线联网接入点关联请求、认证请求、漫游请求或动态主机配置协议(DHCP)请求。

在步骤330,使用第一计时器来识别与第一客户端事务的开始时间相关联的第一时间戳。使用诸如第一时间戳之类的实时统计可以准确地跟踪客户端状态并最小化在传输中丢失的流量。

在步骤340,生成具有第一客户端事务和第一时间戳的第一数据帧。第一数据帧可以填充在时间序列记录中,并且可以包括用于存储事务信息的其他字段。可以随着客户端事件的进展填充事务信息的其他字段。

在步骤350,接收指示第一客户端事务已完成的第二通知。第二通知可以指示第一事务的完成状态。例如,第一类型的第二通知可以表示“成功的事务”。第一类型的第二事务指示第一事务已完成,并且该过程继续到下一个事务。第二类型的第二通知可以表示“慢的事务”。第二类型的第二通知指示完成第一事务花费的时间高于第一事务的阈值,但是低于平均周期。在另一个实施例中,“慢的事务”可能仍然进展到下一个事务。

第三类型的第二通知可以表示“失败的事务”。“失败的事务”指示第一事务未完成并且进程结束。第四类型的第二通知可以表示“未完成事务”。未完成事务指示该过程可能仍然正在进行。根据网络配置,其他事务类型可用。

在步骤360,使用第一计时器来识别与第一客户端事务的结束时间相关联的第二时间戳。在接收到指示第一事务的完成状态的第二通知时,第二时间戳可用于记录第一事务的完成或未完成时间(例如,超时)。通过计算第一时间戳和第二时间戳,计算设备计算完成第一事务花费的时间并将该时间信息存储在时间序列表中。如果在第一计时器到期之前第一事务尚未完成,则确定第一事务超时,事务不成功。可以确定与失败事务相关的其他分析结果。

在步骤370,使用第二时间戳来更新第一数据帧。在一些实施例中,客户端事件序列中的每个事务可以经历多次重复,以确保从客户端到网络的连接是安全的。

在步骤380,将第一数据帧发送到云计算设备。通过将实时的、基于事务的第一数据帧发送到云计算设备,可以降低云计算设备上的计算复杂度、优化带宽消耗并最小化进入云计算设备的流量。

使用这些方法,准确的客户端状态数据被收集,以通过对客户端连接到无线网络的尝试的镜像来表示终端用户的体验。使用基于事务的模型提供了更准确的度量,用于生成监视客户端事件的见解。当在与云计算设备不同的计算设备上执行实时分析时,这些方法具有通过在云平台上使用尽量少的计算资源来实现实时可扩展见解的益处。此外,基于事务的机制优化了带宽消耗并降低了云平台的计算复杂度。基于事务的跟踪机制简化了处理并减少了存储器占用,无论编码机制如何。

3.实现机制-硬件概述

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

存储器406、ROM 408或存储装置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的示例包括触摸屏、麦克风、静止和视频数字相机、字母数字和其他按键、小键盘、键盘、图形输入板、图像扫描仪、操纵杆、时钟、开关、按钮、转盘、滑轨,和/或各种类型的传感器,例如力传感器、运动传感器、热传感器、加速度计、陀螺仪和惯性测量单元(IMU)传感器,和/或各种类型的收发器,例如无线(如蜂窝或Wi-Fi)、射频(RF)或红外(IR)收发器和全球定位系统(GPS)收发器。

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

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

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

计算机系统400可以使用定制的硬连线逻辑、至少一个ASIC、GPU或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接收的指令可以可选地在处理器404执行之前或之后存储在存储装置410上。

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

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

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

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

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

尽管前述说明书中描述的一些附图包括具有按顺序所示的步骤的流程图,但是步骤可以以任何顺序执行,并且不限于这些流程图中所示的顺序。另外,一些步骤可以是可选的,可以多次执行,和/或可以由不同的组件执行。本文描述的流程图的所有步骤、操作和功能旨在指示在各种实施例中在专用计算机或通用计算机中使用编程执行的操作。换句话说,本公开中的每个流程图与本文的相关文本组合,是用于编程计算机以执行所描述的功能的算法的全部或部分的指南、计划或规范。已知与本公开相关联的领域的技能水平很高,因此本公开中的流程图和相关文本已经准备好以技术人员在他们自己之间传送程序、算法及其实现时本领域通常预期的充分性和细节的级别传达信息。

在前述说明书中,已经参考许多具体细节描述了本实施例的(一个或多个)示例实施例。但是,细节可能会根据手边特定实现的要求而在不同的实现方式之间有所不同。因此,(一个或多个)示例实施例应被认为是说明性的而不是限制性意义。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号