高可用性云服务供应的制作方法

文档序号:21324245发布日期:2020-06-30 20:58阅读:234来源:国知局
高可用性云服务供应的制作方法



背景技术:

在某些情况下,通过将信息存储在一个或多个服务器或数据存储库中来提供云服务。然而,如果服务器或数据存储库离线或具有高负载,则可能会发生问题。期望用于高可用性云服务供应的技术。

附图说明

在附图的图中,通过示例而非限制的方式示出了本技术的一些实施例。

图1示出了根据一些实施例的示例蜂窝系统。

图2a示出了根据一些实施例的其中客户端设备打开到第一互联网协议(ip)地址的初始连接的示例云服务供应系统。

图2b示出了根据一些实施例的其中云服务器指示客户端设备与附加ip地址建立连接的示例云服务供应系统。

图2c示出了根据一些实施例的其中云服务器执行负载平衡的示例云服务供应系统。

图2d示出了根据一些实施例的其中与由客户端设备存储在对等地址中主要对等地址中的ip地址相关联的虚拟机发生故障的示例云服务供应系统。

图3示出了根据一些实施例的示例数据架构。

图4是根据一些实施例的用于提供高可用性云服务的示例方法的流程图。

图5是示出根据一些实施例的能够从机器可读介质读取指令并执行本文讨论的任意方法的机器组件的框图。



技术实现要素:

本公开总体上涉及被配置为提供机器理解的机器,包括此类专用机器的计算机化变体以及对此类变体的改进,并且涉及与提供机器理解技术的其他专用机器相比改进了此类专用机器的技术。具体地,本公开解决了用于高可用性云服务供应的系统和方法。

根据本文描述的技术的一些方面,一种系统包括处理电路;以及存储指令的存储器,该指令在由处理电路执行时使处理电路执行包括以下各项的操作:从远程设备接收访问指定服务的请求,该指定服务与多个虚拟机相关联;多个虚拟机中的每个虚拟机存储与指定服务相关联的共享状态;响应于该请求,向远程设备提供到多个虚拟机中的第一虚拟机的连接以及多个虚拟机中的其他虚拟机的标识符;确定将远程设备与第一虚拟机断开连接,同时继续向远程设备提供指定服务;响应于确定将所述远程设备和所述第一虚拟机的断开连接,向所述远程设备提供到所述多个虚拟机中的第二虚拟机的连接。

具体实施方式

总览

本公开尤其描述了分别提供各种功能的方法、系统和计算机程序产品。在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本公开的不同实施例的各个方面的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有所有具体细节的情况下实践本公开。

如上所述,在某些情况下,通过将信息存储在一个或多个服务器或数据存储库中来提供云服务。然而,如果服务器或数据存储库离线或具有高负载,则可能会发生问题。期望用于高可用性云服务供应的技术。本文描述的技术的一些方面针对用于为云中的网络功能提供高可扩展性、高可用性和负载平衡特征的技术。

本文描述的技术的一些方面涉及在超大规模云环境中用于基于流控制传输协议(sctp)的网络功能的高可用性、高可扩展性和负载平衡技术的设计和实现。sctp用于边缘设备与核心网络组件进行通信的网络基础结构中。在某些情况下,核心网络功能可能会转移到云中。云中用于提供高可用性、高可扩展性和负载平衡特征的软件机制可能是可期望的。本文描述的技术的某些方面利用sctp来构建软件集合来实现这些特征。在某些情况下,sctp还用于云或数据中心中两个组件之间的通信,例如到虚拟化网络功能的通信。在一些示例中,诸如无线接入点的边缘设备与云进行通信。

网络功能虚拟化(nfv)涉及用云计算中大型商用服务器上运行的软件来替换昂贵、不灵活的专用硬件盒的技术。nfv可能部署在某些蜂窝(或其他网络)基础架构中。

nfv的一个挑战是提供与传统硬件一样好或比传统硬件更好的性能。性能的一项度量是可用性,高可用性可确保较低的系统中断和更好的服务连续性。例如某些蜂窝网络运营商期望五个九(99.999%)的可用性。在蜂窝核心网络的控制平面中,微小的中断可能导致大量设备失去连接一个小时或更长时间。

