CN109154937A - 查询响应的动态流式传输 - Google Patents

查询响应的动态流式传输 Download PDF

Info

Publication number
CN109154937A
CN109154937A CN201680085032.3A CN201680085032A CN109154937A CN 109154937 A CN109154937 A CN 109154937A CN 201680085032 A CN201680085032 A CN 201680085032A CN 109154937 A CN109154937 A CN 109154937A
Authority
CN
China
Prior art keywords
inquiry
piecemeal
result
partition strategy
received
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
CN201680085032.3A
Other languages
English (en)
Inventor
埃里克·范登堡
艾俊·伊耶
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.)
Cisco Technology Inc
AppDynamics LLC
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN109154937A publication Critical patent/CN109154937A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Fuzzy Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

不是照原样处理查询,而是所述查询被分块或者分解成较小分块查询的序列并且那些较小查询的分块结果被流式传输回给请求者。对所述查询进行分块并流式传输所述分块结果可以通过返回一些直接结果以供显示来基本上减少用户在运行查询时达到值的时间,所述直接结果在每个分块查询运行时被提炼并最终收敛于完整结果。

Description

查询响应的动态流式传输
背景技术
为了追求最高水平的服务性能和用户体验,世界各地的公司正在通过增加对数字技术和信息技术(IT)服务的投资来参与数字化转型。通过利用由因特网和万维网提供的互连计算机网络的全球系统,公司能够向其客户提供不断增加的web服务。可以通过使用多个服务和应用来处理给定交易的web应用来提供web服务。应用可以分布在若干互连机器(诸如服务器)之上,从而使得提供服务的机器的拓扑结构更难以跟踪和监控。
发明内容
公开了动态查询分块和分块查询的结果的流式传输的实施方式的示例。
在一个方面中,一种用于监控业务交易的系统被公开为包括:处理器;存储器;以及存储在所述存储器中的一个或多个模块。所述模块包括能够由处理器执行以执行以下操作的指令,所述操作包括:从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;确定是否对所接收到的查询进行分块以生成多个分块查询;基于所述确定,使用查询分块策略来对所接收到的查询进行分块以生成所述多个分块查询;处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的总体结果的一部分;并且将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端,以在完成对所述分块查询的处理时显示所述结果,以便使得针对所接收到的查询的所述总体结果被一部分接一部分地显示,直到在完成对所有所述分块查询的处理时收敛于所述整体结果为止。
可以各种方式实施所述系统以包括以下特征中的一个或多个。例如,所述一个或多个模块能够由处理器执行以通过估计用于返回针对所接收到的查询的所述总体结果的处理时间并且将所估计的处理时间与阈值进行比较来确定是否对所接收到的查询进行分块。所述一个或多个模块能够由处理器执行以通过执行以下操作来选择分块策略,所述操作包括:标识分块策略候选;为每个候选生成分数;以及基于所述分数从所述候选中选择所述分块策略。所述一个或多个模块能够由处理器执行以标识适于所接收到的查询的背景的所述分块策略候选。所述一个或多个模块可以能够由处理器执行以将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端,以按照完成对每个分块查询的处理的顺序显示所述结果。所述一个或多个模块可以能够由处理器执行以将针对给定分块查询的所述结果与下一个随后完成的分块查询收集在一起以使得所收集的分块查询的组合结果被显示。所述一个或多个模块可以能够由处理器执行以收集所述结果以使得所收集的分块查询的组合结果以取决于用于显示所述组合结果的图形的类型的不同方式被显示。所述图形的类型可以包括条形图、饼形图或时间线。所述一个或多个模块可以能够由处理器执行以确定要处理的所述分块查询的顺序。所述一个或多个模块可以能够由处理器执行以监控表示所述查询分块策略的性能的度量。所述一个或多个模块可以能够由处理器执行以基于所监控的度量来更新所述分块策略。表示所述查询分块策略的性能的所监控的度量可以包括用于处理每个分块查询的等待时间。表示所述查询分块策略的性能的所监控的度量可以包括:将所接收到的查询的所述总体结果一部分接一部分地显示与所显示的收敛的总体结果相比较有多准确的量度。
在另一方面中,公开了一种用于监控业务交易的方法。所述方法包括:从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;使用查询分块策略来对所接收到的查询进行分块以生成多个分块查询;处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的部分结果;将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端以使得来自对应的分块查询的所述结果被显示并聚合直到收敛于针对所接收到的查询的总体结果为止;以及监控所述分块策略的性能度量。
可以各种方式实施所述方法以包括以下特征中的一个或多个。例如,所述方法可以包括通过执行以下操作来选择所述查询分块策略,所述操作包括:标识分块策略候选;为每个候选生成分数;以及基于所述分数从所述候选中选择所述分块策略。所述方法可以包括确定要处理的所述分块查询的顺序。所述顺序可以包括并行处理所述分块查询中的至少两个。所述方法可以包括基于所监控的度量来更新所述分块策略。
在又一方面中,所公开的技术可以被实施为包含指令的非暂时性计算机可读介质,所述指令当由处理器执行时使得操作被执行。所执行的操作包括:从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;估计针对所接收到的查询的用于返回要显示的总体结果的等待时间;确定所估计的等待时间比指示可接受的用户体验的预先确定的阈值时间要长;使用查询分块策略来对所接收到的查询进行分块以生成多个分块查询;处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的部分结果;以及将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端以使得来自对应的分块查询的所述结果被显示并聚合直到收敛于针对所接收到的查询的总体结果为止。
可以各种方式实施所述非暂时性计算机可读介质以包括以下特征中的一个或多个。例如,可以基于所接收到的查询的内容自动地分配所述查询分块策略。所述指令在由处理器执行时可以使得包括监控所述分块策略的性能度量的操作被执行。所述指令在由处理器执行时可以使得包括基于所监控的性能度量来更新所述查询分块策略的操作被执行。
附图说明
图1A、图1B、图1C、图1D、图1E、图1F、图1G、图1H、图1I和图1J是示出用于动态地对一个或多个查询进行分块的示例性查询分块过程的流程图。
图2A和图2B表示并入查询分块架构的应用智能平台中的示例性分析系统。
图3是示出用于基于所接收到的查询自动地选择可用的查询分块策略中的一种的选择过程的过程流程图。
图4是示例性时间范围策略的过程流程图。
图4B是时间范围策略的示例性实施方式的框图。
图5A是示例性范围组策略的过程流程图。
图5B是范围组策略的示例性实施方式的框图。
图6A是示例性时间戳系列策略的过程流程图。
图6B是时间戳系列策略的示例性实施方式的框图。
图7A是示例性不同计数策略的过程流程图。
图7B是不同计数策略的示例性实施方式的框图。
图8A是示例性极限策略的过程流程图。
图8B是极限策略的示例性实施方式的框图。
图9A是示例性连续聚合组策略的过程流程图。
图9B是连续聚合组策略的示例性实施方式的框图。
图10A是示例性连续间隔策略的过程流程图。
图10B是连续间隔策略的示例性实施方式的框图。
图11A是示例性不同选择策略的过程流程图。
图11B是不同选择策略的示例性实施方式的框图。
图12是可以按照本专利文件中所公开的那样实施查询分块的示例性应用智能平台的框图。
图13是用于按照本专利文件中所公开的那样动态地对查询进行分块并流式传输分块查询的结果的示例性系统的框图,其包括关于图1-12所公开的过程。
图14是实施所公开的技术的示例性计算系统的框图。
具体实施方式
因特网和万维网已经实现了可用于几乎所有类型的业务的web服务的激增。由于支持web服务的基础设施的附随复杂性,维持最高水平的服务性能和用户体验以跟上web服务的增加正变得日益困难。例如,在网络架构中跨越不同的系统、工具和层拼合监控数据和记录数据可以是有挑战性的。此外,即使当可以获得数据时,也难以直接地连接事件链和因果关系。
为了维持最高水平的服务性能和用户体验,可以监控每个web应用以深入了解可能负面影响web应用的整体性能的信息。例如,可以检测包括通信瓶颈、通信故障的信息以及有关提供web应用的服务的性能的其他信息。当监控接触多个服务器的多个应用时,确定特定应用的性能常常可能是困难的。在应用节点的给定服务器或层级上的给定事件常常可能影响远程应用。手动地回故并处理多个服务器上的每一个应用的性能数据以检测导致问题的事件是极其费时的练习,这可能永不会产生对性能降级问题的适当解决方案。
本专利文件中所公开的技术提供了动态且高效的应用智能平台、系统、设备、方法以及包括非暂时性类型的计算机可读介质,所述计算机可读介质包含用于使包括处理器的机器执行本专利文件中所公开的各种操作以获得期望的应用智能数据的指令。具体地,所公开的技术提供对应用智能数据的用户查询的动态处理以动态地流式传输经处理的查询的结果,这减少了用户等待时间。
查询分块概述
当从用户接收到对具体应用智能数据的一个或多个查询时,根据包括与查询相关联的数据量的许多因素以及查询是否必须遍历存储设备和位置的多个层级,在完成结果被呈现给用户之前的等待时间可能是漫长的。延长的等待时间可能使得用户中止查询从而不愿意或无法等待完成结果。此外,处理查询的系统可能由于延长的处理时间而超时或停止。在这两种情况下,均未给用户提供结果,并且让用户不满意。
根据所公开的技术,当通过用户界面(UI)接收到查询时,不是照原样处理查询,而是动态地处理查询以将每个查询分解成较小“分块”查询的序列并且将较小查询的序列的“分块结果”动态地流式传输回到用户界面。所公开的分块查询的动态处理和分块结果的流式传输可以提供许多优点,包括基本上减少在UI上将结果显示给用户之前的等待时间。不是处理所接收到的查询并等待直到获得完成结果为止,而是所公开的技术在来自分块查询的较小分块中提供基本上直接的结果,所述结果在每个“分块”查询被处理时被不断地提炼并最终收敛于完整的完成结果。
所返回的结果被动态地流式传输并通过UI显示给用户,并且所显示的结果在每个分块被处理时进行更新。例如,长时间段内的时间系列图将示出数据随着每个分块被处理而递增地出现在图中,而不是等待完整结果一次示出。在每次显示更新时递增地示出的数据是所有先前返回的结果的累积。因此,在每次更新时显示的数据仅表示部分结果直到所有分块都被处理并且对应结果被累积为止。可以对查询进行分块以与总体完成结果相比较以每次递增准确地表示总体数据。
可以动态地分析每个查询以选择适于该查询的最好策略。例如,可以基于查询中指定的数据类型自动地选择查询分块策略。时间系列查询(其中x轴是具有某个范围成组的时间维度)可以使用将查询分成N个查询(每个时间范围各一个)的基于时间的分块策略来分块,在该每个时间范围之上累积被独立地计算并返回给UI。可以通过将数据范围分成较小组来对基于其他数据范围(诸如货币金额、交易数量、客户数量等)的查询进行分块。对于x轴是范畴维度(categorical dimension)(例如,“用户体验”)的查询,可以按范畴维度(对于完整结果)或者按时间维度(对于部分结果)来划分查询,并且可以基于从先前的分块查询处理收集的预定义规则或运行时性能提示来使用不同的策略。在一些实施方式中,可以使用基于每个分块可以被处理并且结果返回到UI有多快来分解查询的策略来对查询进行分块。查询的部分可以被快速地处理,可以被分解成单独的分块并进行处理,然而其他更费时的分块被分解成不同的分块。以这种方式,在较长费时的分块正在被处理的同时可以返回来自被处理的分块的结果以供显示。因此给用户提供了基本上直接的结果,而不是必须等待整个查询被处理。
所公开的技术对于宽的查询分块策略集而言是可扩展且灵活的。在一些实施方式中,可以串行或并行处理不同的分块。在一些实施方式中,可以对多个查询应用分块策略并且结果在多个查询之上一个分块接一个分块地、动态地流式传输,而不是单独地对每个查询进行分块。在一些实施方式中,可以容易地将多个查询分块策略组合在一起。在一些实施方式中,可以在不同的后端数据储存器上适当地调整分块策略。
此外,可以监控关于分块策略的有效性的度量以使用机器学习来评估并提炼不同的策略。基于所监控的关于分块策略的有效性的度量,可以提炼并改进将来的分块策略以增强策略的有效性以及关于针对给定查询要应用哪一种策略的决定。通过经由机器学习改进分块策略,查询分块的每次迭代可以产生改进的结果。
查询分块技术
图1A、图1B、图1C、图1D、图1E、图1F、图1G、图1H、图1I和图1J是示出用于动态地对通过UI客户端接收到的一个或多个查询进行分块并且将经处理的查询的结果流式传输回到UI客户端的示例性查询分块过程100和160的流程图。关于图1A和图1H所示和所述的过程100和160表示两个示例性动态查询分块和结果流式传输过程。图1B、图1C、图1D、图1E、图1F、图1G、图1I和图1J表示可以单独地或者按照任何数量的组合而执行的过程100和160的附加过程和子过程。因此,虽然可能,但是并不需要一起执行关于图1B、图1C、图1D、图1E、图1F、图1G、图1I和图1J所示和所述的所有附加过程和子过程,并且任一个图中所示的过程可以与任一个或多个其他图中的过程组合。
查询分块过程100可以由在控制器UI服务中支持结果的异步流式传输的分析系统来执行。在下面关于图2A和图2B描述了根据所公开的技术的查询分块架构。查询分块过程100包括用于从UI客户端接收查询或查询集的接收过程102。所接收到的查询或查询集可以是针对通过对给定应用环境的不断监控而获得的任何数量的应用智能数据的。
对所接收到的查询或查询集执行分块确定过程104以确定是否将查询或查询集分解成查询的较小分块。如图1B中所示,分块确定过程104可以包括估计针对照原样处理的所请求的查询或查询集返回完成结果的等待时间的等待时间估计过程122。当在阈值确定过程124确定针对所请求的查询或查询集返回完成结果的估计等待时间满足阈值时,确定要对所请求的查询或查询集进行分块。当在阈值确定过程124确定针对所请求的查询或查询集返回完成结果的估计等待时间未能满足阈值时,确定要照原样处理所请求的查询或查询集。例如,阈值等待时间表示分析系统是否在查询被照原样处理时将花费太长时间来返回用于处理查询的完成结果或者分析系统将由于长处理时间而停止。用于确定针对查询返回完成结果的等待时间是否太长的阈值时间段可以基于可接受的用户体验,所述可接受的用户体验可以基于行业标准被预先确定或者由用户定制。例如,阈值等待时间可以默认被设置在30秒、1分钟、2分钟等或者由用户定制。因此,在一个示例性实施方式中,当返回所请求的查询或查询集的完成结果的估计等待时间满足超过30秒、超过1分钟、超过2分钟等的阈值时,分块确定过程104的结果是为了执行查询分块。
在一些实施方式中,可以基于所估计的等待时间是否未能满足小于30秒、小于1分钟、小于2分钟等的阈值来执行等待时间阈值确定过程124。当所估计的等待时间不小于阈值等待时间时,则确定要对所请求的查询或查询集进行分块。因此,可以基于所估计的等待时间比阈值等待时间更长或更短来触发对执行查询分块的确定。
当分块确定过程104确定应该照原样处理所接收到的查询或查询集时,在过程106照原样处理所接收到的查询或查询集。(照原样)处理的查询的结果在过程108被显示给UI客户端。在108显示的结果是在(照原样)处理查询的等待时段之后立即显示的完成结果。
当确定要对所接收到的查询或查询集执行查询分块时,在分块策略选择过程110选择分块策略或分块策略集。如图1C中所示,分块策略选择过程110可以包括:在过程126标识适当的(多个)分块策略候选;在过程128为每个分块策略候选生成分块分数;在过程130基于分块分数标识最佳分块策略或分块策略的组合。
分数是通过确定用于对查询进行分块的分块策略的最佳性的分块策略来分配的。因为针对特定查询等价类别调整来分块策略,所以确切的标准可以相应地变化。
可以基于将查询与等价类别(其与可用的分块策略相关联)关联来执行标识分块策略候选。每个查询分块策略被设计为对可以由查询的主要分析函数部分标识的特定类别的查询起作用。例如,查询等价类别可以是基于如从原始查询中直接地解析出的时间系列、范围、分组依据、其他分析函数及其适用的参数范围的。
用于候选分块策略的分数是通过基于可用性度量预测候选将如何执行来计算的。可以基于从早期查询分块处理获得的训练数据来预测这些可用性度量。可用性度量的示例包括以下各项:
1.实现值的时间指示客户必须等待多久才能看到值的结果。这可以包括度量,诸如到第一分块结果的时间、到最后分块结果的时间、到下一个分块结果的平均时间、分块结果的频率均匀性。对于实现值的时间,更频繁地且更快地返回分块结果的策略会得分更高。例如,当客户对于第一分块和每个后续分块直到最后分块为止必须等待1分钟的分块策略时,那么策略将得分低于预测客户对于第一分块必须等待10秒而对于每个后续分块必须等待30秒的替代分块策略。
2.值收敛指示分块结果收敛到完成结果的程度。这可以通过在分块结果被流式传输回到调用者的每个点处用完成结果计算每个累积分块结果中的准确度来测量。在最后分块中直到最终完成结果都具有非常差的准确度的策略会比具有更高准确度趋势的其他替代策略得分更低。可以以不同方式计算准确度,所述不同方式包括:(a)在完成查询结果内正确地匹配的累积分块结果的百分比。这对于返回完成部分结果的一些策略来说是相关的;以及(b)与完成查询结果相比较分块结果之间的差的百分比。
以上可用性度量被进一步加权以计算总体分块策略分数。可以用实验方法确定并基于客户反馈和可用性研究调整:确定达到值的时间与值收敛之间的折衷的确切加权。
此外,在一些实施方式中,可以在通过不同的策略的组成来定义策略时计算复合分数。例如,当对查询而言存在两个主要部分(诸如范围上的时间系列和子聚合)时,那么组合在查询的每个主要部分上表现最好的相关时间系列和范围分块策略可能是更优的。可以将查询分解成相应导出的部分并且可以在所导出的查询上计算相应的分块策略分数以及可以聚合所得到的分数的加权以获得复合分块策略分数。
如图1D中所示,标识适当的(多个)分块策略候选是可以基于所接收到的查询或查询集的性质或内容的。例如,可以在选择适当的(多个)分块策略候选时考虑到以下因素:数据类型或范畴(即,时间、金钱或不同的单位量)、数据范围、分层存储等。可以存储预先确定的分块策略集并且可以将每个预先确定的分块策略预先映射到数据类型或范畴(即,时间、金钱或不同的单位量)、数据范围、分层存储等。在下面关于图3、图4A、图4B、图5A、图5B、图6A、图6B、图7A、图7B、图8A、图8B、图9A、图9B、图10A、图10B、图11A和图11B公开了查询分块策略的示例。
在过程112使用为所请求的查询或查询集专门地选择的一个或多个适当的查询分块策略来对所请求的查询或查询集进行分块。在过程分块查询过程114对所产生的分块查询进行处理。如图1E中所示,处理分块查询可以包括用于确定要处理的分块查询的顺序的确定过程134。可以以特定的顺序处理从查询分块过程获得的查询的分块以向最终用户提供最好的用户体验。可以在维持最好的用户体验时考虑许多因素。例如,可以优先以最快处理时间的顺序来处理分块。以这种方式,可以几乎立即给用户提供来自处理的第一分块的结果的初始显示,然后是累积被处理的后续分块的每个附加结果的更新结果。除了用于每个分块的处理时间之外或者作为其替代方案,可以考虑所显示的结果在每次更新时相对于总体完成结果的准确度。以这种方式,每当向用户显示结果时,所显示的结果当与最终完成结果相比较时不会误导。可以生成如图1H、图1I和图1J中进一步描述的那样表示所显示的数据在每次更新时的准确度的度量。所生成的度量可以用于使用机器学习来更新或者改进查询分块策略。
此外,可以以任何顺序处理分块查询。例如,如图1F中所示,确定要处理的分块查询的顺序可以包括用于串行处理分块并且将每个分块的结果流式传输到UI客户端的串行处理136。替代地,确定要处理的分块查询的顺序可以包括用于并行处理至少一些分块的并行处理138。在一些实施方式中,一些分块被并行处理,而其他分块被串行处理。在一些实施方式中,可以并行处理所有分块。因为每个分块可能不需要相同的时间量来处理,所以不同的分块可以在不同的时间完成,并且可以以分块完成的顺序将完成分块的结果返回到UI客户端。可以基于所期望的用户体验来修改结果被返回并显示给UI客户端的顺序。例如,可以不按顺序(即,不按照分块被处理的顺序)显示结果以维持所显示的结果在每次更新时的准确度。在另一示例中,可以不按顺序(即,不按照分块被处理的顺序)显示结果以提供一致或稳定的显示更新速率。以这种方式,用户可以在一致的刷新速率而不是一系列随机刷新时间中体验对所显示的结果的更新。
来自经处理的分块的结果在过程116被收集以在必要时累积结果,在过程118被动态地流式传输到UI客户端,并被显示。查询的经处理的分块的结果被动态地流式传输。例如,当查询的初始分块被处理并且对应结果被流式传输时,初始结果在过程120被显示给UI客户端。当多个分块最初被处理时,多个分块的结果在过程116处被收集在一起并且在过程118处流式传输。具体地,可能需要累积结果以提供更新的结果。此外,可以在过程140以适于用于显示结果的图形的类型的方式一起收集结果。例如,可能需要与用于条形图或线形图的结果不同地收集用于饼形图的结果。可以以增强或者维持用户体验水平(诸如减少更新之间的等待时间并且在每次更新期间提供总体完成结果的准确表示)的其他方式累积分块查询的结果。
在过程120显示分块查询的动态地流式传输的结果的收集结果。与收集过程116类似且一致,可以如图1H中所示地提供显示过程120来增强或者维持用户体验水平。例如,可以以适于用于显示结果的图形的类型的方式显示并更新或者刷新收集数据。例如,可能需要与用于条形图或线形图的结果不同地刷新用于饼形图的结果。甚至对于具体图形类型,也可以部署许多不同的刷新策略。例如,可以刷新饼形图以在每次更新期间显示饼形的所有片的数据(其包括来自分块查询的附加处理的结果和累积的结果)。替代地,可以刷新饼形图以首先显示饼形图的一个或多个特定片的数据,然后在后续更新中显示其他片的数据。在更新期间,可以使饼形图的各片的大小维持在一致水平以在每次更新期间显示当与所有分块查询的整体完成结果相比不会误导或不准确的结果。对于时间线显示,最初显示的结果可以用于最早时间分片或范围,而每个后续更新显示后续时间分片或范围。此外,为了增强或者维持用户体验水平,显示过程120可以包括阻止某些较早累积的结果以在稍后的时间显示或者与一个或多个后续累积的结果一起显示。
在一些实施方式中,可以将查询分块度量监控和机器学习添加到查询分块过程100以连续地更新并改进改进总体用户体验的查询分块策略。图1I使用所监控的查询分块度量来表示并入查询分块度量监控和机器学习的示例性查询分块过程160。图1I中的过程160与图1A中的过程100基本上类似,但是添加了查询分块监控过程144和机器学习过程146。如图1I中所示,查询分块监控过程144的结果由机器学习过程146使用以向分块策略选择过程110提供反馈回路。
关于图1J进一步了度量监控过程144。每当如上面关于图1A、图1B、图1C、图1D、图1E、图1F、图1G和图1H所描述的那样对给定查询或查询集进行分块并且动态地流式传输、收集和显示对应结果时,可以监控指示所使用的一个或多个分块策略的有效性的某些度量。如图1J中所示,监控度量可以包括在过程148监控用于在每次更新期间显示结果的等待时间。在过程148监控等待时间不仅可以包括用于每次显示更新的个体等待时间,而且还包括其他时间相关度量。例如,可以监控从一次更新到另一次更新的等待时间的一致性或变化。另外,可以监控每个分块查询的估计等待时间和实际等待时间之间的差异。可以监控可能影响用户体验的其他时间相关度量。此外,可以基于给定用户的期望用户体验来调整或者定制所监控的度量。例如,一个用户可能更喜欢体验从一次更新到另一次更新的等待时间的一致速率。不管显示更新之间的等待时间的波动如何,不同的用户可能更喜欢按照某个顺序接收结果。
可以监控除时间相关度量以外的其他度量。例如,监控度量可以包括:在过程150,将显示结果在每次更新时的准确度与来自所有分块的最终显示结果相比较。另外,可以监控在每次更新期间显示的结果的顺序,并将其与期望的用户体验设置进行比较。其他度量可以包括监控查询在存储的不同层级和季节性条件(诸如分块查询被执行的一天中的具体时间、一周中的具体天、一月中的具体周、一年中的具体月等)下对数据的影响。
如图1K中所示,所监控的查询分块度量可以由机器学习过程146使用以在过程152更新分块策略或者在过程154更新分块分数。可以在110将更新的分块策略和更新的分块分数反馈给分块策略选择过程以改进分块策略候选标识过程122和分块分数生成过程124。例如,可以修改用于时间系列查询的先前推荐的分块策略以创建更小或更大的时间范围分块。另外,可以基于可能影响它在下一个后续查询分块过程中被选择的分块策略的实际性能来更新针对给定查询分块策略生成的分数。
计算分块策略分数的能力可以取决于预测诸如查询处理时间和准确度收敛的各种度量。为了准确地执行预测,可以使用通过从先前执行的查询提供训练数据来建立的机器学习模型。机器学习模型可以包括各种特征,特征包括:(1)查询等价类别;(2)查询时间范围;(3)存储分层模型;以及(4)数据量。
观察和预测结果可以是查询响应时间。利用足够的训练数据,机器学习模型可以预测将来的查询处理时间。当分块框架驱动分块查询过程时,每个分块查询本身被添加到训练集中并且可以重新计算模型参数以改进评分机制。此外,也可以将非分块查询添加到训练集中,因为非分块查询可以类似于其他查询请求中的分块查询。类似地,还可以针对某些分块策略来预测值收敛。当预测值收敛时,训练数据可以基于原始查询的特征和分块策略参数,诸如分块的数量以及分块如何被分解,同时观察准确度收敛。
查询分块架构
在应用智能平台的分析系统中执行如包括过程100和160的本专利文件中所公开的动态查询分块和分块查询的结果的流式传输。如下面关于图12和图13进一步描述的,应用智能平台包括通信地链接到一个或多个代理的控制器。一个或多个代理被安装在机器(诸如执行要由应用智能平台监控的应用的应用服务器)上。一个或多个代理监控被监控的应用的性能数据的度量并且将所监控的性能度量发送到收集器以进行处理。最终用户可以通过由控制器服务的UI客户端与应用智能平台联接以针对所监控的性能度量数据提交对查询的请求。典型的性能度量数据包括每个业务交易的交易时间和在一定时间段内的平均交易时间。
图2A和图2B表示并入查询分块架构的应用智能平台中的示例性分析系统200和280。分析系统200和280并入查询分块架构以在控制器UI客户端中支持分块查询结果的异步流式传输。如图2A中所示,示例性分析系统200使用包括过程100和160的本专利文件中所公开的过程来从控制器UI客户端202接收查询,处理所接收到的查询并且显示经处理的查询的结果。
分析系统200包括查询API层210、查询请求处理器220、查询分块框架230、查询分块策略240、搜索查询处理器250和监控性能度量数据的数据储存器260。查询API层210处理与UI客户端的通信以从用户接收查询并且将所接收到的查询发送到查询请求处理器220。查询请求处理器220负责所接收到的查询的初始处理,包括单对多查询处理分解。查询请求处理器还负责将所接收到的查询引导到适当的后端存储层以用于搜索查询中请求的度量数据。此外,查询请求处理器负责引导查询结果的累积和收集,包括错误结果处理。在一些实施方式中,如在下面关于图2B进一步描述的,查询请求处理器可以委托给特殊查询处理程序以处理特殊查询,诸如漏斗查询、队列查询等。
查询请求处理器220可以将所接收到的查询发送(tryChunk())到查询分块框架230以确定是否对所接收到的查询进行分块。如使用过程100和160(包括可选的子过程)所确定的不是用于查询分块的候选(query as-is())的查询被发送到搜索查询处理器250以用于将所接收到的查询引导到适当的后端存储层,诸如数据储存器260,以搜索查询中请求的度量数据。数据储存器260是存储要查询的度量数据的示例性后端储存器。
查询分块框架230负责使用过程100和160(包括可选的子过程)来确定是否对所接收到的查询进行分块。查询分块框架230与查询分块策略240协调以选择适当的分块策略或策略集,使用所选择的策略来对查询进行分块,并且使用过程100和160(包括可选的子过程)来将分块的结果动态地流式传输到UI以供显示。一旦已经选择了分块策略或策略集,查询分块框架230就可以根据所选择的一个或多个策略在分块-执行-收集(例如,过程112、114和116)循环中执行过程100和160,直到所有请求的查询被处理为止。所选择的一个或多个分块策略可以返回单个查询或查询集以一起或单独地执行。例如,可以在顺序的单个查询请求中执行多个分块查询。在一些实施方式中,可以在并行化单个查询请求中执行多个分块查询。在一些实施方式中,可以在单个多查询请求中执行多个分块查询。
在查询分块框架的引导下,搜索查询处理器250通过搜索度量数据的数据储存器260来处理分块查询的执行。如过程100和160中所公开的那样,在动态地流式传输经收集的结果以供显示给UI客户端之前,所执行的分块查询的结果被发送回到查询分块框架以进行收集。
系统280与系统200基本上类似并且包括公共组件,诸如查询API层210、查询请求处理器220、查询分块框架230、查询分块策略240、搜索查询处理器250和数据储存器260。
查询分块策略
如上面关于图1A、图1B、图1C、图1D、图1E、图1F、图1G、图1H、图1I、图1J、图1K、图2A和图2B所公开的,可以选择许多不同的查询分块策略以用于对查询进行分块。查询分块策略的非详尽示例包括时间范围策略、范围组策略、时间戳系列策略、不同计数策略、极限策略、连续聚合组策略、连续间隔策略和不同选择策略。此外,最终用户可以可选地创建定制策略。图3是示出用于基于所接收到的查询自动地选择可用的查询分块策略中的一种的选择过程300的过程流程图。可以将选择过程300作为一个或多个选择分块策略过程110的一部分来执行。图4、图5、图6、图7、图8、图9、图10和图11示出了这些示例性查询分块策略的过程流程。
如图3中所示,一个或多个选择分块策略过程110可以包括选择过程300。在一些实施方式中,选择过程300还可以是标识(多个)分块策略候选过程126的一部分。选择过程300可以由查询分块框架230与查询分块策略240协调地使用以自动地从一组策略中选择策略。过程300包括在过程302分析要分块的查询的内容。基于在过程302的查询的内容,可以选择策略组中的一种。
例如,当查询在跨越许多指标(特别是热对冷指数)的大时间范围内时,可以选择时间范围策略400。另外,当查询可以在较小时间范围中执行得更快并且较小范围的结果可以被收集在一起时,可以选择时间范围策略400。当查询包括可以在较小范围组中更快地查询的许多范围时,可以选择范围组策略500。当查询在可以在子系列范围中更快地查询的宽时间戳系列范围内时,可以选择时间戳系列范围600。当查询是针对组并且逐个地而不是一次性地输送针对组的结果时,可以选择不同计数策略700。当查询在与所返回的结果的数量成比例地执行得更慢的大极限内时,可以选择极限策略800。当查询包括许多嵌套聚合组并且通过渐进嵌套组返回结果时,可以选择连续聚合组策略900。当查询是针对粒度间隔并且更小粒度间隔可以更快地返回结果时,可以选择连续间隔策略1000。当查询包括不同选择的聚合时并且当一些简单聚合比其他聚合昂贵得多时,可以选择不同选择策略1100。
图4A是时间范围策略400的过程流程图。时间范围策略400基于查询的时间范围将查询划分成连续子范围。子范围通过分层元数据来通知,所述元数据是诸如与特定时间范围和均匀或线性分布(诸如一周中的数天、一月中的数周、一年中的数月等)相关联的索引。在过程402标识原始查询中的时间范围的持续时间。基于时间范围的持续时间,在过程404确定用于划分时间范围的子范围的数量。原始查询在过程406被分块成分块查询,其中分块查询的总数与子范围的数量匹配。在过程408执行分块查询。在过程410收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图4B中所示,可以将一个月的时间范围内的查询412分块成四个连续一周子范围内的四个分块查询414、416、418、420。每个分块查询的结果通过拼合四个连续一周子范围被适当地收集在一起。在一些实施方式中,可以将一个月的时间范围内的相同查询分块成四个连续一周子范围内的四个分块查询加上整个月的一个分块查询(即,全时间范围查询)。通过将全时间范围查询作为最后分块查询来运行,不需要将四个子范围查询收集在一起。可以在执行全范围查询时显示总体结果。用户体验是令人满意的,因为可以在全范围查询正在执行时向用户显示每个子范围结果。
图5A是范围组策略500的过程流程图。范围组策略500将包括多个范围的查询划分成仅包括少数范围的子组。在过程502标识原始查询中的范围的总数。基于范围的总数,在过程504确定用于划分范围的总数的范围的子组的数量。在过程506将原始查询分块成分块查询,其中分块查询的总数与子组的数量匹配。在过程508执行分块查询。在过程510收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图5B中所示可以将包括六个范围(诸如0、100、200、300、400和500)的查询512分块成在每个分块查询中具有六个范围中的两个的三个分块查询514、516、518。根据查询中的范围的数量,分块查询的总数和包括在每个分块查询中的范围的数量可以变化以增强每个分块的处理时间。在执行每个分块查询时,针对范围组中的每个范围产生结果。
图6A是时间戳系列策略600的过程流程图。时间戳系列策略600将扩展宽系列的查询划分为多个子系列范围。在过程602标识原始查询中的宽系列范围。基于查询中的宽系列范围,在过程604确定用于划分宽系列范围的子系列范围的数量。原始查询在过程606被分块成分块查询,其中分块查询的总数与子系列范围的数量匹配。在过程608执行分块查询。在过程610收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,可以通过将从开始到结束的查询612的范围划分成如下三个顺序部分来将如图6B中所示的扩展从开始到结束的宽系列范围的查询612分块成三个子系列范围的三个分块查询614、616、618,所述三个顺序部分为:(1)从开始到开始+(结束-开始)/3;(2)从开始+(结束-开始)/3到2*(开始+(结束-开始)/3);以及(3)2*(开始+(结束-开始)/3)到结束。根据查询中的系列范围的宽度,分块查询的总数和包括在每个分块查询中的子系列范围的长度可以变化以增强每个分块的处理时间。在必要时以系列的任何拼接一次一个地针对每个子范围显示结果。
图7A是不同计数策略700的过程流程图。不同计数策略700将为大组请求数据的查询划分成分块查询以便该组的个体成员一次一个成员地返回结果。类似地,不同计数策略700将从大量组请求数据的查询划分成分块查询以便个体的不同组一次一个不同组地返回结果。在过程702标识组中的成员的数量或原始查询中的组的总数。原始查询在过程704被分块成分块查询,其中分块查询的总数与组中的成员的数量或组的数量匹配。在过程706执行分块查询。在过程708收集查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图7B中所示为包括三个成员A1、A2和A3的组A请求数据的查询712被分块成为每个组成员A1、A2和A3请求数据的三个分块查询714、716、718。根据包括在查询中的组或组中的成员的数量,分块查询的总数可以变化以增强每个分块的处理时间。一次一个地针对每个不同组或组成员显示结果。
图8A是极限策略800的过程流程图。极限策略800将请求多达大极限的数据的查询划分成分块查询以用于递增极限。在过程802标识原始查询中的宽极限。基于查询中的宽极限,在过程804确定用于划分宽极限的递增极限的数量。原始查询在过程806被分块成分块查询,其中分块查询的总数与递增极限的数量匹配。在过程808执行分块查询。在过程810收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图8B中所示可以将具有极限为100的查询812分块成具有递增极限为5、20、50和100的四个分块查询814、816、818、820。根据查询中的原始极限,分块查询的总数和包括在每个分块查询中的递增极限可以变化以增强每个分块的处理时间。针对执行的每个分块查询显示结果并且用户看到显示的结果的增长列表。
图9A是连续聚合组策略900的过程流程图。连续聚合组策略900将包括许多嵌套聚合组的查询划分成渐进嵌套组的分块查询。在过程902标识原始查询中的嵌套聚合的数量或水平。基于查询中的嵌套聚合的数量或水平,在过程904确定用于划分嵌套聚合的渐进嵌套聚合的数量。原始查询在过程906被分块成分块查询,其中分块查询的总数与嵌套聚合的数量或水平匹配。在过程908执行分块查询。在过程910处收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图9B中所示可以将包括四个嵌套聚合组的查询912分块成渐进嵌套组的四个分块查询914、916、918、920。根据查询中的嵌套聚合组的数量或水平,分块查询的总数和包括在每个分块查询中的渐进嵌套组可以变化以增强每个分块的处理时间。针对执行的每个分块查询显示结果并且用户看到增加数量的数据列或者更粗到更细粒度结果的可视化。
图10A是连续间隔策略1000的过程流程图。连续间隔策略1000将请求某一范围内的粒度间隔的查询划分成针对相同范围的分块查询,但每个连续分块的粒度更小。在过程1002标识原始查询中的间隔的粒度。基于查询中的间隔的粒度,在过程1004确定用于划分原始查询中的粒度间隔(从粗到细)的粒度水平的数量。原始查询在过程1006被分块成分块查询,其中分块查询的总数与粒度水平的数量匹配。在过程1008执行分块查询。在过程1010收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图10B中所示,可以将请求一周内的分钟间隔数据的查询1012分块成天间隔、小时间隔、然后是分钟间隔的三个渐进粒度的分块查询1014、1016、1018。根据查询中请求的间隔的粒度,分块查询的总数和对应粒度可以变化以增强每个分块的处理时间。针对执行的每个分块查询的结果被显示,使得用户在所显示的结果中体验到增加的细化或粒度。
图11A是不同选择策略1100的过程流程图。不同选择策略1100将包括多个或复数个聚合的查询划分成简单或不同聚合的分块查询。在过程1102标识原始查询中的多个或复数个聚合。基于查询中的多个或复数个聚合,在过程1104确定用于划分原始查询中的粒度间隔的简单不同聚合的数量。原始查询在过程1106被分块成分块查询,其中分块查询的总数与简单不同聚合的数量匹配。在过程1108执行分块查询。在过程1110收集分块查询的结果并经由UI客户端向用户显示分块查询的结果。在完成对每个分块查询的执行时,结果与来自一个或多个先前完成的分块查询的结果收集在一起。每当来自附加分块查询的附加结果被返回时,所显示的数据被适当地更新。
例如,如图11B中所示,可以将请求不同数据的五个不同聚合组的查询1112分块成不同数据的五个分块查询1114、1116、1118、1120、1122。根据查询中聚合的不同组的总数,分块查询的总数可以变化以增强每个分块的处理时间。针对执行的每个分块查询的结果被显示,使得用户体验到渐进的显示结果。
在一些实施方式中,可以将分块查询策略中的多于一个组合在一起以根据查询的性质和内容对查询进行分块。对于所有查询分块策略,可以顺序地或并行或者按照顺序和并行执行的组合执行分块查询。在一些实施方式中,可以按组执行分块查询。
示例性优点
所公开的用于查询分块的技术与任何后端数据储存器(诸如ES、SQL、Cassandra、Mongo等)兼容。所公开的用于查询分块的技术是高度灵活的以围绕所请求的查询的最重要的详情优化特定分块策略。所公开的用于查询分块的技术是动态的原因在于在执行分块查询时,可以针对预期或预测的性能来确定查询分块策略的性能,然后响应于为最终用户体验进行优化而调整后续分块查询。所公开的用于查询分块的技术对最终用户是透明的,并且可以在没有用户输入或者分块信息的情况下进行操作。
应用智能平台架构
图12是可以如本专利文件中所公开的那样实施查询分块的示例性应用智能平台1200的框图。应用智能平台是监控并收集被监控的应用环境的性能数据的度量的系统。在最简单的结构下,应用智能平台包括一个或多个代理1210、1212、1214、1216和一个或多个控制器1220。虽然图12示出了通信地链接到单个控制器的四个代理,但是代理和控制器的总数可以基于许多因素而变化,所述许多因素包括被监控的应用的数量、应用环境分布如何、所期望的监控水平、所期望的用户体验水平等。
控制器和代理
控制器1220是用于应用智能平台的中央处理和管理服务器。控制器1220为基于浏览器的用户界面(UI)1230服务,所述基于浏览器的UI1230是用于监控、分析并排除所监控的环境的故障的主界面。控制器1220可以控制并管理对分布在应用服务器上的业务交易的监控。具体地,控制器1220可以从代理1210、1212、1214、1216和协调器接收运行时数据,使业务交易数据的部分相关联,与代理进行通信以配置运行时数据的集合,并且提供性能数据并通过界面1230进行报告。界面1230可以被视为可由客户端设备1240查看的基于web的界面。在一些实施方式中,客户端设备1240可以直接地与控制器1220进行通信以查看用于监控数据的界面。
在软件即服务(SaaS)实施方式中,控制器实例1220由应用智能平台1200的提供者远程地托管。在企业预置型(On-Prem)实施方式中,控制器实例1220被安装在本地并且自我管理。
控制器1220从被部署为针对所监控的环境来监控应用、数据库和数据库服务器、服务器和最终用户客户端的不同代理1210、1212、1214、1216接收数据。可以将代理1210、1212、1214、1216中的任一个实施为不同类型的代理特定监控工作。例如,应用代理被安装在托管要监控的应用的每个服务器上。监测(instrumenting)代理是将应用代理添加到应用的运行时过程中的。
数据库代理是安装在能够对所监控的数据库和控制器进行网络访问的机器上的软件(例如,Java程序)。数据库代理查询所监控的数据库以收集度量并且传递度量以供显示在度量浏览器(数据库监控)中以及显示在控制器UI的数据库页面中。多个数据库代理可以向同一控制器报告。可以将附加数据库代理实施为备份数据库代理以在故障或计划的机器停机时间期间接管主数据库代理。附加数据库代理可以在与主代理相同的机器上或者在不同的机器上运行。可以在所监控的环境的每个不同网络中部署数据库代理。多个数据库代理可以在同一机器上在不同的用户帐户下运行。
独立机器代理是从所监控的环境中的服务器收集硬件相关性能统计信息的独立程序(例如,独立Java程序)。可以将独立机器代理部署在托管应用服务器、数据库服务器、消息服务器、Web服务器等的机器上。独立机器代理具有可扩展架构。
最终用户监控(EUM)使用浏览器代理和移动代理来执行以从客户端(诸如web浏览器或移动本机应用)的角度提供性能信息。浏览器代理和移动代理与通过在服务器上的应用代理、数据库代理和独立机器代理进行的其他监控不同。通过EUM,可以根据监控需要来监控web使用(例如,通过真实用户或合成代理)、移动使用或任何组合。
浏览器代理是使用基于web的技术的小文件,诸如注入到每个监测的web网页中的JavaScript代理,尽可能靠近顶部,因为web页面被服务并收集数据。一旦web页面已完成加载,所收集的数据就被捆绑到信标中并发送到EUM云以进行处理并且准备好由控制器检索。浏览器真实用户监控(浏览器RUM)从真实或合成最终用户的角度提供对web应用的性能的深入了解。例如,浏览器RUM可以确定具体Ajax或iframe调用如何减慢页面加载时间并且服务器性能如何总体上或在个体情况下影响最终用户体验。
移动代理是得以添加到移动应用的源代码的一小片高性能代码。移动RUM在最终用户实际地使用移动应用时提供关于本机iOS或Android移动应用的信息。移动RUM提供对移动应用其本身的运作以及移动应用与使用的网络和与移动应用进行通信的任何服务器侧应用的交互的可见性。
控制器1220可以包括用于如本专利文件中所公开的那样执行动态查询分块和结果的流式传输的分析系统1250。可以将分析系统1250实施为与关于图2A和图2B所公开的分析系统200和280基本上类似。在一些实施方式中,可以在与托管控制器1220的机器不同的单独机器(例如,服务器)中实施分析系统1250、200和280。
应用智能监控
所公开的技术可以通过监控应用环境来提供应用智能数据,所述应用环境包括诸如从应用服务器(例如,Java虚拟机(JVM)、因特网信息服务(IIS)、超文本预处理器(PHP)Web服务器等)服务的web应用、数据库或其他数据储存器的各种服务,以及诸如消息队列和高速缓存的远程服务。应用环境中的服务可以各种方式交互以提供与应用的一组内聚用户交互,诸如适用于最终用户客户的一组用户服务。
应用智能建模
应用环境中的实体(诸如JBoss服务、MQSeries模块和数据库)以及由这些实体提供的服务(诸如登录交易、服务或产品搜索或购买交易)被映射到应用智能模型。在应用智能模型中,业务交易表示由所监控的环境提供的特定服务。例如,在电子商务应用中,特定真实世界服务可以包括用户登录、搜索项目或向购物车添加项目。在内容门户中,特定真实世界服务可以包括对诸如体育、商业或娱乐新闻的内容的用户请求。在股票交易应用中,特定真实世界服务可以包括诸如接收股票报价、买入或卖出股票等的操作。
业务交易
由所监控的环境提供的特定服务的业务交易表示在参与处理特定请求的各个层级的背景下提供关于性能数据的视图。业务交易表示用于在所监控环境中履行服务请求的端到端处理路径。因此,业务环境是在所监控的环境中通过由入口点以及跨越应用服务器、数据库和可能许多其他基础架构组件的处理路径所定义的一种用户发起的动作。业务交易的每个实例是该交易响应于特定用户请求的执行。可以通过在入口点处检测传入请求并且在始发层级处且跨越应用环境中的分布式组件跟踪与请求相关联的活动来创建业务交易。可以为业务交易生成流程图,该流程图示出了在应用环境中用于业务交易的触摸点。
可以通过业务交易将性能监控定向为从最终用户的角度关注应用环境中的服务的性能。基于业务交易的性能监控可以提供关于服务是否可用(例如,用户可登录、检出或者查看他们的数据)的信息、用户的响应时间以及当发生问题时的问题的原因。
业务应用
业务应用是应用智能模型中的顶级容器。业务应用包含一组相关服务和业务交易。在一些实施方式中,可能需要单个业务应用来对环境进行建模。在一些实施方式中,可以将应用环境的应用智能模式划分成若干业务应用。可以基于应用环境的详情不同地组织业务应用。一个考虑因素是以反映特定组织中的工作团队的方式组织业务应用,因为控制器UI中的基于角色的访问控制是通过业务应用定向的。
节点
应用智能模型中的节点对应于应用环境中的监控服务器或JVM。节点是建模环境的最小单元。一般而言,节点对应于安装有监控代理的个体应用服务器、JVM或CLR。每个节点在应用智能模型中标识其本身。安装在节点处的代理被配置为指定代理用来向控制器报告数据的节点、层级和业务应用的名称。
层级
业务应用包含层级,应用智能模型中的包括一个或多个节点的单元。每个节点表示监测的服务(诸如web应用)。虽然节点可以是应用环境中的不同应用,但是在应用智能模型中,节点是层级的成员,所述层级连同可能许多其他层级一起组成总体逻辑业务应用。
可以根据受所监控的应用环境的思维模型在应用智能模型中组织层级。例如,可以将相同的节点分组成单个层级(诸如冗余服务器的集群)。在一些实施方式中,可以出于将某些性能度量视为单元的目的将任一组节点(相同的或不同的)分组成单个层级。
业务应用中的业务在层级之间流动并且可以使用层级之间的线在流程图中可视化。此外,指示层级之间的业务流的线可以用性能度量标注。在应用智能模型中,在单个层级内的节点之间可能没有任何交互。另外,在一些实施方式中,应用代理节点不能属于多于一个层级。类似地,机器代理不能属于多于一个层级。然而,可以在机器上安装多于一个机器代理。
后端系统
后端是参与业务交易实例的处理的组件。后端不是由代理监测的。后端可以是web服务器、数据库、消息队列或其他类型的服务。代理识别从监测代码对这些后端服务的调用(被称作退出调用)。当服务不是监测的并且无法继续调用的交易背景时,代理确定服务是后端组件。代理在后端在响应时挑选交易背景并且从那里继续跟随交易的背景。
性能信息可用于后端调用。对于由后端处理的交易的分支的详细交易分析,需要监测数据库、web服务或其他应用。
基线和阈值
应用智能平台使用自学习基线和可配置阈值来帮助标识应用问题。复杂的分布式应用具有大量性能度量并且每个度量在一个或多个背景下都重要。在这样的环境中,难以确定对特定度量来说正常的值或范围;设置要以此为基础的有意义阈值并且接收相关警报;以及在应用或基础设施经历改变时确定什么是“正常的”度量。由于这些原因,所公开的应用智能平台可以基于动态基线或阈值执行异常检测。
所公开的应用智能平台针对所监控的度量来自动地计算动态基线,从而基于实际使用定义对于每个度量来说什么是“正常的”。应用智能平台使用这些基线来标识其值落在此正常范围之外的后续度量。不再需要设置起来繁琐的并且在快速变化的应用环境中易出错的静态阈值。
所公开的应用智能平台可以使用可配置阈值来维持服务水平协定(SLA)并且通过检测慢、非常慢和停止的交易来为系统确保最佳性能水平。可配置阈值提供了使正确的业务背景与慢请求相关联以使根本原因隔离的灵活方式。
健康状态规则、政策和动作
此外,可以按使用动态地生成的基线来触发警报或者在性能问题正在发生或者可能即将发生时发起其他类型的补救动作的条件而设置健康状态规则。
例如,动态基线可以用于自动地建立对于特定应用来说什么被认为是正常行为。可以针对用于特定应用的基线或其他健康状态指标来使用政策和健康状态规则以在用户受影响之前检测并排除问题。健康状态规则可以用于定义要监控的度量条件,诸如当“平均响应时间比基线慢四倍”时。可以基于所监控的应用环境来创建并修改健康状态规则。
用于测试业务交易性能的健康状态规则的示例可包括业务交易响应时间和业务交易错误率。例如,测试业务交易响应时间是否远高于正常情况的健康状态规则可以将临界条件定义为平均响应时间比默认基线大3个标准偏差并且负载大于50个调用每分钟的组合。这种健康状态规则可以将警告条件定义为平均响应时间比默认基线大2个标准偏差并且负载大于100个调用每分钟的组合。测试业务交易错误率是否远高于正常情况的健康状态规则可以将临界条件定义为错误率比默认基线大3个标准差并且错误率大于10个错误每分钟以及负载大于50个调用每分钟的组合。这种健康状态规则可以将警告条件定义为错误率比默认基线大2个标准差并且错误率大于5个错误每分钟以及负载大于50个调用每分钟的组合。
政策可以被配置为在违反健康状态规则时或者在发生任何事件时触发动作。触发的动作可以包括通知、诊断动作、自动缩放容量、运行修复脚本。
度量
大多数度量与应用或业务交易的总体性能(例如,负载、平均响应时间、错误率等)或应用服务器基础设施的总体性能(例如,CPU繁忙的百分比、所用存储器的百分比等)有关。控制器UI中的度量浏览器可以用于查看代理向控制器报告的所有度量。
此外,可以创建被称为信息点的特殊度量来报告给定业务(与给定应用相对)如何执行。例如,可以监控某个产品或一组产品的总收入的性能。另外,信息点可以用于报告给定代码如何执行,例如具体方法被调用多少次以及它执行花费多长时间。此外,可以创建使用机器代理的扩展来报告用户定义的定制度量。这些定制度量是基线的并在控制器中报告,就像内置度量一样。
可以使用表示状态转移(REST)API以编程方式访问所有度量,所述REST API返回JavaScript对象表示法(JSON)或可扩展标记语言(XML)格式。另外,REST API可以用于查询并操纵应用环境。
快照
快照提供给定应用在某个时间点的详细图片。快照通常包括允许使得能够向下钻取到可能引起性能问题的代码行的调用图。最常见的快照是交易快照。
应用智能平台的示例性实施方式
图13是用于如本专利文件中所公开的那样动态地对查询进行分块并且流式传输分块查询的结果的示例性系统1300的框图,其包括关于图1-12B所公开的过程。图13中的系统1300包括客户端设备1305和1392、移动设备1315、网络1320、网络服务器1325、应用服务器1330、1340、1350和1360、异步网络机器1370、数据储存器1380和1385、控制器1390和数据收集服务器1395。控制器1390可以包括用于如本专利文件中所公开的那样执行动态查询分块和分块查询结果的流式传输的分析系统1396。可以将分析系统1396实施为与关于图2A和图2B所公开的分析系统200和280基本上类似。在一些实施方式中,可以在与托管控制器1390的机器不同的单独机器(例如,服务器)中实施分析系统1396、200和280。
客户端设备1305可以包括网络浏览器1310并且被实施为计算设备(诸如例如膝上型电脑、台式机、工作站或某个其他计算设备)。网络浏览器1310可以是用于在网络1320上经由网络服务器1325查看由应用服务器(诸如应用服务器1330)提供的内容的客户端应用。
网络浏览器1310可以包括代理1312。代理1312可以作为将应用下载到服务器的网络浏览器附件被安装在网络浏览器1310和/或客户端1305上,或者以某种其他方式安装。可以执行代理1312以监控网络浏览器1310、客户端1305的操作系统以及客户端1305的任何其他应用、API或其他组件。代理1312可以确定网络浏览器导航定时度量,访问浏览器cookie,监控代码,并且将数据发送到数据集合1360、控制器1390或另一设备。代理1312可以执行与如本文所讨论的那样在客户端1305处监控请求或网络有关的其他操作。
移动设备1315连接到网络1320并且可以被实施为适合于在网络上发送并接收内容的便携式设备(诸如例如移动电话、智能电话、平板计算机或其他便携式设备)。客户端设备1305和移动设备1315都可以包括被配置为访问由网络服务器1325提供的web服务的硬件和/或软件。
移动设备1315可以包括网络浏览器1317和代理1319。移动设备还可以包括客户端应用和可以由代理1319监控的其他代码。代理1319可以存在于网络浏览器1317中和/或与网络浏览器1317进行通信,以及与移动设备1315上的其他应用、操作系统、API及其他硬件和软件进行通信。代理1319可以具有与在本文中针对客户端1305上的代理1312所描述的功能性类似的功能性,并且可以将数据报告给数据收集服务器1360和/或控制器1390。
网络1320可以便于数据在系统1300的不同服务器、设备和机器之间的通信(一些连接用到网络1320的线示出,一些未示出)。可以将网络实施为专用网络、公用网络、内联网、因特网、蜂窝网络、Wi-Fi网络、VoIP网络或这些网络中的一个或多个的组合。网络1320可以包括诸如负载平衡机器和其他机器的一个或多个机器。
网络服务器1325连接到网络1320并且可以接收并处理在网络1320上接收到的请求。可以将网络服务器1325实施为实施网络服务的一个或多个服务器,并且可以被实施在与应用服务器1330相同的机器或一个或多个单独的机器上。当网络1320是因特网时,可以将网络服务器1325实施为web服务器。
应用服务器1330与网络服务器1325、应用服务器1340和1350以及控制器1390进行通信。应用服务器130还可以与其他机器和设备(在图13中未示出)进行通信。应用服务器1330可以托管应用或分布式应用的部分。主机应用1332可以在许多平台(诸如包括Java、PHP、.Net和Node.JS)的其中之一中,被实施为Java虚拟机,或者包括一些其他主机类型。应用服务器130还可以包括一个或多个代理134(即“模块”),包括语言代理、机器代理和网络代理以及其他软件模块。可以如图13中所示的那样将应用服务器1330实施为一个服务器或多个服务器。
可以使用字节代码插入或字节代码测试(BCI)来监测应用服务器1330上的应用1332和其他软件,以修改该应用或其他软件的目标代码。所监测的目标代码可以包括用于检测由应用1332接收到的调用、由应用1332发送的调用并且在执行应用期间与代理1334进行通信的代码。BCI还可以用于监控应用和/或应用服务器的一个或多个套接字以便监控该套接字并且采集通过套接字进来的分组。
在一些实施例中,服务器1330可以包括除虚拟机以外的应用和/或代码。例如,服务器1330、1340、1350和1360均可以包括Java代码、.Net代码、PHP代码、Ruby代码、C代码、C++或其他二进制代码以实施应用并处理从远程源接收到的请求。关于应用服务器对虚拟机的引用旨在仅用于示例性目的。
可以在应用服务器1330上安装、下载、嵌入或者以其他方式提供应用服务器1330上的代理1334。例如,可以通过对目标代码的监测、将代理下载到服务器或者以某种其他方式在服务器1330中提供代理1334。可以执行代理1334以监控应用服务器1330,监控虚拟机1332(或其他程序语言,诸如PHP、.Net或C程序)中运行的代码、机器资源、网络层数据,并且与应用服务器1330上的字节监测代码和应用服务器1330上的一个或多个应用进行通信。
代理1334、1344、1354和1364中的每一个代理可以包括一个或多个代理,诸如语言代理、机器代理和网络代理。语言代理可以是适合于在特定主机上运行的一种代理。语言代理的示例包括JAVA代理、.Net代理、PHP代理和其他代理。机器代理可以从特定机器(其上安装机器代理)收集数据。网络代理可以采集网络信息,例如从套接字收集的数据。
代理1334可以检测诸如由应用服务器1330接收调用和发送请求的操作、资源使用和传入分组。代理134可以例如通过将数据聚合成度量来接收数据、处理数据,并且将数据和/或度量发送到控制器1390。代理1334可以执行与如本文所讨论的那样监控应用和应用服务器1330有关的其他操作。例如,代理1334可以标识其他应用、共享业务交易数据、聚合所检测到的运行时数据以及其他操作。
代理可以操作以监控节点、层级或节点或者其他实体。节点可以是软件程序或硬件组件(例如,存储器、处理器等)。节点的层级可以包括多个节点,所述多个节点可以处理类似的业务交易、可以位于同一服务器上、可以以某种其他方式彼此相关联、或者可以不彼此相关联。
语言代理可以是适合于监测或修改数据、从主机收集数据并且使其存在于主机上的代理。主机可以是Java、PHP、.Net、Node.JS或其他类型的平台。语言代理可以收集流数据以及与特定应用的执行相关联的数据。语言代理可以监测应用的最低层以收集流数据。流数据可以指示哪一个层级正在与哪一个层级通信以及在哪一个端口上通信。在一些实例中,从语言代理收集的流数据包括源IP、源端口、目的地IP和目的地端口。语言代理可以将应用数据和调用链数据报告给控制器。语言代理可以将所收集的与特定应用相关联的流数据报告给网络代理。
网络代理可以是存在于主机上并收集网络流组数据的独立代理。网络流组数据可以包括由安装网络代理的应用接收到的网络流的源IP、目的地端口、目的地IP和协议信息。网络代理可以通过拦截从一个或多个套接字进入的分组并对从一个或多个套接字进入的分组执行分组采集来收集数据。网络代理可以从与要监控的应用相关联的语言代理接收流数据。对于与由语言代理提供的流数据匹配的流组数据中的流,网络代理汇总流数据以确定诸如TCP吞吐量、TCP丢失、等待时间和带宽的度量。网络代理然后可以将度量、流组数据和调用链数据报告给控制器。网络代理还可以在应用服务器处进行系统调用以确定系统信息,诸如例如主机状态检查、网络状态检查、套接字状态和其他信息。
机器代理可以存在于主机上并且收集有关实施主机的机器的信息。机器代理可以从诸如处理器使用、存储器使用和其他硬件信息的信息收集并生成度量。
语言代理、网络代理和机器代理中的每一个代理可以向控制器报告数据。可以将控制器1390实施为与位于一个或多个服务器或机器上的代理进行通信的远程服务器。控制器可以接收度量、调用链数据和其他数据,使所接收到的数据关联为分布式交易的一部分,并且在由一个或多个所监控的应用实施并且在一个或多个所监控的网络上发生的分布式应用的背景下报告相关数据。控制器可以为用户提供报告、一个或多个用户界面和其他信息。
代理1334可以为由服务器1330接收到的请求(例如,由与用户或其他源相关联的客户端1305或1315接收到的请求)创建请求标识符。无论哪个设备发送请求,都可以将请求标识符发送到客户端1305或移动设备1315。在实施例中,可以在针对特定业务交易来收集并分析数据时创建请求标识符。
应用服务器1340、1350和1360中的每一个应用服务器可以包括应用和代理。每个应用可以在所对应的应用服务器上运行。应用服务器1340-1360上的应用1342、1352和1362中的每一个应用可以与应用1332类似地进行操作并且执行分布式业务交易的至少一部分。代理1344、1354和1364可以监控应用1342-1362,在运行时收集并处理数据,并且与控制器1390进行通信。应用1332、1342、1352和1362可以作为执行分布式交易的一部分彼此通信。具体而言,每个应用可以调用另一虚拟机的任何应用或方法。
异步网络机器1370可以从事与一个或多个应用服务器(诸如应用服务器1350和1360)的异步通信。例如,应用服务器150可以向异步网络机器发送若干调用或消息。不是传送回到应用服务器1350,而是异步网络机器可以处理消息并且最终向应用服务器1360提供响应,诸如经处理的消息。因为没有从异步网络机器到应用服务器1350的返回消息,所以它们之间的通信是异步的。
数据储存器1380和1385均可以由诸如应用服务器1350之类的应用服务器访问。数据储存器1385还可以由应用服务器1350访问。数据储存器1380和1385中的每一个数据储存器可以存储数据、处理数据并且返回从应用服务器接收到的查询。数据储存器1380和1385中的每一个数据储存器可以包括或者可以不包括代理。
控制器1390可以控制并管理对分布在应用服务器1330-1360上的业务交易的监控。在一些实施例中,控制器1390可以从数据收集服务器1360接收应用数据,包括与在客户端1305和移动设备1315处监控客户端请求相关联的数据。在一些实施例中,控制器1390可以从代理1312、1319、1334、1344和1354中的每一个代理接收应用监控数据和网络数据。控制器1390可以使业务交易数据的部分相关联,与代理进行通信以配置数据的集合,并且通过界面提供性能数据和报告。界面可以被视为可由客户端设备1392查看的基于web的界面,所述客户端设备1392可以是移动设备、客户端设备或用于查看由控制器1390提供的界面的任何其他平台。在一些实施例中,客户端设备1392可以直接地与控制器1390进行通信以查看用于监控数据的界面。
客户端设备1392可以包括任何计算设备,其包括移动设备或诸如台式机、工作站或其他计算设备之类的客户端计算机。客户端计算机1392可以与控制器1390进行通信以创建并查看定制界面。在一些实施例中,控制器190提供用于创建并查看定制界面作为内容页面(例如,web页面)的界面,所述内容页面可以被提供给客户端设备192上的网络浏览器应用并通过该网络浏览器应用进行渲染。
应用132、142、152和162可以是若干类型的应用中的任一个。可以实现应用1332-1362的应用的示例包括Java、PHP、.Net、Node.JS和其他应用。
图14是用于实施本技术的计算机系统1400的框图。可以在客户端1305、1392、网络服务器1325、服务器1330、1340、1350、1360、同步网络机器1370和控制器1390的类似物的背景下实施图14的系统1400。
图14的计算系统1400包括一个或多个处理器1410和存储器1420。主存储器1420部分地存储供由处理器1410执行的指令和数据。主存储器1410当在操作中时可以存储可执行代码。图14的系统1400进一步包括大容量存储设备1430、(多个)便携式存储介质驱动器1440、输出设备1450、用户输入设备1460、图形显示器1470和外围设备1480。
图14中所示的组件被描绘为经由单条总线1490连接。然而,可以通过一种或多种数据传输手段来连接组件。例如,处理器单元1410和主存储器1420可以经由本地微处理器总线来连接,并且大容量存储设备1430、(多个)外围设备1480、便携式或远程存储设备1440和显示系统1470可以经由一条或多条输入/输出(I/O)总线来连接。
可以用磁盘驱动器或光盘驱动器实施的大容量存储设备1430是用于存储供由处理器单元1410使用的数据和指令的非易失性存储设备。大容量存储设备1430可以为了将系统软件加载到主存储器620中而存储用于实施本发明的实施例的系统软件。
便携式存储设备1440与便携式非易失性存储介质(诸如光盘、数字视频盘、磁盘、闪速储存器等)相结合地操作以向图14的计算机系统1400输入数据和代码以及从图14的计算机系统1400输出数据和代码。用于实施本发明的实施例的系统软件可以存储在这样的便携式介质上并且经由便携式存储设备1440输入到计算机系统1400。
输入设备1460提供用户界面的一部分。输入设备1460可以包括用于输入字母数字和其他信息的字母数字按键(诸如键盘)或点击设备(诸如鼠标、轨迹球、触控笔或光标方向键)。另外地,如图14中所示的系统1400包括输出设备1450。适合的输出设备的示例包括扬声器、打印机、网络接口和监控器。
显示系统1470可以包括液晶显示器(LCD)或其他适合的显示设备。显示系统1470接收文本和图形信息,并且处理该信息以供输出到显示设备。
外围设备1480可以包括任何类型的计算机支持设备以向计算机系统添加附加功能性。例如,(多个)外围设备1480可以包括调制解调器或路由器。
包含在图14的计算机系统1400中的组件可以包括个人计算机、手持式计算设备、电话、移动计算设备、工作站、服务器、小型计算机、大型计算机或任何其他计算设备。计算机还可以包括不同的总线配置、联网平台、多处理器平台等。可以使用包括Unix、Linux、Windows、Apple OS和其他适合的操作系统(包括移动版本)的各种操作系统。
当实施诸如智能电话或平板计算机的移动设备时,图14的计算机系统1400可以包括一个或多个天线、无线电设备以及用于通过无线信号进行通信(诸如例如使用Wi-Fi、蜂窝或其他无线信号的通信)的其他电路。
虽然本专利文件包含许多详情,但是这些不应该被解释为对任何发明的或可以要求保护的范围进行限制,而是被解释为可能特定于特定发明的特定实施例的特征的描述。还可以在单个实施例中相结合地实施在本专利文件中在单独的实施例的背景下描述的某些特征。相反地,还可在多个实施例中单独地或者按照任何适合的子组合实施在单个实施例的背景下描述的各种特征。此外,尽管特征可以在上面被描述为按照某些组合行动并因此甚至最初要求保护,但来自要求保护的组合的一个或多个特征可以在一些情况下被从该组合中除去,并且所要求保护的组合可以涉及子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描绘操作,但是这不应该被理解为要求以所示的特定顺序或以序列的顺序执行这种操作,或者要求执行所有所示的操作,以实现所期望的结果。此外,本专利文件中所描述的实施例中的各种系统组件的分离不应该被理解为在所有实施例中要求这种分离。
仅对几个实施方式和示例进行了描述,并且可以基于在本专利文档中描述和示出了什么来做出其他实施方式、增强和变化。

