背景技术:
价格便宜的软件应用可用于各种计算平台。通常,某些类型的软件应用在主机设备上执行时与远离主机设备的后端服务器交互。后端服务器在一些情况下可以经由网络与应用实例交换信息。
技术实现要素:
在一些方面,本公开涉及一种系统,其包括知识库,存储从在多个远程设备上执行的多个应用实例中收集到的多个成功跟踪。系统包括网络接口和计算机处理器,所述计算机处理器被配置为经由所述网络接口从在第一远程设备上执行的第一应用示例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第一实例的执行状态的周期性捕捉;以及从所述应用的所述第一实例接收所述应用的所述第一实例已经执行目标的指示符。所述计算机处理器被配置为响应于接收到所述指示符,聚集所接收到的导致所执行的目标的调用栈信息的单元作为成功跟踪并且在所述知识库中存储所述成功跟踪。所述计算机处理器还被配置为从在第二远程设备上执行的所述应用的第二实例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第二实例的执行状态的周期性捕捉;确定从所述应用的所述第二实例接收到的所述调用栈信息与多个成功跟踪之间的相似性;以及响应于确定所述相似性,将所述第二远程设备添加到可能执行所述目标的设备群中。
在一些方面,本公开涉及一种方法,包括从在第一远程设备上执行的应用的第一实例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第一实例的执行状态的周期性捕捉;以及从所述应用的所述第一实例接收所述应用的所述第一实例已经执行目标的指示符。该方法包括聚集所接收到的导致所执行的目标的调用栈信息的单元作为成功跟踪以及从在多个远程设备上执行的所述应用的多个实例中收集多个成功跟踪。该方法还包括从在第二远程设备上执行的所述应用的第二实例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第二实例的执行状态的周期性捕捉;确定从所述应用的所述第二实例接收到的所述调用栈信息与多个成功跟踪之间的相似性;以及将所述第二远程设备添加到可能执行所述目标的设备群中。
在一些方面,本公开涉及一种存储指令的计算机可读介质,所述指令当被包括一个或多个计算处理器的计算设备执行时,使得所述计算设备:从在第一远程设备上执行的应用的第一实例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第一实例的执行状态的周期性捕捉,以及从所述应用的所述第一实例接收所述应用的所述第一实例已经执行目标的指示符。所述指令还进一步使得计算设备聚集所接收到的导致所执行的目标的调用栈信息的单元作为成功跟踪并且在存储从在多个远程设备上执行的应用的多个实例中收集到的多个成功跟踪的知识库中存储所述成功跟踪。所述指令还使得计算设备从在第二远程设备上执行的所述应用的第二实例接收调用栈信息的一个或多个单元,所述调用栈信息包括对所述应用的所述第二实例的执行状态的周期性捕捉;确定从所述应用的所述第二实例接收到的所述调用栈信息与多个成功跟踪之间的相似性;以及响应于肯定的确定,将所述第二远程设备添加到可能执行所述目标的设备群中。
附图说明
通过参考下面的具体实施方式,当参考附图时,将更加全面地理解本公开的上述和相关目的、特征和优点,其中:
图1是根据示例实施方式的网络环境的示意图;
图2是调用栈视觉化;
图3是描绘用于周期性捕捉和传送调用栈信息的方法的实施方式的流程图;
图4是描绘用于收集和比较多个远程设备的调用栈信息的方法的实施方式的流程图;
图5是描绘用于响应对于接收到的调用栈信息的分段(segment)关联的识别的方法的实施方式的流程图;以及
图6是适用于在所述的各种实施方式中使用的计算系统的框图。
清楚起见,不是任何元件可以在任何图中被标注。附图不旨在按比例绘制。各个附图中相似附图标记和指示表示相似的元素。
具体实施方式
价格便宜的软件应用可用于各种计算平台。应用用户可以支付少量的钱,或者在一些情况下根本不用付钱,而在用户设备上安装应用且运行应用。用户可以支付很少的金额来解锁应用的附加特征,或者升级到应用的高级版本。在一些情形中,应用呈现由应用创建者或第三方所供应的内容。在一些情形中,应用关联于另一产品而分发,例如,作为对事件或场所的市场营销搭配。通常,一些应用,有时被称为“apps”,与一个或多个后端服务器通信以获得更新、多方交互和附加内容。后端服务器可以基于各种参数来选择要递送到每个应用实例的内容。在一些实施方式中,应用的特定实例的具体执行模式被用于帮助选择内容。一些执行模式可以指示执行一个或多个特定事件的增加的可能性。如果执行模式启示特定应用实例可能执行目标事件,则可以选择内容来帮助引导应用的用户朝向目标。目标包括但不限于,用户与所选内容的交互、应用内购买、以及与应用的持续用户参与。在一个场景中,如果娱乐应用(即游戏)重复执行来自游戏中困难级别的函数调用,则应用的用户可能对怎样通过困难级别的提示感兴趣。
参看图1的概览,图示说明了网络环境的示意图。网络110使得在各个用户设备120和后端服务器130之间能够通信。每个用户设备120(a)–120(n)执行应用的相应实例124(a)–124(n)。应用实例124(a)–124(n)(通常被称为实例124)每个经由网络110传送调用栈信息到栈聚集服务器140。栈聚集服务器140在存储器134中存储接收到的信息。服务器140识别调用栈信息中的执行模式并且指定应用实例124的分段以基于所识别的模式接收特殊内容。内容服务器160将内容提供给应用实例124。应用实例124在指定的分段中从内容服务器160接收为该分段所选的特殊内容。
更具体地,网络110在用户设备120和后端服务器130之间传送信息。网络110由链接在一起以形成参与设备之间的一个或多个通信路径的各种网络设备组成。每个联网设备包括至少一个网络接口,用于传送和接收数据,通常作为一个或多个分组。网络接口将联网设备链接到网络110,由此通过网络110链接彼此。图示的网络110是互联网;但是,其他网络也可被使用。网络110可以由多个相连的子网络组成。网络110可以是诸如公司内联网的局域网(lan)、城域网(man)、广域网(wan)、诸如互联网的互联网络,或者例如adhocwifi对等网络的对等网络。网络110中设备之间的数据链路可以是有线链路(例如光纤、电缆、cat-5等等)和/或无线链路(例如基于无线电、卫星或微波)的任意组合。网络110可以是公共的、私有的、或者公共和私有网络的组合。网络110可以是任意类型和/或形式的数据网络和/或通信网络。
用户设备120能够经由网络110交换信息。用户设备120可以是被配置用于用户交互的任意种类的计算设备。用户设备120可以是,但不限于,膝上型计算机、桌面型计算机、平板计算机、电子平板、个人数字助理、智能电话、视频游戏设备、电视、电视附属盒子(也被称为“机顶盒”)、电话亭或便携计算机。通常,且无限制,用户设备120能够呈现内容给用户或者便利于内容向用户的呈现。用户设备120通常运行管理用户设备120上的软件应用的执行的操作系统。在一些实施方式中,向用户提供操作系统。参考图6所述的计算设备在一些配置中是适于用作用户设备120的计算设备。
后端服务器130包括栈聚集服务器140和内容服务器160,下面更详细描述。后端服务器130在一些实施方式中还可以包括其他促进系统,诸如作用为路由器或交换机、数据处理和过滤服务器、数据存储系统134、应用服务器等等的网络设备。后端服务器130可以位于单个位置或者跨多个位置分布,所述多个位置被网络110和/或第二主体网络连接。一些后端服务器130可以被虚拟化,即,后端服务器130可以作为虚拟机被托管在另一计算设备上。在一些情形中,一个或多个虚拟服务器可以由第三方云服务提供商托管。一些后端服务器130可以以定制硬件来实现。一些后端服务器130可以是通用计算设备,配置有特定、非通用的功能。参考图6描述的计算设备在一些配置中是适于用作后端服务器130的计算设备。
后端130包括数据存储134,其可以是任何设备或者设备集合,适于存储计算机可读数据。数据存储134设备可以是易失性或非易失性存储、附接于网络的存储、或者存储区域网络。数据存储134设备可以合并一个或多个大容量存储设备,其可以是共同定位或分布的。适于存储数据的设备包括所有形式的非易失性存储器、媒体和存储器设备,例如,半导体存储器设备,诸如eprom、eeprom、sdram和闪存存储器设备,磁盘,例如内部硬盘或可移动盘,磁光盘,以及cdrom、dvd-rom以及
用户可以操作用户设备120与各个后端服务器130经由网络110远程交互。在一些场景中,用户可以使用客户端设备120从后端服务器130,例如内容服务器160,请求一个或多个内容项。响应于由后端服务器130接收到的请求,所请求内容从一个或多个内容服务器160经由网络110传递到客户端设备120。客户端设备120随后渲染接收到的内容以便向用户呈现。用户可以这样与后端服务器130交互,使得请求、响应和后续请求的集合可以形成会话。用户的会话持续,直到用户停止请求内容项。在一些实施方式中,在传递最后的内容项之后的固定时间段内会话保持活动,给用户提供时间来占用内容和进行后续请求。在一些实施方式中,传递到客户端设备120的内容被配置为周期性对后端服务器130进行请求以保持会话是活动的。在一些实施方式中,会话是对一段时间内来自客户端设备120的请求的逻辑分组。
在一些实施方式中,每个用户设备120具有标识符,可用来区分各种用户设备实例。标识符可以是唯一的。在一些实施方式中,ip地址用作标识符。在一些实施方式中,制造商或供应商向用户设备120指派永久系统标识符,诸如duid、inid、imsi或min,在例如sim卡中记录,以便用作标识符。在一些实施方式中,用户提供用来识别用户设备120的信息。在一些实施方式中,标识符被提供给用户设备120且存储在用户设备中,例如,作为cookie。当用户设备120与后端服务器130交互时,用户设备120可以向服务器130提供存储的标识符。在一些实施方式中,所提供的用于在用户设备120上存储的标识符是任意或随机选择的数字或字符串。在一些实施方式中,后端服务器130维护序号;对于每个与用户设备120的首次交互,服务器130发送该序号给新遇到的用户设备120作为标识符,然后将该序号增加某个固定或动态量。在一些实施方式中,所提供的用于在用户设备120处存储的标识符是用户设备120和后端服务器130之间的首次交互的日期和时间的函数。在一些实施方式中,每个应用实例124接收其自己的标识符,其并不附属于由相同主机用户设备120上的其他应用所使用的标识符。在一些实施方式中,所提供的用于在用户设备120上存储的标识符不具有其他含义,除了它是唯一分派给用户设备120(或者在用户设备120上执行的应用124)的特定实例使得在线上或线下,该标识都无法识别用户个人身份,或与之相关联。
用户设备120执行各种软件应用。在一些实施方式中,一个或多个软件应用用于周期性生成状态信息以及周期性传送该状态信息到后端服务器130。在一些实施方式中,状态信息是用于特定应用实例124的调用栈信息。在一些实施方式中,调用栈信息表示应用当前执行状态的快照。参考图2更详细描述调用栈信息,图2是调用栈信息的表示。特定应用实例124可以通过捕捉调用栈信息而周期性生成状态信息并将该状态信息传送到后端服务器130。所传送的信息可以与该应用实例124的标识符相关联,但不需要包括有关用户的任何个人身份信息。参考图3来详细描述调用栈信息的传输,图3是描绘用于周期性捕捉和传送调用栈信息的方法的实施方式的流程图。下面更详细描述图2和3。在一些实施方式中,用户可以选择选项来禁用状态信息到后端服务器130的传输。
栈聚集服务器140是后端服务器130,后端服务器130被配置为经由网络110从各种用户设备120接收调用栈信息。在一些实施方式中,栈聚集服务器140处理调用栈信息,例如基于规则集合过滤掉一些信息和/或从调用栈信息中识别发送应用实例124是否已经执行了特定函数或事件。在一些实施方式中,栈聚集服务器140在数据存储134中记录所有或一些接收到的调用栈信息。在一些实施方式中,栈聚集服务器140与一个或多个附加栈聚集服务器140相结合工作。在一些实施方式中,多个栈聚集服务器140访问共享信息存储,例如数据存储134。在一些实施方式中,栈聚集服务器140比较接收到的调用栈信息与存储的调用栈信息并识别任何相似性。下面描述的图4是描述用于收集和比较多个远程设备的调用栈信息的方法的实施方式的流程图。
通常,栈聚集服务器140被配置为从用户设备120(例如用户设备120(a))接收调用栈信息并且比较接收到的调用栈信息与之前从其它用户设备120(例如用户设备120(b)–120(n))接收到的聚集的调用栈信息。更具体地,聚集的调用栈信息可以被划分为源用户设备120的两个或更多子组(称为“分段”)。在一些实施方式中,组是基于从比较结果中识别的相似性而划分的,使得用户设备120可以被认为是一个分类或另一分类的一部分,取决于栈聚集服务器140从各个用户设备120所接收到的调用栈信息的相似性。在一些实施方式中,组是基于附加因素而被划分的。在一些这样的实施方式中,附加因素包括应用实例是否完成其它目标,诸如达到特定游戏等级或完成应用内购买。在一些实施方式中,分段是通过将聚类算法施加于接收到的调用栈信息而生成的,例如层级聚类算法。
在一些实施方式中,调用栈信息专用于应用,使得只有执行应用的实例124的用户设备120将提交调用栈信息以用于比较。如果特定分段中存在为用户设备120保留的特殊动作,栈聚集服务器140或另一后端服务器130,诸如内容服务器160,可以响应于确定用户设备120属于特定分段而执行特殊动作。在一些实施方式中,特殊内容可以被传递到落入特定分段内的用户设备。在一些实施方式中,多等级游戏应用可以确定在特定难度重复调用特定函数的用户可能从怎样前进到下一等级的提示中受益;响应于该确定,用户的应用实例可以接收包含提示的特殊消息,或者邀请接受者购买该提示。下面描述的图5是描绘用于接收调用栈信息、识别接收到的调用栈信息的任何分段关联、以及如果源被识别为特定分段的一部分,则指定接收到的调用栈信息的源以便接收特殊内容的方法的实施方式的流程图。
参看图2的概览,图示说明的是调用栈视觉化200。调用栈可以被结构化为包含子例程状态信息的数据。调用栈快照由用于应用的每个线程在给定时刻的栈帧组成。调用栈中的每个栈帧对应于对还没有用返回终止的子例程的调用。在一些实施方式中,应用的作者在工具库(instrumentationlibrary)中进行链接,所述工具库以规则间隔捕捉应用的调用栈的跟踪。在一些实施方式中,操作系统自身捕捉应用的周期性调用栈信息。在一些实施方式中,调用栈信息表示应用当前操作状态的快照,例如哪些线程已经调用了哪些函数并且在进行快照时正在等待所述函数完成执行。表示中的信息可以被归一化。在一些实施方式中,调用栈信息是线程标识符、对象标识符、和方法名称的集合。在一些实施方式中,调用栈信息被表示或存储作为对象名称以及方法名称的数组或链表。
参看图3的概览,图示说明的是描绘用于周期性捕捉和传送调用栈信息的方法的实施方式的流程图。在方法300中,用户设备120处的栈信息收集模块在阶段310捕捉正在执行的应用的调用栈信息,且在阶段320,生成和存储所捕捉的调用栈信息的本地表示。模块以周期间隔重复阶段310捕捉和阶段320存储,如箭头330所指示。在生成至少一个调用栈的表示之后,模块在阶段340一起分批处理捕捉到的调用栈信息的一个或多个表示的集合,且在阶段350经由网络110传送分批的调用栈信息的集合到后端服务器130。栈信息收集模块可以是在用户设备120中实现的例如asic的硬件电路,或者可以是由用户设备120的操作系统或由链接到应用实例124中的软件库来提供的软件模块。在一些实施方式中,向软件应用的作者提供软件库以包括在应用中,并且应用实例124使用一个或多个库指令来调用栈信息聚集模块。
详细参看图3,方法300包括调用栈信息的周期性捕捉(阶段310)和捕捉到的调用栈信息的本地表示的生成(阶段320)。
在阶段310,用户设备120处的栈信息收集模块捕捉调用栈信息。如参考图2所述,调用栈指示应用的每个线程的状态。在一些实施方式中,用户设备120处的栈信息收集模块在阶段310通过调用调试函数而捕捉正在执行的应用的调用栈信息。该函数的结果是调用栈信息,例如跟踪或跟踪转储(tracedump)输出。在一些实施方式中,调用栈信息是通过对输出应用执行的状态的操作系统指令的调用而捕捉的。在一些实施方式中,调用栈信息是通过对程序执行环境(例如调试程序或perl解释程序)或输出应用的执行的状态的虚拟机(例如java虚拟机)指令的调用而捕捉的。调用栈生成指令包括,但不限于:java中的“jstack”;perl中的“caller”;php中的“debug_backtrace”;linux中的“backtrace”;安卓(android)中的“android::callstack”;.net中的“environment.stacktrace”和“traceeventcache.callstack”;以及由mscorlib.dll库来提供的c++中的“stacktrace”。
在阶段320,栈信息收集模块处理调用栈信息并生成捕捉到的调用栈信息的表示,其随后存储在用户设备120本地的存储器中。调用栈信息的本地表示可以在一些实施方式中被结构化为对象名称和方法名称的数组或链表。在一些实施方式中,表示的结构包括层级数据。在一些实施方式中,在阶段320,调用栈收集模块过滤掉没有信息量的函数调用。在一些实施方式中,当足以知道高等级函数被调用时,高等级函数所调用的低等级函数被过滤器移除。也就是,如果调用是在屏幕上绘制按钮,并且足以知道该按钮已经被绘制,则没有必要确切知道按钮是怎样被绘制的,且过滤器可以省略绘制按钮时涉及的低等级调用。在一些实施方式中,本地表示被压缩。
重复调用栈信息捕捉和存储阶段310和320,如箭头330所指示。在一些实施方式中,在每十分之一秒(或更小)一个迭代到每六十秒(或更多)一个迭代的范围中,以规则周期间隔重复这两个阶段。在一些实施方式中,周期间隔是固定的。在一些实施方式中,周期间隔是由应用的作者来设定的。在一些实施方式中,周期间隔是变化的,例如以随机间隔长度或者以例行调整以避免性能影响的间隔长度。
在阶段320的调用栈信息的一个或多个表示生成并存储之后,栈信息收集模块一起分批处理信息(阶段340)并且传送分批的调用栈信息的集合到后端服务器130(阶段350)。在一些实施方式中,在阶段340一起分批处理的迭代调用栈表示的数目基于预先确定的迭代数目,例如每五个迭代。在一些实施方式中,在阶段340一起分批处理的迭代调用栈表示的数目基于预先确定的时间长度,例如,每五分钟收集所有信息。在一些实施方式中,迭代330继续,直到处理器需要下降到低于阈值利用百分比。在一些实施方式中,迭代330继续,直到网络带宽利用率下降到低于阈值水平。在一些实施方式中,迭代330继续,直到网络质量高于阈值。在一些实施方式中,信息不通过诸如3g或4g网络连接的移动网络连接传送,而是保持直到wi-fi网络连接可用。
调用栈信息可以在阶段350使用任何合适网络协议,例如传输控制协议(tcp)、流控制传输协议(sctp)或用户数据报协议(udp)来传送。在一些实施方式中,调用栈信息使用文件传输协议(ftp)来传送。在一些实施方式中,调用栈信息使用在tcp、sctp或udp中的一个上分层的定制协议来传送。
参看图4的概览,图示说明的是描绘用于收集和比较用于多个远程设备的调用栈信息的方法400的实施方式的流程图。栈聚集服务器140从应用的多个“第一”实例124收集多个成功跟踪,每个实例在多个远程设备中的相应远程设备120上执行(阶段410)。在阶段410收集至少一些成功跟踪之后,栈聚集服务器140从在远程设备120上执行的应用的“第二”实例124接收调用栈信息(阶段430)。栈聚集服务器140确定从应用的第二实例124接收到的调用栈信息与从第一应用实例中接收到的多个成功跟踪中的调用栈信息之间的相似性(阶段450)。栈聚集服务器140随后响应于阶段450处从应用的第二实例124接收到的调用栈信息与阶段410中收集的成功跟踪相似的肯定确定,将远程用户设备120添加到被预测为可能执行特定目标的设备群中(阶段470)。
更详细参看图4,方法400开始于栈聚集服务器140从应用的多个实例124收集多个成功跟踪,每个实例在多个远程设备中的相应远程设备120处执行(阶段410)。在阶段410的收集包括由栈聚集服务器140在阶段422从在第一远程设备120上执行的应用的第一实例124(例如参看图1,在用户设备120(a)上执行的应用示例124(a))接收调用栈信息以及在阶段424接收应用的第一实例124(a)已经执行了目标的指示符。栈聚集服务器140响应于该指示符,随后在阶段426聚集接收到的导致执行目标的调用栈信息并且将聚集的信息看作成功跟踪。在阶段410的成功跟踪的收集在进行中,并且可以与栈信息的接收同时、或者在其之后继续,以便与成功跟踪相比较。
在阶段422,栈聚集服务器140从在第一远程设备120(a)上执行的应用的第一实例124(a)接收调用栈信息。远程用户设备120提交信息以由服务器140接收,例如,如参考图3中所述。在一些实施方式中,当栈聚集服务器140接收到调用栈信息时,服务器140存储接收到的信息,例如在存储134中。在一些实施方式中,栈聚集服务器140识别接收到的调用栈信息的源,例如与第一应用实例124(a)和/或第一远程设备120(a)相关联的标识符。在一些实施方式中,栈聚集服务器140聚集所接收到的信息和之前从相同应用实例124(a)和/或相同远程设备120(a)接收的信息。在一些实施方式中,栈聚集服务器140过滤接收到的信息,例如过滤掉没有信息量的函数调用。在一些实施方式中,当足以知道高级函数被调用,高级函数所调用的低级函数就会被过滤器移除。在一些实施方式中,过滤器动态识别在从所有应用实例接收的所有调用栈信息上一致的函数调用,并且移除所识别的函数调用信息。在一些实施方式中,对于在执行模式之间进行区分没有用的任何调用栈信息可以被过滤并且移除。在一些实施方式中,当栈聚集服务器140在阶段430从应用实例接收调用栈信息时,服务器140也将接收到的信息看作在阶段422的信息接收。
在阶段424,栈聚集服务器140接收应用的第一实例124(a)已经执行了目标的指示符。在一些实施方式中,指示符是来自应用实例124的明确指示符。在一些实施方式中,指示符是通过分析在阶段422接收到的调用栈信息而识别的。在一些实施方式中,目标是特定函数调用的执行(或函数调用的组);在一些这样的实施方式中,特定目标已被执行的指示符是特定函数调用(或函数调用的组)已被执行,其通过在接收到的调用栈信息中的函数的存在而被识别。在一些实施方式中,指示符是从后端服务器130接收的。在一些实施方式中,目标通过用户设备120和后端服务器130之间的交互而达成,其中服务器130(向栈聚集服务器140)报告成功完成目标的指示符。在一些实施方式中,指示符是接收到的调用栈信息是用于与成功完成该目标相一致的执行模式的。在一些这样的实施方式中,栈聚集服务器140使用聚类算法来确定接收到的调用栈信息是否类似于已经完成目标的应用实例的调用栈信息,如果是的话,指示该应用实例也已经完成了目标。在一些这样的实施方式中,聚类算法生成置信度分数且栈聚集服务器140使用高于预先确定的阈值的置信度分数作为应用实例已经执行了目标的指示。在阶段424,栈聚集服务器140确定应用的第一实例124(a)已经执行了目标,使得在阶段422接收的调用栈信息是与可能包括目标的执行的执行模式相一致的调用栈信息。
在阶段426,栈聚集服务器140响应于指示符,聚集所接收到的导致执行目标的调用栈信息,并且将聚集的信息看作成功跟踪。在一些实施方式中,聚集的调用栈信息和/或指示符被存储例如在存储134中。在阶段410收集的多个成功跟踪包括来自阶段426的用于多个应用实例124中每个应用实例的所聚集的调用栈信息。
在阶段430,在阶段410收集至少一些成功跟踪之后,栈聚集服务器140从在远程设备120上执行的应用的实例124(例如在用户设备120(b)上执行的应用实例124(b),如图1中所示)接收调用栈信息。与在阶段410处在多个实例中使用的应用的各个“第一实例”相比较,阶段430、450和470中的应用实例被描述为应用的“第二实例”。在一些实施方式中,应用的“第二实例”可能已经作为“第一实例”参与,而在其他实施方式中,“第二实例”可能被特定地从已经作为“第一实例”参与的实例中排除。栈聚集服务器140经由网络110从远程用户设备120接收调用栈信息。远程用户设备120提交信息以便由服务器140接收,例如如参考图3所述。在一些实施方式中,栈聚集服务器140过滤接收到的信息,例如过滤掉没有信息量的函数调用。在一些实施方式中,过滤器移除在从应用的所有实例接收的所有调用栈信息中一致的函数调用。在一些实施方式中,对于在执行模式之间进行区分没有用处的任何调用栈信息可以被过滤并移除。
在阶段450,栈聚集服务器140确定在阶段430从应用的第二实例124(b)接收的调用栈信息与在阶段410收集的多个成功跟踪中的调用栈信息之间的相似性。在一些实施方式中,相似性是通过向接收到的调用栈信息施加聚类算法来识别的。诸如层级聚类算法的聚类算法识别具有高相似程度的接收到的调用栈信息的聚类。一个或多个这样的聚类与成功跟踪相关联,且如果在阶段430从应用的第二实例124(b)接收的调用栈信息是与成功跟踪相关联的一个聚类分组的,则在阶段430接收的调用栈信息是用于可能是成功跟踪一部分的应用实例的。在一些实施方式中,相似的程度是在阶段450通过相似性分数来测量的,相似性分数必须高于阈值值以便在阶段430接收的调用栈信息被充分认为类似于调用栈信息的特定聚类。在一些实施方式中,栈聚集服务器140确定调用栈信息将该用户设备从可能执行目标的用户设备的分段中排除。也就是,在一些情形中,在接收到的调用栈信息和在阶段410中收集的多个成功跟踪中的调用栈信息之间不存在相似性。在一些实施方式中,该不相似性被记录作为替选的分段。
在阶段470,响应于在阶段450从应用的第二实例124接收到的调用栈信息与在阶段410收集的成功跟踪相似的肯定确定,栈聚集服务器140将远程用户设备120添加到预测为可能执行特定目标的设备群中(阶段470)。在一些实施方式中,例如在存储134中与用户设备的标识符相关联的记录被利用标签或标识符更新,所述标签或标识符指示用户设备托管处于可能执行特定目标的特定分段中的应用实例。
参考图5的概览,图示说明的是描绘用于对所接收到的调用栈信息的分段关联的识别作出响应的方法500的实施方式的流程图。栈聚集服务器140从在远程用户设备120上执行的应用的实例124接收调用栈信息,如参考图4所述。栈聚集服务器140在方法500的阶段530处基于从在远程设备上执行的应用接收的调用栈信息来识别远程设备120的分段关联。栈聚集服务器140在阶段540确定是否存在所识别的分段的特殊内容,并且如果是的话,在阶段550指定远程设备以便特殊内容的接收。栈聚集服务器140在阶段560存储接收到的调用栈信息和所识别的分段关联到知识库中,例如存储在数据存储134中。
更详细参看图5,栈聚集服务器140在方法500的阶段530基于从在远程设备上执行的应用接收到的调用栈信息识别远程设备120的分段关联。调用栈信息是由栈聚集服务器140以之前描述的方式从远程用户设备120接收的。也就是,用户设备120捕捉调用栈信息并经由网络110传送信息到栈聚集服务器140,其接收信息。栈聚集服务器140基于接收到的调用栈信息识别用户设备120的分段从属关系(affiliation),如参考图4所述。在一些实施方式中,栈聚集服务器140使用聚类算法来比较接收到的调用栈信息与之前接收到的信息,并且识别之前接收到的信息中最类似于新接收到的信息的子组。所识别的子组对应于群分段。栈聚集服务器140在阶段530基于这些比较识别用户设备的分段关联。
在阶段540,栈聚集服务器140随后确定是否存在所识别的分段的特殊内容。在一些实施方式中,如果所识别的特定分段可能执行特定目标,则可能存在指定用于该分段的内容,其中,该内容意味着帮助执行特定目标。在一些实施方式中,该内容是由特定软件应用的作者或供应商指定。在一些实施方式中,该内容由第三方(或者应第三方请求而)指定。在一些实施方式中,是否存在特殊内容的确定与调用栈信息的接收相分离。也就是,栈聚集服务器140可以在第一时间段接收调用栈信息,且随后在稍后的第二时间段确定存在用于所识别的分段的特殊内容。
在阶段550,如果栈聚集服务器140在阶段540确定存在特殊内容以便传递到在阶段530处识别的分段,则服务器140在阶段550指定远程设备以便特殊内容的接收。在一些实施方式中,栈聚集服务器140使得内容服务器160传送内容到用户设备120。在一些实施方式中,栈聚集服务器140设置标志或记录由内容服务器160所使用的指示,以用于识别特定内容的指定的接收者。在一些这样的实施方式中,栈聚集服务器140用与正在托管应用实例124的用户设备120相关联的记录来更新知识库。更新向内容服务器160指出,用户设备120应该接收该特殊内容。内容服务器160响应于该记录,随后经由网络110传送内容到用户设备。
在阶段560,栈聚集服务器140将接收到的调用栈信息和所识别的分段关联存储到知识库中,例如在数据存储134处。在一些实施方式中,该数据被以与参考图4描述的相同方式存储。
图6是适合于在实现这里所述的计算机化组件时使用的计算系统910的框图。概览来看,计算系统910包括至少一个处理器950以用于根据指令执行动作,还包括一个或多个存储设备970和/或975来存储指令和数据。图示说明的计算系统910包括经由总线915与存储器970和至少一个网络接口控制器920通信的一个或多个处理器950,至少一个网络接口控制器920具有用于连接到外部网络设备924,例如参与网络(诸如图1中所示的网络110、160和180)的网络接口922。一个或多个处理器950还经由总线915与一个或多个i/o接口930上的任何i/o设备以及任何其他设备980通信。所图示说明的处理器950合并,或直接连接到,高速缓存存储器975。通常,处理器将执行从存储器接收到的指令。
更详细地,处理器950可以是处理指令的任何逻辑电路,指令例如是从存储器970或高速缓存975中取出的指令。在许多实施例中,处理器950是微处理器单元或专用处理器。计算设备910可以基于能够按这里所述操作的任何处理器或者处理器的组。处理器950可以是单核或多核处理器。处理器950可以是多个处理器。
存储器970可以是适用于存储计算机可读数据的任何设备。存储器970可以是具有固定存储的设备或者用于读取可移动存储媒体的设备。存储器970可以包括任何形式的非易失存储器、媒体和存储器设备、半导体存储器设备(例如eprom、eeprom、sdram和闪存存储器设备)、磁盘、磁光盘、和/或光盘(例如cdrom、dvd-rom以及
高速缓存存储器975通常是计算机存储器的形式,所述计算机存储器布置在靠近处理器950,例如用于快速读取时间。在一些实施方式中,高速缓存存储器975是处理器950的一部分,或者与处理器950在相同芯片上。在一些实施方式中,存在多个等级的高速缓存975,例如l2和l3高速缓存层。
网络接口控制器920经由网络接口922管理数据交换。网络接口控制器920控制网络通信的osi模型的物理和数据链路层。在一些实施方式中,一些网络接口控制器的任务是由处理器950控制的。在一些实施方式中,网络接口控制器920是处理器950的一部分。在一些实施方式中,计算系统910具有多个网络接口控制器920。在一些实施方式中,网络接口922是物理网络链路的连接点,例如rj45连接器。在一些实施方式中,网络接口控制器920支持无线网络连接且接口端口922是无线接收机/发射机。通常,计算设备910经由到网络接口922的物理或无线链路来与其他计算设备924交换数据。在一些实施方式中,网络接口控制器920实现诸如以太网的网络协议。
其他计算设备924经由网络接口922(有时被称为“端口”或“物理端口”,以便区分协议级端口)连接到计算设备910。其他计算设备924可以是对等计算设备、网络设备、或者具有网络功能的任何其他计算设备。在一些实施方式中,其他计算设备924是诸如集线器、桥接器、交换机、或路由器的网络设备,使得其他计算设备924将计算设备910连接到诸如互联网的数据网络。
在一些使用中,i/o接口930支持输入设备和/或输出设备(未示出)。在一些使用中,输入设备和输出设备被集成到相同硬件中,例如在触摸屏中。在一些使用中,诸如在服务器场境下,没有i/o接口930或不使用i/o接口930。在一些使用中,附加的其他组件980与计算机系统910通信,例如经由通用串行总线(usb)连接的外部设备。
其他设备980可以包括i/o接口930、外部串行设备端口以及任何附加协处理器。在一些实施方式中,计算系统910包括接口(例如通用串行总线(usb)接口),用于连接输入设备(例如键盘、麦克风、鼠标或其他指示设备)、输出设备(例如视频显示器、扬声器、可刷新盲文终端或打印机)、或附加存储器设备(例如便携闪存驱动器或外部媒体驱动器)。在一些实施方式中,i/o设备被合并到计算系统910中,例如平板设备上的触摸屏。在一些实施方式中,计算设备910包括附加设备980,诸如协同处理器,例如算术协同处理器,其可以利用高精确性或复杂计算来协助处理器950。
本主题的实施方式以及在本说明书中所述的操作可以用数字电子电路来实现,或者用在有形介质、固件、或硬件上体现的计算机软件来实现,包括本说明书中公开的结构及其结构等价物,或者它们一个或多个的组合。本说明书中所述的主题的实施方式可以实现为体现在有形介质上的一个或多个计算机程序,即计算机程序指令的一个或多个模块,在一个或多个计算机存储介质上编码,以便由数据处理装置执行或者控制数据处理装置的操作。计算机存储介质可以是计算机可读存储设备、计算机可读存储衬底、随机或串行存取存储阵列或设备、或者它们中一个或多个的组合,或者包括在其中。计算机存储介质还可以是一个或多个独立部件或介质(例如多个cd、盘、或者其他存储设备),或者包括在其中。计算机存储介质可以是有形且非暂时的。
本说明书中所述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。过程和逻辑流程还可以由专用逻辑电路来执行,且装置也可以被实现为专用逻辑电路,专用逻辑电路例如fpga(现场可编程门阵列)或asic(专用集成电路)。
尽管本说明书包含许多特定实现细节,这些不应该被解释为对任何发明的范围或可以要求的范围的限制,而是作为对特定发明的特定实施方式的具体特征的描述。在分立的实施方式的场境中的本说明书中所述的某些特征还可以在单个实施方式中组合实现。反之,在单个实施方式的语境中所述的各种特征也可以在分别的多个实施方式中或者以任何合适的子组合的方式来实现。而且,尽管特征可以如上被描述为以某些组合来动作且甚至最初就是这样被要求保护的,但来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中剥离,且所要求保护的组合可以被导向子组合或子组合的变型。
对“或”的引用可以被解释为包括,使得使用“或”描述的任何术语可以指示单个、多于一个、或所有所描述的术语中的任何术语。标签“第一”、“第二”、“第三”等等不必意味着指示次序且通常仅仅用来在相似或类似的项目或元素之间进行区分。
因此,已经描述了本主题的特定实施方式。其他实施方式也在所附权利要求的范围内。在一些情况下,权利要求中所述的动作可以以不同次序来执行且仍旧获得所需的结果。此外,附图中所描绘的过程不必要求所示的特定次序或顺序的次序来获取所需结果。在某些实施方式中,可以利用多任务或并行处理。