在某些情况下,使用特殊制造的硬件和冗余设备来实现这种高可用性。然而,这是一个昂贵的解决方案,并且不适用于云环境,在云环境中,云服务通常被分类为具有三个九(99.9%)的可用性。例如由于硬件故障、内部网络中断或高级故障(例如电源中断),云服务可能会发生故障或被破坏。

示例实现

图1示出了根据一些实施例的示例蜂窝系统100。如图所示,蜂窝系统100包括小区站点110和移动交换局120。小区站点110包括演进的nodeb(enodeb)115。移动交换局120包括移动性管理实体(mme)125。enodeb115和mme125经由以太网130和经由同步光网络(sonet)140连接。enodeb115具有用于以太网130的互联网协议(ip)地址和用于sonet140的ip地址。类似地,mme125具有用于以太网130的ip地址和sonet140的ip地址。

在某些情况下,网络设备使用sctp与核心网络组件进行通信。sctp使用多宿主机制来实现冗余连接路径,以克服设备或网络故障。然而,在云环境中,多宿主无法处理整个虚拟机(vm)发生故障的情况,其很可能是云计算环境中的故障模型。例如在图1中,sctp可以处理以太网130故障。然而,如果mme125发生故障,则无论mme125拥有多少个网络接口卡(nic),小区站点110和移动交换局120之间的通信都会发生故障。

本文描述的技术的一些方面在群集之间部署共享存储器,以呈现为具有许多nic的单个盒子。为此,相反的端点可以使用sctp的多宿主特征,以为连接提供备份。某些方面在群集内部实现了负载平衡,它利用内置的sctp特征来通知通信的另一端正在发生负载平衡。一些方面修改了通信套接字,并为应用级别提供了接口,以在其完成处理后删除传输层中的数据。当vm在其确认(ack)分组后发生故障时,这避免了有问题的结果。(即,客户端设备向vm发送附加分组,然后vm由于其故障而无法处理这些附加分组。)

根据本文描述的技术的一些实现,客户端设备(例如蜂窝网络中的用户设备(ue))连接到服务器以建立sctp连接。在蜂窝网络中,客户端设备经由enodeb连接到服务器。图2a-2d示出了在蜂窝网络中实现的本文描述的技术的一些实施例。然而,应当注意,本文描述的技术不限于蜂窝网络,并且也可以在其他网络中实现。

图2a示出了根据一些实施例的示例性云服务供应系统200a,其中客户端设备210打开到第一ip地址的初始连接(init)250a。如图所示,系统200a包括客户端设备210、云服务器220、节点225。云服务器220包括多个vm230.1-5。每个vm230.k(其中k是1到5之间的数字)与ip地址235.k相关联。所有vm230.1-5均存储共享状态240。共享状态240包括共享数据、指令和软件程序的状态。应当注意,尽管图2a-2d示出了具有五个vm230.1-5的系统,但是本文描述的技术可以用任意数量的vm来实现,不一定是五个。

如图2a所示,客户端设备210a经由节点225打开到vm230.2的初始连接250a。节点225可以包括enodeb、gnb(第五代nodeb)、ap等中的一个或多个。客户端设备210存储sctp关联212和地址块214。sctp关联是传输控制协议(tcp)连接的概括。然而,tcp连接是两个网络接口之间一对一的连接,一个在服务器上,而另一个在客户端上。相反,sctp关联在以下程度上是多对多的:(i)云服务器上的多个网络接口可以与客户端设备210上的多个接口相关联,并且(ii)sctp关联212可以携带多个逻辑流。sctp关联212的地址块214存储到vm230.2的初始连接250a的对等地址中的主要对等地址-ip235.2。对等地址中的主要对等地址是客户端设备210在sctp关联212中与之通信的主要ip地址。客户端设备210与vm230.2通信以访问共享状态240。此外,尽管云服务器220被描述为是在单个服务器,云服务器可以被实现为一个或多个虚拟机、一个或多个物理机和/或包括多个服务器的服务器场。

在一些实现中,客户端设备210可以初始连接到多于一个初始ip地址(例如在极端可靠性的情况下)。客户端设备210可以从域名服务器(dns)查询中获得多于一个的初始ip地址。可替代地,可以静态地配置多于一个的初始ip地址。服务器220然后可以添加更多的地址并动态地更改现有的ip地址,而无需丢弃客户端设备210。