Claims (22)

1.一种用于监控业务交易的系统,包括:
处理器;
存储器;以及
一个或多个模块,所述一个或多个模块存储在所述存储器中并且能够由处理器执行以执行以下操作,所述操作包括:
从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;
确定是否对所接收到的查询进行分块以生成多个分块查询;
基于所述确定,使用查询分块策略来对所接收到的查询进行分块以生成所述多个分块查询;
处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的总体结果的一部分;以及
将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端以在完成对所述分块查询的处理时显示所述结果,以便使得针对所接收到的查询的所述总体结果被一部分接一部分地显示,直到在完成对所有所述分块查询的处理时收敛于所述整体结果为止。
2.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以通过估计用于返回针对所接收到的查询的所述总体结果的处理时间并且将所估计的处理时间与阈值进行比较来确定是否对所接收到的查询进行分块。
3.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以通过执行以下操作来选择所述分块策略,所述操作包括:
标识分块策略候选;
为每个候选生成分数;以及
基于所述分数从所述候选中选择所述分块策略。
4.根据权利要求3所述的系统,其中,所述一个或多个模块能够由处理器执行以标识适于所接收到的查询的背景的所述分块策略候选。
5.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端,以按照完成对每个分块查询的处理的顺序显示所述结果。
6.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以将针对给定分块查询的所述结果与下一个随后完成的分块查询收集在一起以使得所收集的分块查询的组合结果被显示。
7.根据权利要求6所述的系统,其中,所述一个或多个模块能够由处理器执行以收集所述结果以使得所收集的分块查询的所述组合结果以取决于用于显示所述组合结果的图形的类型的不同方式被显示。
8.根据权利要求7所述的系统,其中,所述图形的类型包括条形图、饼形图或时间线。
9.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以确定要处理的所述分块查询的顺序。
10.根据权利要求1所述的系统,其中,所述一个或多个模块能够由处理器执行以监控表示所述查询分块策略的性能的度量。
11.根据权利要求10所述的系统,其中,所述一个或多个模块能够由处理器执行以基于所监控的度量来更新所述分块策略。
12.根据权利要求1所述的系统,其中,表示所述查询分块策略的性能的所监控的度量包括用于处理每个分块查询的等待时间。
13.根据权利要求1所述的系统,其中,表示所述查询分块策略的性能的所监控的度量包括:将所接收到的查询的所述总体结果一部分接一部分地显示与所显示的收敛的总体结果相比较有多准确的量度。
14.一种用于监控业务交易的方法,包括:
从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;
使用查询分块策略来对所接收到的查询进行分块以生成多个分块查询;
处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的部分结果;
将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端以使得来自对应的分块查询的所述结果被显示并聚合直到收敛于针对所接收到的查询的总体结果为止;以及
监控所述分块策略的性能度量。
15.根据权利要求14所述的方法,包括通过执行以下操作来选择所述查询分块策略,所述操作包括:
标识分块策略候选;
为每个候选生成分数;以及
基于所述分数从所述候选中选择所述分块策略。
16.根据权利要求14所述的方法,包括确定要处理的所述分块查询的顺序。
17.根据权利要求16所述的方法,其中,所述顺序包括并行处理所述分块查询中的至少两个。
18.根据权利要求16所述的方法,包括基于所监控的度量来更新所述分块策略。
19.一种包含指令的非暂时性计算机可读介质,当由处理器执行所述指令时使得以下操作被执行,所述操作包括:
从用户界面客户端接收针对指示所监控的业务交易的性能的数据的查询;
估计针对所接收到的查询的用于返回要显示的总体结果的等待时间;
确定所估计的等待时间比指示可接受的用户体验的预先确定的阈值时间要长;
使用查询分块策略来对所接收到的查询进行分块以生成多个分块查询;
处理所生成的多个分块查询,其中,针对每个分块查询的结果表示针对所接收到的查询的部分结果;以及
将来自每个分块查询的所述结果动态地流式传输到所述用户界面客户端以使得来自对应的分块查询的所述结果被显示并聚合直到收敛于针对所接收到的查询的总体结果为止。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,所述查询分块策略是基于所接收到的查询的内容而自动地分配的。
21.根据权利要求19所述的非暂时性计算机可读介质,其中,所述指令当由处理器执行时能够使得包括监控所述分块策略的性能度量的操作被执行。
22.根据权利要求19所述的非暂时性计算机可读介质,其中,所述指令当由处理器执行时能够使得包括基于所监控的性能度量来更新所述查询分块策略的操作被执行。
CN201680085032.3A 2016-04-29 2016-04-29 查询响应的动态流式传输 Pending CN109154937A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2016/030256 WO2017189012A1 (en) 2016-04-29 2016-04-29 Dynamic streaming of query responses
US15/143,161 US11144556B2 (en) 2016-04-29 2016-04-29 Dynamic streaming of query responses