图2b示出了根据一些实施例的示例性云服务供应系统200b,其中云服务器220指示客户端设备210与附加ip地址235.1、235.3、235.4和235.5建立连接。图2b所示的配置可以在图2a的配置之后发生。云服务器220提供由共享状态240连接的群集中的所有vm230.1-5中的所有ip地址235.1-5。从客户端210的角度来看,云服务器220呈现为具有多个可用ip地址的单机。在一些情况下,不需要修改客户端设备来处理来自云服务器220的指令。在处理来自云服务器220的指令时,客户端设备210在地址块214中存储对等地址中的主要对等地址-ip地址235.2-和备用地址-ip地址235.1、235.3、235.4和235.5。如图2b所示,客户端设备210与vm230.2进行数据传递250b,并从vm230.1和230.3接收心跳260b(以及vm230.4和230.5-为了使附图简单化,未示出来自vm230.4和230.5的心跳)。

图2c示出了根据一些实施例的其中云服务器220执行负载平衡的示例性云服务供应系统200c。图2c所示的配置可以在图2b的配置之后发生。在负载平衡中,云服务器220可以决定经由vm230.3而不是vm230.2来服务客户端设备210。例如这可能响应于vm230.2上的高负载或vm230.3上的低负载而发生。为此,vm230.3经由节点225向客户端设备210发送地址配置更改块(asconf)“set_primary”命令250c。asconf“set_primary”命令250c标识vm230.3的ip地址235.3。作为响应,客户端设备210在其地址块214中存储ip地址235.3而不是ip地址235.2作为对等地址中的主要对等地址。客户端设备210在其地址块214中存储ip地址235.2而不是ip地址235.3作为备用地址。然后,客户端设备210与和对等地址中的主要对等地址中的ip地址235.3相关联的vm230.3进行通信。

图2d示出了根据一些实施例的示例云服务供应系统200d,其中与由客户端设备210存储在对等地址中的主要对等地址中的ip地址235.2相关联的虚拟机230.2发生故障。图2d所示的配置可以在图2b的配置之后发生。

当与客户端设备210通信的vm230.2发生故障时,客户端设备210自动使用存储在地址块214的备用地址中的另一个ip地址。如图所示,在vm230.2发生故障时,客户端设备210与对应于vm230.1的ip地址235.1通信。使用vm230.1启动数据传递250d.1,同时停止使用vm230.2的数据传递250d.2。响应于该故障,在客户端设备210的地址块214的对等地址中的主要对等地址中,ip230.2被移除并且ip230.1被添加。地址块214中的备用列出了ip230.3、ip230.4和ip230.5。ip230.1已从备用中被移除,因为ip230.1现在是对等地址中的主要对等地址。

在超时之后发生从vm230.2到vm230.1的vm切换。可以基于蜂窝(或其他网络)运营商的要求来配置超时的长度。在某些情况下,vm切换完全发生在服务器220上,而没有在客户端设备210处进行任意修改。新vm230.1通过访问共享状态240来取代原始vm230.2,共享状态240是通过原始vm230.2在其发生故障之前的操作创建的。

对于安全套接字,传输层向应用(app)级别公开另一个应用编程接口(api)–“recvcommit”。因此,app级别可以在更改app级别中的状态之后提交更改,然后删除共享状态240中的数据。通过这样,在已经修改app级别状态后,数据可能不会被丢弃,从而确保了一致性。

位于sctp顶部的应用也可能是可靠的。具体地,应用可能会调用recvmsg(),并且然后立即崩溃。即使应用立即重新启动,上述消息也可能会丢失,因为它是从可靠的sctp队列中获取的,但是没有被存储到任意其他可靠的队列中。recvcommitapi解决了此问题。可靠的sctp将最后的recvmsg保留在队列中,直到使用最后的消息的标识符(id)调用recvcommit为止。调用recvcommit后,将从可靠的sctp队列中移除该消息。这允许应用将上述消息提交到其自己的可靠存储装置中,并且在应用存储了消息之后,该消息将经由recvcommit从sctp中被移除。

图3示出了根据一些实施例的示例数据架构300。如图所示,数据架构300包括由多个vm320(例如对应于vm230)使用的api310。api310包括recvcommit()和标准sctpapi:socket()、bind()、listen()、recvmsg()、sendmsg()、close()、changeprimary()和addsecondary()。首先,服务器220以socket()打开套接字以作为进行通信的意图,并设置参数。然后,利用bind(),服务器220将套接字绑定到特定的ip地址(如果服务器具有多个网络接口卡)、特定的协议和特定的端口。然后服务器220使用listen()来获得新的连接。一旦新的连接打开,服务器220就可以使用recvmsg()和sendmsg()来与另一端点进行通信。close()api关闭连接。changeprimary()api发送asconf消息以更改主要对等地址。addsecondary()api将添加另一个辅助ip地址。vm320与可靠的共享存储器330通信(例如对应于共享状态240)。可靠的共享存储器330提交对可靠的入队列340和可靠的出队列350的更改。可靠的入队列340和可靠的出队列350使用可靠的套接字api与应用层360进行通信。可靠的入队列340和可靠的出队列350提供到应用360的接口。recvcommit()与可靠的入队列340一起操作,并在应用360要求时通过调用函数从队列中移除消息。

一些实现使用vm230提供了高可用性。一些实现用可忽略的开销提供了快速、可靠和可扩展的共享存储器。在一些实现中,在客户端设备210处的多路径开销可以忽略。在一些实现中,由于客户端设备210选择端点,因此不需要前端来分配负载。在一些实现中,存在由本机sctp特征启用的快速故障转移。如果一条路径发生故障,则端点将在超时后尝试另一条路径。一些实现提供负载平衡。一些实现是向后兼容的,因为可能不需要修改客户端设备210。在一些实现中,套接字是可靠的,并且共享状态240在故障之后是一致的。

一些方面提出了一种软件架构和设计,以改进蜂窝核心网络控制平面的可用性和可扩展性。一些方面旨在使用sctp的多宿主机制来实现高可扩展性、高可用性和负载平衡。

在一些实施例中,远程直接存储器访问(rdma)用于快速、可靠和可扩展的共享存储器。然而,也可以使用其他联网协议。在某些情况下,客户端设备210可以通过发出changeprimary()命令来选择端点。在客户端设备能够更好地确定服务器端拥塞的情况下,这可能很有用。在某些情况下,sctp是向后兼容的,使得客户端设备210无需知道更改。换句话说,客户端设备在tcp上看到的消息顺序将与整个实现存在于具有多个nic的单个服务器上相同。在某些情况下,跨(2n+1)个服务器复制共享内存中的共享状态240,并且分布式系统可以容忍n台服务器中的故障而不会损害共享状态240。如果服务器重新启动,则重新启动的服务器将从另一台服务器获得共享状态240,并宣布其ip地址为辅助ip地址。响应于请求,重新启动的服务器以后可能会成为主要ip地址。

图4是根据一些实施例的用于提供高可用性云服务的示例方法400的流程图。

在操作410,服务器(例如服务器220)从远程设备(例如客户端设备210)接收访问指定服务的请求。指定服务与多个虚拟机(例如虚拟机230)相关联。多个虚拟机中的每一个存储与指定服务相关联的共享状态(例如共享状态240)。

在操作420,响应于该请求,服务器响应于请求向远程设备提供到多个虚拟机中的第一虚拟机(例如虚拟机230.2)的连接(例如sctp连接)和多个虚拟机中的其他虚拟机的标识符(例如ip地址)。在一些实施例中,远程设备可以打开与多个虚拟机而不是单个第一虚拟机的初始连接。在一些情况下,多个虚拟机中的其他虚拟机的标识符使远程设备从多个虚拟机中的其他虚拟机接收心跳(例如心跳260b)。如果使用sctp,则(操作410的)访问指定服务的初始请求包括第一虚拟机的ip地址。换句话说,远程设备可以选择并标识第一虚拟机。然而,如本文所述,远程设备可以稍后代替第一虚拟机与和该服务相关联的任意其他虚拟机通信。