Publications (1)

Publication Number Publication Date
CN109154937A true CN109154937A (zh) 2019-01-04

Family

ID=60158356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680085032.3A Pending CN109154937A (zh) 2016-04-29 2016-04-29 查询响应的动态流式传输

Country Status (4)

Country Link
US (1) US11144556B2 (zh)
EP (1) EP3449437A4 (zh)
CN (1) CN109154937A (zh)
WO (1) WO2017189012A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537610B2 (en) * 2017-12-09 2022-12-27 AtScale, Inc. Data statement chunking
US11625642B2 (en) * 2018-04-22 2023-04-11 Trendalyze Inc. Method for converting nominal to ordinal or continuous variables using time-series distances
CN111258598B (zh) * 2018-11-30 2023-05-02 阿里巴巴集团控股有限公司 度量更新方法、装置、系统、存储介质及计算机设备
US11449506B2 (en) 2019-05-08 2022-09-20 Datameer, Inc Recommendation model generation and use in a hybrid multi-cloud database environment
CN110119442A (zh) * 2019-05-17 2019-08-13 北京思维造物信息科技股份有限公司 一种动态搜索方法、装置、设备及介质
US11341149B2 (en) * 2019-06-21 2022-05-24 Shopify Inc. Systems and methods for bitmap filtering when performing funnel queries
US11341146B2 (en) * 2019-06-21 2022-05-24 Shopify Inc. Systems and methods for performing funnel queries across multiple data partitions
US11153404B2 (en) 2020-01-13 2021-10-19 International Business Machines Corporation Client-server workload sharing
US20220414100A1 (en) * 2021-06-29 2022-12-29 Microsoft Technology Licensing, Llc Decentralized query evaluation for a distributed graph database
US11494413B1 (en) * 2021-07-13 2022-11-08 Capital One Services, Llc Query alerts generation for virtual warehouse
US11669529B2 (en) 2021-07-13 2023-06-06 Capital One Services, Llc Dynamic query allocation to virtual warehouses
US11914595B2 (en) 2021-07-13 2024-02-27 Capital One Services, Llc Virtual warehouse query monitoring and reporting
US11886435B1 (en) * 2023-01-06 2024-01-30 Snark AI, Inc. Systems and methods for executing queries on tensor datasets

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226239A1 (en) * 2006-03-21 2007-09-27 At&T Corp. Query-aware sampling of data streams
CN101317176A (zh) * 2005-11-29 2008-12-03 泰普有限公司 利用后台处理在移动设备浏览器上显示搜索结果
US20120078951A1 (en) * 2010-09-23 2012-03-29 Hewlett-Packard Development Company, L.P. System and method for data stream processing
CN102622414A (zh) * 2012-02-17 2012-08-01 清华大学 基于对等结构的分布式高维索引并行查询框架
US20130198227A1 (en) * 2012-01-30 2013-08-01 Siemens Corporation Temporal pattern matching in large collections of log messages
US20140236664A1 (en) * 2012-08-13 2014-08-21 Visier Solutions, Inc. Apparatus, systems and methods for dynamic on-demand context sensitive cluster analysis
CN104756111A (zh) * 2012-09-28 2015-07-01 甲骨文国际公司 策略查询到连续查询转换
CN104885080A (zh) * 2012-11-02 2015-09-02 谷歌公司 分类搜索结果

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177561A1 (en) * 2004-02-06 2005-08-11 Kumaresan Ramanathan Learning search algorithm for indexing the web that converges to near perfect results for search queries
US7447680B2 (en) * 2004-07-29 2008-11-04 International Business Machines Corporation Method and apparatus for optimizing execution of database queries containing user-defined functions
US8386463B2 (en) * 2005-07-14 2013-02-26 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
US20070250470A1 (en) 2006-04-24 2007-10-25 Microsoft Corporation Parallelization of language-integrated collection operations
US7536383B2 (en) * 2006-08-04 2009-05-19 Apple Inc. Method and apparatus for searching metadata
WO2008034213A1 (en) * 2006-09-18 2008-03-27 Infobright Inc. A method and system for data compression in a relational database
US7958104B2 (en) * 2007-03-08 2011-06-07 O'donnell Shawn C Context based data searching
US8335782B2 (en) * 2007-10-29 2012-12-18 Hitachi, Ltd. Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8655867B2 (en) * 2010-05-13 2014-02-18 Salesforce.Com, Inc. Method and system for optimizing queries in a multi-tenant database environment
US8290937B2 (en) * 2010-08-30 2012-10-16 International Business Machines Corporation Estimating and monitoring query processing time
US20130173662A1 (en) * 2012-01-03 2013-07-04 International Business Machines Corporation Dependency based prioritization of sub-queries and placeholder resolution
US9317553B2 (en) * 2012-10-31 2016-04-19 Microsoft Technology Licensing, Llc Declarative partitioning for data collection queries
US9519703B2 (en) * 2013-03-20 2016-12-13 International Business Machines Corporation Refining search results for a compound search query
US9646276B2 (en) 2013-08-23 2017-05-09 AppDynamics, Inc. Dashboard for dynamic display of distributed transaction data
US9495405B2 (en) * 2014-04-28 2016-11-15 International Business Machines Corporation Big data analytics brokerage
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101317176A (zh) * 2005-11-29 2008-12-03 泰普有限公司 利用后台处理在移动设备浏览器上显示搜索结果
US20070226239A1 (en) * 2006-03-21 2007-09-27 At&T Corp. Query-aware sampling of data streams
US20120078951A1 (en) * 2010-09-23 2012-03-29 Hewlett-Packard Development Company, L.P. System and method for data stream processing
US20130198227A1 (en) * 2012-01-30 2013-08-01 Siemens Corporation Temporal pattern matching in large collections of log messages
CN102622414A (zh) * 2012-02-17 2012-08-01 清华大学 基于对等结构的分布式高维索引并行查询框架
US20140236664A1 (en) * 2012-08-13 2014-08-21 Visier Solutions, Inc. Apparatus, systems and methods for dynamic on-demand context sensitive cluster analysis
CN104756111A (zh) * 2012-09-28 2015-07-01 甲骨文国际公司 策略查询到连续查询转换
CN104885080A (zh) * 2012-11-02 2015-09-02 谷歌公司 分类搜索结果

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘辰,高月秋: "《ORACLE数据库系统 管理与应用》", 31 March 1999 *