在操作430,服务器确定将远程设备与第一虚拟机断开连接同时继续向远程设备提供指定服务。在某些情况下,服务器响应于包括第一虚拟机的负载平衡来确定将远程设备与第一虚拟机断开连接。在某些情况下,服务器响应于第一虚拟机的故障来确定将远程设备与第一虚拟机断开连接。

在操作440,服务器响应于确定将远程设备和第一虚拟机断开连接,向远程设备提供到多个虚拟机中的第二虚拟机的连接。在某些情况下,服务器通过提供asconf来提供到第二虚拟机的连接,该asconf指示远程设备与第一虚拟机断开连接并连接到第二虚拟机。

编号示例

本文将某些实施例描述为编号示例1、2、3等。这些编号示例仅作为示例提供,并且不限制本主题技术。

示例1是一种系统,包括:处理电路;以及存储指令的存储器,该指令在由处理电路执行时使处理电路执行操作,操作包括:从远程设备接收访问指定服务的请求,该指定服务与多个虚拟机相关联;多个虚拟机中的每个虚拟机存储与指定服务相关联的共享状态;响应于该请求,向远程设备提供到多个虚拟机中的第一虚拟机的连接以及多个虚拟机中的其他虚拟机的标识符,该标识符连同流控制传输协议(sctp)关联一起被提供用于存储;确定结束远程设备与第一虚拟机之间的数据连接,同时继续经由第二虚拟机向远程设备提供指定服务;以及响应于确定结束数据连接,向远程设备提供到多个虚拟机中的第二虚拟机的连接。

在示例2中,示例1的技术方案包括,其中确定结束数据连接是响应于包括第一虚拟机的负载平衡。

在示例3中,示例1-2的技术方案包括,其中确定结束数据连接是响应于第一虚拟机的故障。

在示例4中,示例1-3的技术方案包括:其中多个虚拟机中的其他虚拟机的标识符使远程设备从多个虚拟机中的其他虚拟机接收心跳。

在示例5中,示例1-4的技术方案包括,其中到第一虚拟机的连接包括流控制传输协议(sctp)连接。

在示例6中,示例1-5的技术方案包括,其中提供到第二虚拟机的连接包括:提供地址配置更改块(asconf),地址配置更改块指示远程设备结束数据连接并连接到第二虚拟机。

在示例7中,示例1-6的技术方案包括,其中访问指定服务的请求包括第一虚拟机的地址。

在示例8中,示例1–7的技术方案包括,其中远程设备包括客户端设备。

示例9是一种存储指令的非暂态机器可读介质,当该指令由一个或多个机器的处理电路执行时,使处理电路执行操作,该操作包括:从远程设备接收访问指定服务的请求,该指定服务与多个虚拟机相关联;多个虚拟机中的每一个虚拟机存储与指定服务相关联的共享状态;响应于该请求,向远程设备提供到多个虚拟机中的第一虚拟机的连接以及多个虚拟机中的其他虚拟机的标识符,该标识符连同流控制传输协议(sctp)关联一起被提供用于存储;确定结束远程设备与第一虚拟机之间的数据连接,同时继续经由第二虚拟机向远程设备提供指定服务;以及响应于确定结束来自第一虚拟机的远程设备的数据连接,向远程设备提供到多个虚拟机中的第二虚拟机的连接。

在示例10中,示例9的技术方案包括,其中确定结束数据连接是响应于包括第一虚拟机的负载平衡。

在示例11中,示例9-10的技术方案包括,其中确定结束数据连接是响应于第一虚拟机的故障。

在示例12中,示例9-11的技术方案包括:其中多个虚拟机中的其他虚拟机的标识符使远程设备从多个虚拟机中的其他虚拟机接收心跳。

在示例13中,示例9-12的技术方案包括,其中到第一虚拟机的连接包括流控制传输协议(sctp)连接。

在示例14中,示例9-13的技术方案包括:其中提供到第二个虚拟机的连接包括:提供地址配置更改块(asconf),地址配置更改块指示远程设备结束数据连接并连接到第二个虚拟机。

在示例15中,示例9-14的技术方案包括,其中访问指定服务的请求包括第一虚拟机的地址。

示例16是一种方法,包括:从远程设备接收访问指定服务的请求,该指定服务与多个虚拟机相关联,多个虚拟机中的每个虚拟机存储与指定服务相关联的共享状态;响应于该请求,向远程设备提供到多个虚拟机中的第一虚拟机的连接以及多个虚拟机中的其他虚拟机的标识符,该标识符连流控制传输协议(sctp)关联一起被提供用于存储;确定结束远程设备与第一虚拟机之间的数据连接,同时继续经由第二虚拟机向远程设备提供指定服务;响应于确定将所述远程设备和所述第一虚拟机断开连接,向所述远程设备提供到所述多个虚拟机中的第二虚拟机的连接。

在示例17中,示例16的技术方案包括:其中确定结束数据连接是响应于包括第一虚拟机的负载平衡。

在示例18中,示例16-17的技术方案包括,其中确定结束数据连接是响应于第一虚拟机的故障。

在示例19中,示例16-18的技术方案包括:其中多个虚拟机中的其他虚拟机的标识符使远程设备从多个虚拟机中的其他虚拟机接收心跳。

在示例20中,示例16-19的技术方案包括,其中到第一虚拟机的连接包括流控制传输协议(sctp)连接。

示例21是包括指令的至少一个机器可读介质,这些指令在由处理电路执行时使处理电路执行用于实现示例1-20中的任意一个的操作。

示例22是一种设备,其包括用于实现示例1-20中的任意一个的部件。

示例23是实现示例1-20中任意一个的系统。

示例24是实现示例1-20中任意一个的方法。

组件和逻辑

本文将某些实施例描述为包括逻辑或多个组件或机制。组件可以构成软件组件(例如体现在机器可读介质上的代码)或硬件组件。“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式被配置或布置。在各种示例实施例中,一个或多个计算机系统(例如独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件组件(例如处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为操作为执行本文所述的某些操作的硬件组件。

在一些实施例中,可以机械地、电子地或其任意合适的组合来实现硬件组件。例如硬件组件可以包括永久性地配置为执行某些操作的专用电路或逻辑。例如硬件组件可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件组件还可以包括可编程逻辑或电路,其由软件临时配置为执行某些操作。例如硬件组件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过此类软件进行配置,硬件组件将成为为执行配置的功能而专门定制的特定机器(或机器的特定组件),并且不再是通用处理器。将理解,可以通过成本和时间考虑来驱动在专用且永久配置的电路中或在临时配置的电路(例如由软件配置)中机械地实现硬件组件的决定。

相应地,短语“硬件组件”应被理解为涵盖有形记录,即物理地构造、永久地配置(例如硬连线)或临时地配置(例如编程)以以特定方式操作或执行本文描述的某些操作的记录。如本文所使用的,“硬件实现的组件”是指硬件组件。考虑到其中硬件组件被临时配置(例如编程)的实施例,每个硬件组件不需要在时间的任意时刻被配置或实例化。例如在硬件组件包括由软件配置为成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间分别被配置为不同的专用处理器(例如包括不同的硬件组件)。软件相应地配置一个或多个特定处理器,例如以在一个时间实例上构成特定的硬件组件,并在不同的时间实例上构成不同的硬件组件。

硬件组件可以向其他硬件组件提供信息并从其他硬件组件接收信息。因此,所描述的硬件组件可以被认为是通信耦合的。在同时存在多个硬件组件的情况下,可以通过在硬件组件中的两个或多个之间或之中的信号传输(例如通过适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件组件的实施例中,可以例如通过在多个硬件组件可以访问的存储器结构中存储和取回信息来实现这种硬件组件之间的通信。例如一个硬件组件可以执行操作并将该操作的输出存储在其通信耦合到的存储设备中。然后,另一硬件组件可以在稍后的时间访问存储设备以取回和处理所存储的输出。硬件组件还可以启动与输入或输出设备的通信,并且可以在资源(例如信息的集合)上进行操作。

本文所述的示例方法的各种操作可以至少部分地由临时配置(例如通过软件)或永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的组件,这些组件操作以执行本文所述的一个或多个操作或功能。如本文所使用的,“处理器实现的组件”是指使用一个或多个处理器实现的硬件组件。

类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如一种方法的至少一些操作可以由一个或多个处理器或处理器实现的组件执行。此外,一个或多个处理器还可在“云计算”环境中或作为“软件即服务”(saas)来支持相关操作的性能。例如操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可以经由网络(例如互联网)和经由一个或多个适当的接口(例如api)访问。

操作中的某些操作的性能可以分布在处理器之间,不仅驻留在单个计算机内,而且可以跨多个计算机部署。在一些示例实施例中,处理器或处理器实现的组件可以位于单个地理位置中(例如在家庭环境、办公室环境或服务器场中)。在其他示例实施例中,处理器或处理器实现的组件可以分布在多个地理位置上。

示例机器和软件架构

结合图1-4描述的组件、方法、应用等在一些实施例中在机器和相关联的软件架构的上下文中实现。以下各节描述了适合与所公开的实施例一起使用的(一个或多个)代表性软件架构和(一个或多个)机器(例如硬件)架构。

软件架构与硬件架构结合使用,以创建针对特定目的而定制的设备和机器。例如特定的硬件架构与特定的软件架构相耦合将创建移动设备,诸如移动电话、平板设备等。稍有不同的硬件和软件架构可能会产生用于“物联网”的智能设备,而另一种组合产生的是用于云计算架构的服务器计算机。由于本领域技术人员可以容易地理解如何在与本文所包含的公开不同的上下文中实现所公开的主题,因此这里未呈现这种软件和硬件架构的所有组合。

图5是示出根据一些示例实施例的机器500的组件的框图,该机器500能够从机器可读介质(例如机器可读存储介质)读取指令并执行本文讨论的方法中的任意一个或多个。具体地,图5以计算机系统的示例形式示出了机器500的示意图,其中可以执行用于使机器500执行本文讨论的方法中的任何一个或多个的指令516(例如,软件、程序、应用、小应用程序、app或其他可执行代码)。指令516将普通的、未编程的机器转换成被编程为以所描述的方式执行所描述和示出的功能的特定机器。在替代实施例中,机器500作为独立设备操作或可以耦合(例如联网)到其他机器。在联网部署中,机器500可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力运行,或者在对等(或分布式)网络环境中作为对等机器运行。机器500可以包括但不限于服务器计算机、客户端计算机、pc、平板计算机、膝上型计算机、上网本、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能设备)、其他智能设备、网络设备、网络路由器、网络交换机、网桥、或能够顺序或以其他方式执行指令516的任意机器,这些指令指定了机器500所要采取的动作。此外,虽然仅示出了单个机器500,但术语“机器”也应被认为包括机器500的集合,机器500的集合单独地或共同地执行指令516以执行本文所讨论的方法中的任何一个或多个。

机器500可以包括处理器510、存储器/存储装置530和i/o组件550,其可以被配置为例如经由总线502彼此通信。在示例实施例中,处理器510(例如中央处理器(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理器(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)、另一个处理器、或其任意合适的组合)可以包括例如可以执行指令516的处理器512和处理器514。术语“处理器”旨在包括多核处理器,多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核”)。尽管图5显示了多个处理器510,但是机器500可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器、或其任意组合。

存储器/存储装置530可以包括诸如主存储器或其他存储器存储装置的存储器532以及存储单元536,两者均可以诸如经由总线502被处理器510访问。存储单元536和存储器532存储体现本文描述的方法或功能中的任意一个或多个的指令516。指令516还可以在由机器500执行期间全部或部分地驻留在存储器532内、在存储单元536内、在处理器510中的至少一个内(例如在处理器的高速缓冲存储器内)、或其任意合适的组合内。因此,存储器532、存储单元536和处理器510的存储器是机器可读介质的示例。

如本文所使用,“机器可读介质”是指能够临时或永久地存储指令(例如指令516)和数据的设备,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其他类型的存储装置(例如可擦除可编程只读存储器(eeprom))和/或其任意合适的组合。应将术语“机器可读介质”理解为包括能够存储指令516的单个介质或多个介质(例如集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读介质”应还应理解为包括能够存储用于由机器(例如机器500)执行的指令(例如指令516)的任意介质或多种介质的组合,使得这些指令在被机器(例如处理器510)的一个或多个处理器执行时,使机器执行本文所述的方法中的任意一种或多种方法。因此,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”本身不包括信号。

i/o组件550可以包括各种各样的组件,以接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量等等。包括在特定机器中的特定i/o组件550将取决于机器的类型。例如诸如移动电话的便携式机器将可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器将可能不包括这种触摸输入设备。将理解,i/o组件550可以包括在图5中未示出的许多其他组件。i/o组件550根据功能被分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,i/o组件550可以包括输出组件552和输入组件554。输出组件552可以包括视觉组件(例如诸如等离子体显示面板(pdp)的显示器、发光二极管(led)显示器、液晶显示器(lcd)、投影仪、或阴极射线管(crt))、声学组件(例如扬声器)、触感组件(例如振动电机、阻力机构)、其他信号发生器等等。输入组件554可以包括字母数字输入组件(例如键盘、被配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点工具)、触觉输入组件(例如物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏、或其他触觉输入组件)、音频输入组件(例如麦克风)等。

在其他示例实施例中,i/o组件550可以包括生物统计组件556、运动组件558、环境组件560或定位组件562以及各种各样的其他组件。例如生物统计组件556可以包括用于检测表情(例如手表情、面部表情、声音表情、身体姿势或眼睛跟踪)、测量生物信号(例如血压、心率、体温、汗水或脑电波)、测量与运动相关的度量(例如运动的距离、运动的速度或运动所花费的时间)、识别人(例如语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的组件。运动组件558可以包括加速度传感器组件(例如加速度计)、重力传感器组件、旋转传感器组件(例如陀螺仪)等等。环境组件560可以包括例如照明传感器组件(例如光度计)、温度传感器组件(例如检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如一个或多个检测背景噪声的麦克风)、邻近传感器组件(例如检测附近物体的红外传感器)、气体传感器(例如用于为了安全检测有害气体浓度或测量大气中污染物的气体检测传感器)、或其他可以提供与周围物理环境相对应的指示、测量或信号的组件。定位组件562可以包括位置传感器组件(例如全球定位系统(gps)接收器组件)、高度传感器组件(例如检测可以从中导出高度的气压的高度计或气压计)、取向传感器组件(例如磁力计)等。

可以使用多种技术来实现通信。i/o组件550可以包括通信组件564,通信组件564可操作以分别经由耦合582和耦合572将机器500耦合到网络580或设备570。例如通信组件564可以包括网络接口组件或与网络580接口的其他合适的设备。在进一步的示例中,通信组件564可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、组件(例如energy)、组件和用于经由其他模式来提供通信的其他通信组件。设备570可以是另一台机器或各种各样的外围设备中的任意一个(例如经由usb耦合的外围设备)。

此外,通信组件564可检测标识符或包括可操作以检测标识符的组件。例如通信组件564可以包括射频识别(rfid)标签读取器组件,nfc智能标签检测组件,光学读取器组件或声学检测组件(例如用于识别标记的音频信号的麦克风)。此外,可以经由通信组件564得出各种信息,例如经由互联网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可能指示特定位置的nfc信标信号的位置、等等。

在各种示例实施例中,网络580的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网(vpn)、局域网(lan)、无线lan(wlan))、广域网、无线广域网(wwan)、城域网(man)、互联网、互联网的一部分、公用电话交换网(pstn)的一部分、普通的旧电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两个或多个此类网络的组合。例如网络580或网络580的一部分可以包括无线或蜂窝网络,并且耦合582可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其他类型的蜂窝或无线耦合。在该示例中,耦合582可以实现多种类型的数据传输技术中的任意一种,诸如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、增强gsm演进(edge)的数据速率的技术、包括5g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准制定组织定义的其他标准、其他远程协议或其他数据传输技术。

指令516可以经由网络接口设备(例如通信组件564中包括的网络接口组件)使用传输介质并且可以利用许多公知的传输协议中的任意一个协议(例如http)通过网络580来传输或接收。类似地,指令516可以使用经由耦合572(例如对等耦合)到设备570的传输介质来传输或接收。术语“传输介质”应被认为包括任意无形介质,其是能够存储、编码或携带供机器500执行的指令516,并且包括数字或模拟通信信号或用于促进这种软件的通信的其他无形介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1