Also Published As

Publication number Publication date
EP3449437A4 (en) 2019-12-25
US11144556B2 (en) 2021-10-12
WO2017189012A1 (en) 2017-11-02
US20170316007A1 (en) 2017-11-02
EP3449437A1 (en) 2019-03-06

Similar Documents

Publication Publication Date Title
CN109154937A (zh) 查询响应的动态流式传输
US10360216B2 (en) Dynamic streaming of results of multi-leveled queries
US11789943B1 (en) Configuring alerts for tags associated with high-latency and error spans for instrumented software
CN109073350B (zh) 应用性能数据的预测性汇总和缓存
US8490055B2 (en) Generating dependency maps from dependency data
US11086755B2 (en) System and method for implementing an application monitoring tool
US11457029B2 (en) Log analysis based on user activity volume
US8782103B2 (en) Monitoring system for optimizing integrated business processes to work flow
US10116534B2 (en) Systems and methods for WebSphere MQ performance metrics analysis
US10452463B2 (en) Predictive analytics on database wait events
US20150286684A1 (en) Complex event processing (cep) based system for handling performance issues of a cep system and corresponding method
US20180253728A1 (en) Optimizing fraud analytics selection
US10353703B1 (en) Automated evaluation of computer programming
US10419553B2 (en) Dynamic docker pool recycling
US20180123922A1 (en) Correlating performance outliers and network performance impacting event metric
US10742519B2 (en) Predicting attribute values for user segmentation by determining suggestive attribute values
US20150332488A1 (en) Monitoring system performance with pattern event detection
US20150039555A1 (en) Heuristically modifying dbms environments using performance analytics
US20190179927A1 (en) Enterprise data services cockpit
US20180316743A1 (en) Intelligent data transmission by network device agent
US20230351401A1 (en) Automated Rules Execution Testing And Release System
US11048677B1 (en) Streamlined transaction and dimension data collection
US10644971B2 (en) Graph search in structured query language style query
US10423970B2 (en) Changing depth of analytics tracking or content targeting based on user value
US9369348B2 (en) Outage reporting

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination