CN116194896A - 基于摄取服务背压的智能跨度优先化 - Google Patents

基于摄取服务背压的智能跨度优先化 Download PDF

Info

Publication number
CN116194896A
CN116194896A CN202180061855.3A CN202180061855A CN116194896A CN 116194896 A CN116194896 A CN 116194896A CN 202180061855 A CN202180061855 A CN 202180061855A CN 116194896 A CN116194896 A CN 116194896A
Authority
CN
China
Prior art keywords
span
operations
tracker
request
priority
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
CN202180061855.3A
Other languages
English (en)
Inventor
K·J·西洛恩
B·T·苏里万
D·巴吉派
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN116194896A publication Critical patent/CN116194896A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

所公开的技术涉及自动仪表化web应用。在一方面,一种方法识别出web应用包括由用户交互触发的事件。该方法将事件与追踪器相关联,该追踪器被配置为基于由事件造成的第一操作集合的执行来记录追踪信息并获得第一跨度的性能的第一测量。该方法在代码中识别出第一操作集合的执行使得向服务器做出请求。该方法将请求与追踪器相关联。追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息并且获得作为第一跨度的子跨度的第二跨度的性能的第二测量。

Description

基于摄取服务背压的智能跨度优先化
相关申请的交叉引用
背景技术
随着基于web的应用变得更加先进,传统的追踪器应用可能无法跨服务器、平台或线程捕获准确的遥测数据。所公开的解决方案促进克服这些缺陷的改进的遥测能力和分析。
发明内容
在一方面,一种用于自动仪表化web应用的方法涉及从web应用的代码识别出web应用包括由用户交互触发的事件。该方法还涉及将事件与追踪器相关联。追踪器被配置为基于由事件造成的第一操作集合的执行来记录追踪信息并且获得第一跨度的性能的第一测量。第一跨度包括第一操作集合。性能的第一测量包括以下中的一个或多个:(i)执行第一操作集合的处理周期的数量和(ii)第一操作集合的执行时间。该方法还涉及在代码中识别出第一操作集合的执行使得向服务器做出请求。该方法还涉及将请求与追踪器相关联。追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息并且获得第二跨度的性能的第二测量。第二跨度包括第二操作集合。第二跨度是第一跨度的子跨度。性能的第二测量包括以下中的一个或多个(i)执行第二操作集合的处理周期的数量和(ii)第二操作集合的执行时间。
在一方面,该方法还涉及接收针对第一跨度的优先级,确定该优先级在优先级容差之外,并且基于该确定,将第一跨度识别为代理跨度。将第一跨度识别为代理跨度使得追踪器不基于第一操作集合的执行来记录信息。
在一方面,该方法包括访问针对第一跨度的更新后的优先级并且响应于确定更新后的优先级在优先级容差内而实例化追踪器并将第一跨度重新识别为跨度。
在一方面,该方法包括基于web应用的启动而实例化追踪器和追踪器。该方法还包括基于事件的触发而自动记录第一跨度的开始。该方法还包括基于请求的触发而自动记录第二跨度的开始。该方法还包括基于第二操作集合的完成而自动记录第二跨度的结束。该方法还包括基于第一操作集合的完成而自动记录第一跨度的结束。
在一方面,该方法还包括基于请求的触发而将请求发送到外部服务器。该方法还包括基于该发送,在外部服务器上自动记录第二跨度的开始。该方法还包括在外部服务器上执行第二操作集合。该方法还包括在外部服务器上自动记录第二跨度的结束。该方法还包括从外部服务器接收第二跨度的结束的指示。
在一方面,该方法包括访问针对第一跨度的优先级。该方法还包括基于第一跨度的优先级和web应用的启动来实例化追踪器。该方法还包括基于请求的触发而自动记录第二跨度的开始。该方法还包括基于第二操作集合的完成而自动记录第二跨度的结束。
在一方面,请求使服务器执行第二操作集合。该方法还包括自动记录第二跨度的结束包括从服务器接收包括关于第二跨度的信息的报头。
上述方法可以被实现为有形的计算机可读介质和/或在计算机处理器和附接的存储器内操作。
附图说明
图1描绘了根据本公开的方面的用于利用遥测自动仪表化(instrument)企业应用的系统的示例。
图2描绘了根据本公开的方面的用于搜集遥测数据的过程的示例。
图3描绘了根据本公开的某些方面的用于生成跨度上下文的仪表化的应用的示例。
图4描绘了根据本公开的方面的跨度层次结构的示例。
图5描绘了根据本公开的某些方面的用于生成跨度上下文和日志的仪表化的应用内的追踪器组件。
图6描绘了根据本公开的某些方面的用于管理由跨度的仪表化造成的背压的追踪体系架构的示例。
图7描绘了根据本公开的某些方面的具有优先化的跨度层次结构的示例。
图8描绘了根据本公开的某些方面的用于对跨度进行优先化的过程的示例。
图9描绘了根据本公开的某些方面的具有踪迹工作者(traceworker)客户端的分布式追踪环境的示例。
图10描绘了根据本公开的某些方面的用于仪表化线程的过程的示例。
图11描绘了根据本公开的某些方面的用于跨分布式软件应用传播追踪的过程的示例。
图12描绘了根据本公开的某些方面的跨分布式系统中的服务传播跨度上下文(context)的示例。
图13描绘了根据本公开的某些方面的报头的示例。
图14描绘了用于实现各方面中的一个方面的分布式系统的简化图。
图15是根据一方面的系统环境的组件的简化框图,通过该系统环境,由一方面系统的组件提供的服务可以作为云服务提供。
图16图示了示例性计算子系统,其中可以实现本发明的各个方面。
具体实施方式
本文公开的技术提供了用于为企业应用自动提供遥测能力的解决方案。遥测是指搜集有关软件的运行时执行的报告性能数据。此类数据的示例包括网页或应用上某些特征的使用频率、启动时间或执行时间的测量、过程是否崩溃、故障信息和用户体验。遥测数据可以基于应用或更细粒度的级别进行搜集,诸如关于网页的每个过程完成所花费的时间的运行时度量。所公开的解决方案使用应用编程接口(API)能力来启用对遥测数据的访问。
如所讨论的,现有解决方案存在缺陷。例如,一些现有解决方案可以要求追踪库的手动导入或链接,然后在期望仪表化数据的代码的部分周围添加一个或多个函数调用。此外,此类解决方案可以要求开发人员从一个或多个供应商选择仪表化库并且配置这些库。相比之下,所公开的解决方案通过在代码中检测事件和对服务器的调用并自动仪表化这些事件来自动仪表化基于web的应用。
在一方面,所公开的系统可以自动仪表化企业应用而不要求来自软件开发人员的输入。本公开的某些方面涉及提供运行时遥测框架的软件开发工具,该框架可以被自动集成到由软件开发人员设计的自定义应用中。例如,软件开发工具可以自动将追踪功能注入企业应用。追踪功能自动追踪诸如用户交互、页面导航和服务器调用之类的操作,并以启用从用户在网页上的点击开始的端到端追踪的方式将相关的逻辑事务分组在一起,包括实现后端服务的分布式服务器系统(异构或其它)。
在另一方面,所公开的系统使得能够对一个或多个跨度和与跨度相关的消息进行优先化,以最小化在一些情况下由大量仪表化数据造成的网络拥塞。例如,在运行时或之前,可以将特定跨度指定为较低优先级,这使得仪表化不测量该特定跨度的性能,同时仍然搜集针对子跨度的数据,这可以是开发人员更感兴趣的。
在又一方面,所公开的解决方案涉及使基于web的应用的开发人员可以获得关于作为企业应用的一部分执行的一个或多个过程的详细仪表化,而不管这些过程是否包括多个线程。在应用的运行时执行时,遥测框架促进跨各种过程、线程和服务器的仪表化。以这种方式,仪表化上下文是跨线程维护的,从而产生更细粒度的仪表化数据。
在另一方面,所公开的系统促进跨分布式系统的遥测,包括在分布式服务器上,由于安全性要求或出于其它原因,可能不会自动允许通过追踪报头指示的仪表化。更具体而言,某些方面可以自动发现协议支持并基于协议支持调整将追踪信息注入到不同的调用中。因此,所公开的系统能够获得用于在远程服务器上执行的过程的详细遥测数据,特别是通过跨域请求访问的远程服务器。此类服务器可以由不同域中的不同实体操作。
图1描绘了根据本公开的方面的用于用遥测自动仪表化企业应用的系统的示例。图1描绘了开发人员计算设备110、最终用户计算设备130、网络150和服务器140a-n。在图1中所描绘的示例中,开发人员计算设备110构建仪表化的应用120并将仪表化的应用120部署到服务器140a。服务器140a进而将应用服务于最终用户计算设备140。图2中示出了由仪表化的应用用于获得遥测数据的过程的示例。图3中示出了仪表化的应用的示例。在图14中描绘用于开发人员计算设备110和最终用户计算设备140的合适计算设备的示例(包括在客户端计算设备1402、1404、1406和1408中描绘的那些计算设备),以及合适服务器的示例(包括服务器1412)。
在仪表化的应用120的执行期间或与仪表化的应用120的执行相结合,最终用户计算设备140可以与一个或多个服务器140b-n连接以获得不同的资源(例如,图像、脚本等)和/或执行仪表化功能。在执行仪表化的应用120期间或之后,遥测数据122被传送回开发人员计算设备110以供分析。
开发人员计算设备110包括开发人员集成开发环境(IDE)112、后端开发人员工具114、控制台116和遥测数据122中的一个或多个。开发人员IDE 112是提供编译、链接、调试、追踪或其它功能的图形开发工具。后端开发人员工具114可以包括一个或多个编译器、链接器、调试器、模拟器等等。控制台116被用于查看通过执行仪表化应用120获得的遥测数据122。如所描绘的,遥测数据122包括在“服务器1”上执行并花费0.5秒的特定网页、在“服务器2”上执行并花费0.4秒的图像加载以及按钮点击造成0.2秒处理的数据。
服务器140a-n可以被配置为执行完全相同、相似或不同的功能。例如,服务器140a-n可以作为分布式服务器系统操作。在另一个示例中,服务器140a-n可以是web服务器、文件服务器或服务来自网页的一个或多个组件或可以接收数据库查询并提供结果的其它服务器。在一些情况下,服务器140a-n可以在不同实体(公司或个人)的控制下和/或处于不同的位置。因而,本文描述的某些方面涉及经由跨度上下文传播获得跨不同服务器的遥测数据。开发人员计算设备110、最终用户计算设备140、网络150和服务器140a-n可以跨一个或多个连接(诸如网络150)连接。网络150的示例包括有线网络、无线网络和互联网。
最终用户计算设备130包括web应用134(例如,网页)、web浏览器132和追踪器应用136。web应用134可以由web浏览器132渲染。可以作为web应用134的一部分的追踪器应用136提供仪表化能力。例如,追踪器应用136收集遥测数据,这些数据可以周期性地或按需导出到外部设备。遥测数据的示例包括某些功能的使用频率、启动时间或执行时间的测量、过程是否崩溃、故障信息和用户类型。
在示例中,软件开发人员使用开发人员IDE 112和后端开发人员工具114构建自定义的基于web的应用。特别地,在开发人员计算设备110上运行的软件工具插入提供遥测能力的代码(例如,追踪器代码),从而生成仪表化的应用120。在一些情况下,可以将仪表化的应用120从开发人员计算设备110直接发送到最终用户计算设备140。在其它情况下,仪表化的应用120被直接发送到服务器140a-n,仪表化应用120在服务器140a-n处托管并且随后由最终用户计算设备140下载。
最终用户计算设备140例如跨网络150从服务器140a访问应用。操作最终用户计算设备140的用户与应用进行交互,这使得最终用户计算设备140能够访问服务器140a-n中的一个或多个,服务器140a-n的一个或多个进而将应用的全部或部分提供给最终用户计算设备140。最终用户计算设备140执行遥测功能,这使得由用户与应用直接造成的操作(例如,点击、重新加载)或间接造成的操作(例如,从要加载的页面链接的图像等)被仪表化。以这种方式,可以获得比以前的解决方案更详细的遥测信息。遥测数据122由一个或多个服务器140a-n搜集。
如所讨论的,某些方面涉及从企业应用获得遥测信息。为了促进遥测,在企业应用内,创建了一个或多个跨度。如本文所使用的,跨度是指表示工作单元的命名操作的集合。特定的跨度可以指过程(process)。跨度具有跨度上下文。如本文所使用的,跨度上下文可以包括踪迹标识符和跨度标识符。因而,第一过程可以具有第一跨度并且第二过程可以具有第二跨度。如果第二过程被第一过程调用,那么第一跨度和第二跨度通过父-子关系关联,使得第一跨度是父并且第二跨度是子。追踪不同过程的跨度促进更详细的仪表化。
某些图和相关联的描述进一步解释某些方面。例如,图4-图5涉及跨度仪表化的不同方面。图6-图8涉及仪表化期间各种跨度的优先化。图9和图10涉及仪表化线程。图11-图13涉及跨不同设备传播跨度上下文。图14-图16图示了可以实现仪表化功能的各种计算系统。
基于web的企业应用的仪表化
图2描绘了根据本公开的方面的用于搜集遥测数据的过程200的示例。过程200可以由开发人员计算设备110和服务器140a-n中的一个或多个执行。
在方框202处,过程200涉及向客户端设备上的web浏览器提供网页应用。例如,服务器140a为web浏览器132提供web应用134。web应用134包括提供仪表化的追踪器应用136。web应用134在过程200之前使用追踪器应用136进行仪表化。
在方框204处,过程200涉及检测网页应用的启动。web浏览器132开始执行web应用134和追踪器应用136。服务器140a可以通过确定web浏览器132已经请求一个或多个资源来检测执行的启动。
在方框206处,过程200涉及基于网页应用的启动来实例化追踪器应用。追踪器应用136被配置为记录用于web应用134的追踪数据。
在方框208处,过程200涉及检测由与网页应用的交互发起的事件。web应用134继续执行并且事件被触发。事件的示例包括用户接口交互、点击、导航、鼠标悬停、刷新等。此外,事件可以是代表性状态转移(REST)。
在方框210处,过程200涉及基于检测自动记录跨度的开始,该记录将跨度与追踪器应用相关联。追踪器应用136造成与事件对应的跨度的记录。
在方框212处,过程200涉及执行与事件对应的操作。web浏览器132执行与事件对应的代码,诸如加载图像或资源。
在方框214处,过程200涉及基于与事件对应的操作的完成来自动记录跨度的结束。在方框212中提到的代码完成时,追踪器应用136记录跨度的结束。所收集的数据可以包括使用的处理周期、执行跨度所花费的时间、存储器消耗等。
如本文所讨论的,某些方面可以测量与跨越多个服务器、处理线程或使用多个单独可识别的操作的跨度相关的数据。例如,方框210的执行可以导致创建附加的跨度,每个跨度提供更细粒度的信息。例如,追踪器应用136可以创建与第一操作对应的第一子跨度和与第二操作对应的第二子跨度。第一跨度和第二子跨度可以是跨度的子代。
继续该示例,追踪器应用136基于第一操作的完成自动记录第一子跨度的结束并且基于第一操作的完成自动记录第一子跨度的结束。因此,追踪器应用136获得比仅跨度更细粒度的信息。第一子跨度和第二子跨度与跨度相关联。
以下示例示出了使用Javascript插入客户端侧跨度上下文的代码:
Figure BDA0004116499610000081
/>
Figure BDA0004116499610000091
Figure BDA0004116499610000101
/>
图3描绘了根据本公开的某些方面的用于生成跨度上下文的仪表化的应用的示例。可以通过诸如开发人员IDE 112之类的软件开发工具对仪表化的应用进行构建和仪表化,并且可以在计算设备上执行的浏览器中执行。图3描绘了web应用环境300,其包括web应用302、服务器340、查询350和响应352。在图3中所示的示例中,仪表化有追踪器能力的web应用302在web浏览器上执行,与服务器340通信以提供一个或多个网页。web应用302发送一个或多个查询350并接收一个或多个响应352作为响应。虽然图3是关于网页描述的,但应当认识到的是,流程和组件可以由移动应用或其它应用执行。
web应用302示出了流程310,其包括具有组件314、316和318的网页312。这些组件可以是移动应用、web应用、服务连接、业务对象或过程。每个组件可以执行不同的功能,诸如网页的一部分。组件314、316和318中的每一个都可以分别造成组件事件315、317和318。组件事件315、317和318中的每一个触发遥测运行时320中的一个或多个发生,这进而使得执行一个或多个动作,同时记录事件。
流程310或网页312的模块可以彼此交互或相关。例如,对于特定网页,组件可以是用户接口(UI)组件、变量、动作链、网页流和页面导航,以及通过REST端点的数据访问。变量可以是用于存储和管理浏览器设置、客户端设备设置、用户设置或其它参数的状态的机制。网页的组件可以与遥测运行时交互,该遥测运行时为每个组件处理各种事件。
遥测运行时320可以生成与组件事件315、317和319对应的动作或动作改变。例如,用户可以点击浏览器内显示的网页的特定视觉元素,从而造成组件事件。遥测运行时320可以确定web浏览器应当导航到新网页330。遥测运行时320可以确定与用户点击相关联的动作是更新网页312的用户界面(UI)的一部分。
在另一个示例中,遥测运行时320可以发起与更新UI的一部分的步骤对应的动作链333。例如,动作链可以是一个或多个独立动作的集合,该一个或多个独立动作是相关的或者是顺序的动作336。每个动作链可以由事件触发。例如,用户点击可以触发去往与接收到用户点击的浏览器上的位置对应的页面的导航(例如,超链接、导航按钮等)。动作链可以定义在该动作链的范围内可用的输入参数和局部变量,并且可以包括应用范围的参数和变量。遥测运行时可以确定需要对服务器的一个或多个REST调用338来更新UI的一部分。
响应于REST调用338,web应用302向服务器340的REST服务端点332发送查询350。查询350可以包括注入跨度上下文。作为返回,服务器340发回响应352,其可以包括附加的HTTP报头。web应用302然后使用响应来完成由(一个或多个)组件事件造成的动作。
网页和页面导航的流程支配第一页面到第二页面之间的信息的通信。每个网页都具有预定义的生命周期,在浏览器中运行的每个应用也是如此。每个生命周期事件,诸如从页面进入或退出,都可以为动作链提供触发器。进入移动或web应用的所有数据都可能基于REST协议。这个数据可以来自自定义业务对象和来自由服务连接提供的业务对象。动作和变量控制如何将数据发送到移动或web应用中的REST端点以及从中发送数据。动作链具有明确定义的上下文和合同:动作链编排其底层动作,协调状态流和执行路径。动作链可以定义仅在该上下文中可用的输入参数和局部变量。动作链的示例是进行REST调用(第一动作),然后获取其结果并将其存储在变量中(第二动作)。动作可以将新状态导出到该上下文,但它仅可用于沿着同一动作链的未来动作。动作链可以在页面或应用的上下文中创建,并存在于页面或应用的范围内。它具有定义好的接口和合同并且可以被事件触发器使用其ID调用。
遥测应用程序员接口(API)322可以使程序员能够访问遥测运行时的活动、任何动作或动作链、组件事件和其它相关活动(例如,服务器对动作的响应)。遥测API 322可以将跨度日志输出到数据库、存储介质或另一个服务器或浏览器以进行附加处理。在一个示例中,遥测API可以是REST API。遥测API 322可以存储云基础设施对象,诸如审计日志、应用流日志或其它日志文件。遥测API 322可以周期性地对存储的云基础设施对象进行采样,以将遥测数据输出到公共分析摄取324或客户端日志摄取端点326。
公共分析摄取324可以从遥测API 322摄取日志数据。在一个示例中,公共分析摄取324可以使用REST API从云基础设施对象存储装置中摄取日志数据。在一个示例中,公共分析摄取324可以确定收集的日志数据的存储位置。公共分析摄取324可以在用户、组或组织级别摄取各种日志数据。在一些示例中,公共分析摄取324可以将日志数据变换为分析控制台的可视化。
客户端日志摄取端点326还可以被配置为从遥测API 322接收日志数据。客户端日志摄取端点326可以存储日志数据、将日志数据变换为各种可视化、或对日志数据执行附加处理。
一般而言,分布式追踪可以使用分布式追踪体系架构内的踪迹-客户端API来实现。踪迹-客户端API包含追踪器,其被用于在应用内围绕操作创建跨度。跨度可以具有指示相应父跨度的较小粒度操作的子跨度,而父跨度进而可以具有指示比第一子跨度更小粒度操作的子跨度。从单个父代发出的跨度的集合可以被认为是踪迹。跨度包含有关它们正在测量的操作的元数据,以及一些识别信息。对于具有过程外调用操作的应用(例如,对REST服务进行调用的客户端应用),跨度上下文可以与传出请求一起被传播(例如,以特殊HTTP报头的形式)。接收应用或服务器可以提取跨度上下文并使用它在客户端上创建父跨度的子跨度。踪迹-客户端API具有以日志消息的形式将跨度信息(跨度的开始和结束各一条)输出到各种后端服务器的能力。
应用跨度的示例是简单的应用流程。例如,用户导航到网页并点击按钮。按钮点击触发事件,这使得应用调用事件处理程序。事件处理程序做出REST(定义)请求,该请求由REST服务处理。该服务返回响应,这使得应用的用户界面被更新。这个示例在图4中示出。
图4描绘了根据本公开的一方面的跨度层次结构的示例。图4描绘了跨度层次结构410和跨度时间线430。跨度层次结构410和跨度时间线430一起描述跨度上下文中各个跨度之间的关系的集合。在跨度层次结构410或跨度时间线430内,父跨度和子跨度之间存在关系。如所描绘的,跨度层次结构410表示诸如用户点击412、事件处理程序414、REST请求416、过程响应418、服务器过程请求420和更新UI 422之类的事件的层次结构。跨度时间线430包括跨度A 424、跨度B 434、跨度C 436、跨度D 440、跨度E 438和跨度F 442。
在示例中,web浏览器132接收用户点击412。用户点击412导致跨度A 424的创建。作为响应,web浏览器132发起由用户点击的动作表示的事件,该事件触发事件处理程序414的操作。web浏览器132可以使用事件处理程序414来响应于基于接收到的用户点击检测到什么事件而确定要采取一个或多个动作。事件处理程序414的实例化造成跨度B 434,该跨度B是跨度A 424的子跨度。
继续该示例,事件处理程序414造成REST请求416和过程响应418。因为处理REST请求的响应发生在REST本身之后,所以(与REST请求对应的)跨度C 436发生在跨度E 438之前。REST请求使得服务器处理该请求。REST响应的处理使得用户界面(UI)被相应地更新。因此,如所描绘的,REST请求416造成服务器过程请求和更新UI 422。因为直到服务器处理该请求之后才更新UI,因此(与服务器过程请求对应的)跨度D 440在(与更新UI对应的)跨度F442之前开始并完成。因此,跨度D 440表示服务器对请求的处理。
如可以看出的,跨度D 440发生在跨度C 436期间并且跨度F 442发生在跨度E 438期间。跨度E 438表示浏览器对来自服务器的响应的处理,该响应与从浏览器做出的REST请求对应。跨度F 442表示浏览器基于对来自服务器的响应的处理而更新用户界面。跨度C436和E 438是跨度B的子代,但按顺序执行。跨度D 440和F 442分别是跨度C 436和E 438的子代。
诸如关于图4所讨论的跨度上下文由仪表化库管理,该仪表化库由软件开发工具(例如,开发人员IDE 112)添加到自定义企业应用。
图5描绘了根据本公开的某些方面的用于生成跨度上下文和日志的仪表化的应用内的追踪器组件。在图5中描绘的示例中,执行web应用522的最终用户计算设备520经由各种命令和/或API调用与服务器560进行通信。web应用522可以由开发人员IDE 112开发并且可以是客户开发的软件。支持仪表化的代码由开发人员IDE 112自动添加。
最终用户计算设备520包括一个或多个模块,诸如web应用522(或任何其它消费客户端)、踪迹模块524、追踪器接口526、跨度接口528、追踪器530、跨度532、跨度日志记录库534(即,Bunyan记录器)、跨度堆栈536、浏览器控制台538、压缩层544、追踪器服务器流546、发送者任务548、消息队列542和追踪器控制台流552。进而,追踪器530操作以对web应用执行仪表化并创建一个或多个跨度532并将活动跨度添加到跨度堆栈536。服务器560包括一个或多个模块,诸如踪迹-收集器小服务程序(servlet)562。
随后,web应用522接收或检测来自用户的交互(例如,用户点击)。web应用522与踪迹模块524和/或追踪器接口526进行交互以启动一个或多个追踪器530。进而,跨度日志记录库534经由跨度接口528记录信息和元数据,诸如事件类型、事件的名称、服务器请求的URL、返回值的状态代码、错误、警告等。
各种API调用是可用的。API调用initTracer()初始化并返回全局追踪器对象。API调用initTracer针对应用上下文被调用一次并返回TracerOptions对象。API调用activeTracer返回全局追踪器对象。例如,API调用inject()使得跨度被注入请求(例如,服务器)中。在返回后,API调用extract()可以被用于提取跨度。
可以生成多个跨度。例如,追踪器530可以创建跨度来表示web应用522的事件或线程。追踪器530可以基于追踪器为其创建跨度的特定操作来适当地创建子跨度(例如,如关于图4所描述的)。如本文进一步讨论的,仪表化的应用可以从不同线程和/或不同服务器获得信息,这些线程和/或服务器服务于由应用中的事件的触发造成的请求。
web应用522可以使用追踪器接口526来控制追踪器或接收跨度的注入。追踪器还可以监视、写入或读取跨度堆栈536,其中一个或多个跨度可以被追踪器高速缓存或访问以监视父跨度,或者在新创建的跨度(诸如跨度532)内插入跨度上下文。web应用522可以使用跨度接口528将跨度相关信息传送到跨度日志记录库534。压缩层544可以在将跨度相关信息发送到踪迹-收集器小服务程序562之前压缩跨度相关信息最小化。压缩层544使用的压缩技术的示例包括zip和gzip。在一个示例中,追踪器控制台流552可以将跨度日志的流输出到最终用户计算设备140上呈现的浏览器控制台。进而,服务器560可以执行踪迹-收集器小服务程序562,其将跨度日志进行流传输并从最终用户计算设备520上的发送者任务548收集踪迹。
跨度的优先化
本公开的方面涉及仪表化web应用。在一些情况下,由于大量事件和结果产生的跨度和/或导致子跨度的调用,多个跨度会变得难以管理或优先化。在此类情况下,某些方面提供了用于减少跨度的有效载荷的特征,以达到减少跨度日志的容量和简化遥测数据的目的。
在默认模式下,仪表化可以捕获所有跨度并基于所有跨度向浏览器控制台和任何服务发出消息。但是,在一些情况下,可能出现无法管理的数量的跨度消息,从而混淆感兴趣的相关遥测数据的清晰图片。因此,可以基于一个或多个准则来过滤跨度。
另外,在一些情况下,感兴趣的跨度是子跨度,其提供比对应的父跨度更详细的信息。但是父跨度信息可能对跨度数据的拥塞起作用。因而,某些方面引入了代理跨度的概念,允许维护跨度树,同时仅搜集感兴趣的一个或多个特定子跨度的仪表化细节。
图6描绘了根据本公开的某些方面的用于管理由跨度的仪表化造成的背压的追踪体系架构的示例。图6描绘了追踪体系架构600,其包括应用运行时602、追踪器实施方式604、跨度控制器606、浏览器跨度日志记录库634、控制台流610、客户端日志记录服务(CLS)流612和客户端日志记录服务614中的一个或多个。在所描绘的示例中,跨度控制器606基于一个或多个参数来管理跨度并且对跨度进行优先化。应用运行时602可以类似于遥测运行时320并且执行类似于关于图3描述的遥测运行时320的操作。
在第一示例中,追踪器实施方式604启动用于应用运行时602的跨度。追踪器实施方式604可以在执行跨度的同时将跨度监视数据并发地传送到浏览器跨度日志记录库634。浏览器跨度日志记录库634将跨度日志数据输出到控制台流610,其可以呈现在最终用户设备的浏览器内。浏览器跨度日志记录库634还可以将跨度日志数据输出到CLS流612。CLS流612可以是传送到客户端日志记录服务614的日志数据的流。客户端日志记录服务614可以存储日志数据用于附加处理。
在另一个示例中,追踪器实施方式604接收由跨度控制器606创建的跨度。追踪器实施方式604还可以在针对其生成跨度的事件完成后返回跨度(例如,终止跨度)。追踪器实施方式604还可以从应用运行时602接收终止跨度的命令。跨度控制器606可以实现跨度优先化。每个跨度可以具有优先级级别。例如,跨度控制器606可以接收指示优先化哪个(哪些)跨度的一个或多个参数。在示例中,设置默认跨度优先级。如果给定跨度的优先级级别小于默认优先级,那么不返回用于该跨度和相关联的子跨度的数据。
在又一个示例中,追踪体系架构600提供要生成的初始跨度集,例如,如关于过程200所讨论的。可以为初始跨度集中的每个跨度赋予对应的优先级。随后,在运行时,可以基于程序员或用户输入来测量或不测量初始跨度集中的跨度,或将其修剪为子集。例如,可以设置阈值优先级。在运行时,任何优先级大于阈值优先级的跨度都将被转换成代理跨度并且不会被测量。
代理跨度维护跨度树,即,父跨度与子跨度之间的关系。但是因为未测量代理跨度,所以跨度控制器606不获得针对跨度的运行时仪表化测量,但仍然获得不作为代理跨度的任何子跨度的测量。跨度代理保留父与子之间的关系并因此维护树结构,即使树中的某些代理跨度不具有仪表化数据。因此,在某种程度上,跨度树被修剪,使得维护开发人员感兴趣的跨度数据。图7提供了使用代理跨度的示例。
图7描绘了根据本公开的某些方面的没有跨度优先化的跨度层次结构和具有优先化的跨度层次结构的示例。特别地,图7描绘了不使用优先化的跨度层次结构700和使用优先化的跨度层次结构730。
在跨度层次结构700中,跨度A 702是跨度B 704的父跨度。进而,跨度B 704是跨度C 706、跨度D 708和跨度E 710的父跨度。在跨度层次结构700中,搜集用于所有跨度(跨度A702、跨度B 704、跨度C 706、跨度D 708和跨度E 710)的数据。
相反,在跨度层次结构730中,图示了具有跨度优先化的层次结构。跨度层次结构730包括跨度A 732和跨度代理B 734,跨度代理B 734是跨度A 732的子代。跨度A 732的优先级为1。跨度代理B734的优先级为2,大于跨度A 732的优先级。在这个示例中,默认优先级被设置为1。跨度代理B 734已从原始跨度B转换,因为不需要来自跨度B的仪表化数据,如跨度B的优先级为2所指示的,这高于默认优先级。
因此,跨度C 736、跨度D 738和跨度E 740(所有这些都具有优先级1并因此未被修剪)被标记为具有父跨度A 732,因为它们的原始父跨度B被用作代理。因而,在运行时,为跨度A 732、跨度代理B 734、跨度D 738和跨度E 740搜集仪表化数据。
从实施方式的角度来看,用于创建跨度的SpanOptions对象包含优先级字段。在一些情况下,跨度上没有优先级指示根跨度的隐式优先级为“高”(1),子跨度为“中”(2)。创建并返回(由SpanImpl识别的)跨度并正常发出消息。如果跨度已被用作代理,那么代替地创建SpanProxy对象。SpanProxy对象可以像任何其它Span(跨度)对象一样进行交互,但SpanProxy的字段和方法将委托给活动跨度。例如,在上面的示例中,跨度代理B 734与对象SpanProxy对应,并且其中的方法和字段将默认为与跨度A 732的对象对应的方法和字段。以这种方式,不需要调整应用运行时环境,因为就应用而言,它总是接收跨度。
在一些实施方式中,优先级值由正数表示,越高的值指示越低的优先级。例如,优先级级别0可以是最高优先级,然后是级别1,然后是级别2,依此类推。因此,在这个实施方式中,任何优先级值高于阈值优先级的跨度都被转换成代理跨度。但是不同的编号方案是可能的,例如,越高的值指示越高的优先级。在一些情况下,优先级用别名表示,例如“临界”被指派给级别零,“高”被指派给级别1,“中”被指派给级别2,“低”被指派给级别3。默认情况下,根跨度的优先级可以为1,并且子跨度的优先级可以为2。
在一些情况下,优先级阈值可以通过车队范围的采样算法来修改。这种算法要求为每个优先级指派百分比和被选择落入其中一个百分比的随机数。越高的百分比通常会指派给越高的优先级,以确保应用的大多数用户发出最少量的遥测数据(出于容量和性能原因)。越小的百分比可以指派给越低的优先级,指示较少量的用户将发出更多的遥测数据,以便获得有关用户旅程的更深入的信息或其它更高粒度的信息。百分比可以应用于追踪器配置,或通过服务器侧简档选项来应用。
在一些情况下,可以发生优先级提升。优先级提升是指在运行时增加被代理的跨度的优先级。如果表明跨度具有有趣的仪表化数据,那么可能发生这种情况。优先级提升的示例包括持续时间过长且跨度不具有构成跨度的大部分持续时间的子代的情况,或者发生错误的情况。
追踪器系统可以被配置为动态地调整优先级阈值,例如,如果接收到太多请求和/或有效载荷太大(也称为“摄取服务背压”)。例如,收集跨度和日志的摄取服务(CLS)可以用指示已经发送了太多跨度和/或日志的HTTP错误代码(例如,“429太多请求”或“413有效载荷太大”)来响应。然后系统可以通过动态更改优先级阈值来响应,以便在后续请求中发送更少的日志。
下面的表说明了针对不同事件的跨度的示例优先级:
Figure BDA0004116499610000191
图8描绘了根据本公开的某些方面的用于对跨度进行优先化的过程800的示例。过程800可以由开发人员计算设备110和服务器140a-n中的一个或多个来执行。
在方框802处,过程800涉及从web应用的代码识别出web应用包括由用户交互触发的事件。例如,在仪表化期间,在开发人员计算设备110上执行的开发人员IDE 112确定web应用134包括由用户交互触发的事件。
在方框804处,过程800涉及将事件与第一跨度相关联。开发人员IDE 112将追踪器配置为基于由事件引起的(与事件的执行对应的)第一操作集合的执行来记录追踪信息。追踪器被配置为获得第一跨度的性能的第一测量。跨度是指第一操作集合。性能的测量的示例包括周期、处理时间、存储器使用、时延等。
在方框806处,过程800涉及在代码中识别出第一操作集合的执行使得对服务器做出请求。例如,第一操作集合可以涉及REST调用。
在方框808处,过程800涉及将请求与第二跨度相关联。基于识别出的请求,追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息。追踪器被配置为获得第二跨度的性能的第二测量。第二跨度是第一跨度的子跨度。
在方框810处,过程800涉及接收用于第一跨度的优先级。例如,在web浏览器132执行web应用134的运行时,开发人员可以调整用于第一跨度的优先级。优先级可以向上或向下调整。
在方框812处,过程800涉及确定优先级在优先级容差之外。在一些情况下,可以使用阈值代替容差。
在方框814处,过程800涉及基于该确定将第一跨度标记为代理跨度。继续该示例,web浏览器132将第一跨度标记为代理跨度,使得不搜集仪表化数据。在运行时,当web应用正在执行时,追踪器不基于与第一跨度对应的第一操作集合的执行来记录信息。
仪表化线程
传统上,基于web的应用可以使用主浏览器线程来进行用户界面操作。例如,对异步Javascript编程的改进使主浏览器线程成为创建响应式应用的可行方式。但是对于某些长时间运行的后台过程,应用开发人员可能选择使用Web Worker API,其允许创建实际的原生线程用于执行应用逻辑。
但是,在标准的分布式追踪应用中,单独的线程(诸如经由Worker API)被认为在过程之外或者至少在与在主线程上执行的追踪器不同的范围内。因此,需要在代码内配置追踪器以在工作者线程上进行操作。
相反,某些方面可以自动仪表化线程。例如,TraceWorker类通过将其封装在标准Worker类的子类中来抽象在应用代码中配置Tracer的工作。TraceWorker类使用算法来自动创建Worker线程,配置Tracer,然后加载将自动启用遥测的应用代码。然后可以选择将TraceWorker配置为覆盖原生web Worker API,以便应用在任何时候尝试创建Worker线程时,它都将是包装标准Worker功能的TraceWorker。
这种方法的优点包括对开发人员和用户透明的操作和启用线程外代码的遥测,同时保留线程之间的跨度层次结构。此外,不需要重复的配置数据,因为用于每个线程的配置数据将自动继承主线程的配置。
图9描绘了根据本公开的某些方面的具有踪迹工作者(traceworker)客户端的分布式追踪环境的示例。图9描绘了主浏览器线程910和工作者线程920。在图9中描绘的示例中,主浏览器线程910调用工作者线程920,工作者线程920将仪表化数据提供回主浏览器线程910。
主浏览器线程910包括主应用912、追踪器914和TraceWorker客户端917。工作者线程920包括TraceWorker shim代码922、应用工作者脚本924和追踪器925。工作者线程920是使用TraceWorker客户端917创建的对象并且可以用JavaScript编写。
工作者线程920可以在不同于诸如浏览器窗口之类的主要浏览器操作的上下文中运行。以这种方式,例如,如果工作者线程920要执行的任务是耗时的或复杂的,那么可以维持更具响应性的用户界面。
TraceWorker客户端917可以管理线程,诸如工作者线程920,诸如通过使用踪迹工作者shim代码922配置工作者线程920。添加踪迹工作者shim代码922促进获得跨度上下文和踪迹上下文。包装器的构造函数将用跨度包装,如果适用,它将是当前跨度的上下文的子代。工作者线程用在创建时运行的应用脚本进行初始化并且具有通信端口。
TraceWorker客户端917生成并执行shim代码922,该shim代码执行以下动作:(1)临时安装消息处理程序以处置来自主线程的所有传入消息,(2)加载所有分布式追踪依赖项,以及(3)用指示成功(或失败)的消息进行回复。
如果成功,那么TraceWorker客户端917将获得活动跨度上下文和追踪器配置,并且发送到shim。shim将接收追踪器配置,初始化追踪器,并创建接收到的跨度上下文的子跨度。然后,shim将注入应用工作者代码并移除其消息处理程序。应用和工作者线程进而执行各种操作。
一旦被创建,工作者线程920就可以创建追踪器并将一个或多个配置参数从工作者线程920复制到追踪器925。工作者线程920还可以提取与由主应用912创建的跨度相关联的跨度上下文。工作者线程920可以创建由包括跨度上下文的主应用912创建的跨度的子跨度。在工作者线程920执行应用工作者脚本924期间,子跨度可以被追踪器925创建和捕获以供进一步处理。工作者线程920可以将应用工作者脚本924已经成功完成的情况传达给TraceWorker客户端917。TraceWorker客户端917随后可以向主应用912传达工作者线程成功的信息。主应用912可以向追踪器914传达跨度已完成并终止跨度。
在一个示例中,可以经由消息的系统在工作者线程和主应用之间发送数据,在消息的系统中双方都发送它们的消息。可以使用诸如postMessage()之类的方法来发送消息,并且可以使用on message事件处理程序传送对接收到的消息的响应,使得消息被包含在消息事件的数据属性内。在这个特定配置中,消息数据被复制而,代替在主应用和工作者线程之间共享。工作者线程可以产生辅助工作者线程(例如,辅助线程),其中工作者托管在与父页面相同的源点内。
下面的示例代码说明了开发人员可以如何使用TraceWorker线程:
Figure BDA0004116499610000221
/>
Figure BDA0004116499610000231
图10描绘了根据本公开的某些方面的用于仪表化线程的过程1000的示例。过程1000可以由开发人员计算设备110和服务器140a-n中的一个或多个来执行。
在方框1002处,过程1000涉及向客户端设备上的web浏览器提供网页应用。例如,服务器140a向最终用户计算设备130上的web浏览器132提供web应用134。
在方框1004处,过程1000涉及从网页应用创建被配置为记录网页应用的追踪数据的全局追踪器。类似于关于过程200的方框206所描述的,创建全局追踪器。
在方框1006处,过程1000涉及从网页应用实例化用于辅助线程的包装器。包装器被配置为在执行辅助线程之前执行shim代码。
在方框1008处,过程1000涉及将全局追踪器的配置数据从包装器传递到shim代码。
在方框1010处,过程1000涉及从shim代码创建辅助追踪器。辅助追踪器被配置为记录辅助线程的追踪数据。网页应用和子线程的追踪数据通过全局追踪器的配置数据进行关联。
在方框1012处,过程1000涉及从shim代码执行辅助线程。
跨服务器调用来仪表化跨度
图11描绘了根据本公开的某些方面的用于跨分布式软件应用传播追踪的过程1100的示例。过程1100可以由诸如最终用户计算设备140之类的计算系统来实现并且可以是追踪器应用136的一部分。过程1100涉及为远程服务器创建适当的请求以获得资源(例如,网页、图像或文件)。该请求可以采用超文本传输协议(HTTP)。出于说明性目的,结合图12来讨论过程1100。
图12描绘了根据本公开的某些方面的跨分布式系统中的服务来传播跨度上下文的示例。服务的示例包括对服务器的REST调用。例如,渲染特定网页可以要求多个REST调用,每个调用具有特定的目的。第一REST调用可以使得web浏览器渲染页面,第二REST调用可以获得位于服务器(REST端点)上的图像以显示在页面上,或者第三REST调用可以是数据库查询以获得一些信息,诸如员工的经理的姓名。REST调用还可以使得执行一个或多个子REST调用。
REST调用可以是跨源调用。跨源调用从不作为原始服务器的服务器(例如,为网页提供服务的服务器)请求信息。例如,原始服务器可以在oracle.com上,而第二个服务器可以在google.com上。在一些情况下,过程1100在确定来自原始服务器的网页要求对原始服务器的域外的外部服务器的请求之后执行。该确定可以与跨源资源共享(CORS)兼容。
图12包括服务1210和服务1220。服务1210可以执行浏览器并且服务1220在由REST端点识别出的服务器上执行。服务1210包括父跨度1212、子跨度1214和子跨度1216。服务1220包括子跨度1222,它在REST调用之后。在示例中,子跨度1214和1216表示在REST调用和子跨度1222的上下文通过网络发送到服务器之前需要发生的处理。进而,如果服务器做出这样的请求,那么它可以将其跨度上下文传播到另一个服务器。每个服务器收集其相应的踪迹并将它们发送到适当的位置。
如所讨论的,跨度上下文包括根跨度或踪迹标识符,其指示试图完成的总体目标(例如,加载页面)。完整的跨度上下文包括通常为128位表示的踪迹标识符(ID)和通常为64位随机数的子ID。根据每个跨度上下文,可以从指向它们相应父代的所有跨度上下文中的每个跨度上下文构造图。
返回到图11,在方框1101处,过程1100开始。追踪器应用136可以记录来自原始服务器的网页的追踪数据。追踪数据可以包括先前的请求及其成功和失败。从追踪数据,追踪器应用136可以形成包括不接受带有追踪报头的请求的目的地服务器的拒绝列表和/或包括接受带有追踪报头的请求的目的地服务器的允许列表。在一些情况下,如果检测到跨域请求,那么过程1100执行。
可以经由将追踪报头注入到对服务器的资源请求(例如,作为网页加载的一部分)来实现仪表化。但是追踪报头可能常常被拒绝,例如出于安全原因。因而,过程1100涉及解决此类安全措施以促进遥测。例如,考虑图12,服务1210在原始服务器上执行,而服务1220在外部服务器上执行。因此,父跨度1212(例如,对于第一过程)在原始服务器上执行。使用本文公开的技术,追踪器应用136不仅可以分析父跨度1212,而且还可以分析从子跨度1214导出的子跨度1214和子跨度1216。但是可以看出,父跨度1212也与子跨度1222相关,子跨度1222在服务1220上执行(因此在外部服务器上执行)。过程1100可以被用于将跨度上下文从父跨度1212传播到子跨度1222,从而促进仪表化。
在方框1102处,过程1100涉及确定CORS是否处于活动状态(例如,检测到跨域请求)。如果CORS处于活动状态,那么过程1100继续前进到方框1103。在这种情况下,如果不需要CORS,那么过程1100前进到方框1108,在方框1108处报头被注入。
在方框1103处,过程1100涉及确定对资源的请求是否是幂等(idempotent)的。幂等意味着使用该方法的多个相同请求对服务器的预期效果与单个此类请求的效果相同。因而,如果请求对服务器的预期效果不是幂等的,(即,将不具有与先前请求相同的效果),那么过程1100前进到方框1104。否则,如果请求是幂等的,那么过程1100前进到方框1115。
在方框1104处,过程1100涉及确定请求的目的地是否在服务器拒绝列表上。例如,追踪器应用136在拒绝列表中搜索外部服务器是否不允许追踪来自原始服务器的请求中的报头。服务器拒绝列表包括被识别为拒绝包括额外报头的请求的服务器(例如,如由过程1100的方框1112识别出的请求创建的)。拒绝服务器列表是有用的,因为在让REST调用失败与仅没有遥测信息之间做出选择,仅没有遥测信息是优选的。
如果对服务的请求不支持传播报头,那么该请求被添加到拒绝列表,这将阻止任何进一步自动尝试为这个用户会话注入上下文,并在没有注入报头的情况下执行请求。在一方面,拒绝列表不高速缓存在本地存储装置中,使得不完整的配置不造成未来请求的阻塞。目的地可以同时在允许列表和拒绝列表中,但如果是这样,那么拒绝列表将优先。
允许列表和拒绝列表被实现为关联数组以改进查找时间。这些列表以失败的请求的URL源点(没有任何参数)或个体服务为关键字。这可能由请求的配置确定。映射的值可以为空,但稍后可能包括实际失败或关于被添加到列表的原因的其它元数据。
调用的示例包括:
{'http://example.com/':null,//允许-拒绝整个源点
'http://someurl.com/myservice':'additional metadata',//允许-拒绝个体服务}
如果服务器被列入拒绝列表,那么过程1100前进到方框1114。如果服务器未被列入拒绝列表,那么过程1100移动到方框1105。
在方框1105处,过程1100涉及确定请求的目的地是否是允许列表上的服务器。例如,追踪器应用136在允许列表中搜索外部服务器是否允许追踪来自原始服务器的请求中的报头。允许列表包括被识别为接受具有额外报头的请求的服务器(例如,如由过程1100的方框1112中的请求创建的)。
一旦确定支持传播报头,就将特定目的地添加到允许列表。允许列表可以被高速缓存在本地存储装置中,这样就不需要进行附加的OPTIONS调用。这种方法消除了对用户接口支持的需求以明确允许列出服务端点。如果目的地在允许列表上,那么过程1100继续在方框1108处注入报头。如果目的地不在允许列表上,那么过程1100继续到方框1106。
在方框1106处,过程1100涉及执行HTTP OPTIONS调用。OPTIONS调用从服务器请求许可的通信选项。在CORS协议下,用OPTIONS方法发送预检请求(preflight request),以便服务器可以响应是否可以接受发送请求。OPTIONS调用导致确定是否接受注入追踪报头。在一些情况下,在方框1106处,过程1100涉及在浏览器已经自动执行这种检查之前执行预检请求。过程1100继续到方框1107。
在方框1107处,过程1100涉及从OPTIONS调用的结果确定服务器是否支持追踪报头。在一些情况下,OPTIONS调用可以发回许可(或接受)报头的列表。如果支持追踪报头,那么过程1100移动到方框1108,在方框1108报头被注入。如果不支持追踪报头,那么过程1100移动到方框1113,在方框1113服务器被添加到服务器拒绝列表。
以下是一些样本OPTIONS请求/响应(应注意的是,为简洁起见,一些报头已省略)。例如,示出了检测传播的OPTIONS请求:
OPTIONS/myendpoint/myservice HTTP/1.1Host:bar.other
Origin:http://foo.example
Access-Control-Request-Method:POST
Access-Control-Request-Headers:Content-Type,x-b3-trace-id,x-b3-span-id,x-b3-parentspanid,x-b3-sampled,ecid-context
在另一个示例中,示出了服务端点被配置用于传播时的响应:
HTTP/1.1 204No Content
Access-Control-Allow-Origin:https://foo.example Access-Control-Allow-Methods:POST,GET,OPTIONS
Access-Control-Allow-Headers:Content-Type,x-b3-trace-id,x-b3-span-id,x-b3-parentspanid,x-b3-sampled,ecid-context Access-Control-Max-Age:86400
在另一个示例中,示出了没有传播被配置的响应:
HTTP/1.1 204No Content
Access-Control-Allow-Origin:https://foo.example Access-Control-Allow-Methods:POST,GET,OPTIONS
Access-Control-Allow-Headers:
Content-Type Access-Control-Max-Age:86400
在方框1108处,过程1100涉及将报头注入到请求中。在请求中注入追踪报头是基于外部服务器允许在请求中追踪报头的确定的结果。追踪报头的内容的示例包括跨度上下文。
在示例中,使用Zipkin和/或执行上下文(ECID)将报头的两个集合注入到传出请求中。这些协议提供了用于保护上下文的覆盖范围,而服务开发人员侧只需进行最少的工作。
在示例中,由于其广泛支持而使用ZipkinB3 HTTP报头方案。B3报头的示例包括:
x-b3-traceid:{TraceId}
x-b3-parentspanid:{ParentSpanId}
x-b3-spanId:{SpanId}
x-b3-sampled:{Sampled}
TraceId是唯一的32字符的UUID字符串,SpanId是指示封闭的跨度的唯一的16字符的字符串,ParentSpanId是跨度的父代(如果适用)的唯一id,并且Sampled是指示是否报告跨度遥测的标志。
在另一个示例中,使用特定于Oracle的ECID-Context报头:ECID-Context:1.{TraceId}@@{SpanId};<RID>
RID是指示上下文的路径的编码的字节串;从浏览器来看,这个串将是“kXjE”,其在解码后指示请求的根。
一旦确定可以注入报头,就用Tracer.inject()API调用来执行注入。这个调用在将传出请求发送到服务器之前将HTTP报头注入到该传出请求中。
图13描绘了根据本公开的某些方面的报头的示例。图13描绘了报头1310,它们是没有仪表化的HTTP报头,以及报头1320,它们是与报头1310相同的HTTP报头,但添加了仪表化(以粗体文本示出)。
返回到图11,过程1100继续到方框1109。
在方框1109处,过程1100涉及向服务器发出请求。web浏览器将带有追踪报头的请求发送到外部报头。外部服务器被配置为基于追踪报头记录追踪数据。
在方框1110处,过程1100涉及确定对服务器的请求是否成功。如果请求成功,那么过程1100移动到方框1111,过程在此处结束。如果请求不成功,那么过程1100移动到方框1112。
在方框1111处,过程1100涉及结束针对请求的过程。在方框1111处,额外的报头被成功发送到服务器,这导致跨度上下文被传播到目的地服务器,然后目的地服务器协助仪表化。
在方框1112处,过程1100涉及确定在方框1110处识别出的故障是否是由于报头而不是某个其它错误。如果故障不是由于报头引起的,那么过程1100移动到方框1116,在此期间可以执行正常的故障转移/重试过程。如果故障是由于报头引起的,那么过程1100移动到方框1113并将服务器添加到服务器拒绝列表。
在方框1113处,过程1100涉及将目的地服务器添加到服务器拒绝列表。以这种方式,如果识别出具有相同目的地服务器的请求,那么过程1100不尝试将带有追踪报头的请求发送到拒绝它的同一服务器。在方框1113完成之后,过程1100移动到方框1114,在方框1114做出未注入的请求。
在方框1114处,过程1100涉及做出未注入的请求,例如,没有追踪报头的正常REST调用。在一些情况下,对处置请求的时间进行计时可以被用于遥测。在方框1114之后,过程1100继续到方框1118,方框1118涉及正常地处置响应。
在方框1115处,过程1100涉及确定请求是否在高速缓存的请求列表中。请求可以存储在高速缓存中以提高性能并减少故障。如果请求被高速缓存,那么过程1100前进到方框1117。如果请求没有被高速缓存,那么过程1100前进到方框1104。请求可以包括跨度上下文。
在方框1116处,过程1100涉及执行故障转移过程或重试请求。在这种情况下,假定页面未能加载或完成不是最优用户体验,在方框1116处,过程1100涉及重试发生故障的操作以确保追踪报头注入尝试没有造成故障。在一些情况下,开发人员可能没有添加足够的错误检查或优雅退出。因此,在这方面,方框1116有助于确保自定义应用不会由于遥测而发生故障。请求可以包括跨度上下文。
在方框1117处,过程1100涉及继续高速缓存的响应。高速缓存的响应被用于为请求提供服务。请求可以包括跨度上下文。跨度和日志被发送到跨度日志记录库,如关于图4和图5所讨论的。
图14描绘了用于实现各方面中的一个方面的分布式系统1400的简化图。在所示方面,分布式系统1400包括一个或多个客户端计算设备1402、1404、1406和1408,其被配置为通过一个或多个网络1410执行和操作客户端应用,诸如web浏览器、专有客户端(例如,Oracle Forms)等。服务器1412可以经由(一个或多个)网络1410与客户端计算设备1402、1404、1406和1408通信地耦合。
在各个方面,服务器1412可以适于运行由系统的一个或多个组件提供的一个或多个服务或软件应用。服务或软件应用可以包括非虚拟和虚拟环境。虚拟环境可以包括用于虚拟事件、贸易展览、模拟器、教室、购物交易场所和企业的环境,无论是二维或者三维(4D)表示、基于页面的逻辑环境等。在一些方面,这些服务可以被供应作为基于web的服务或云服务,或者在软件即服务(SaaS)模型下被供应给客户端计算设备1402、1404、1406和/或1408的用户。操作客户端计算设备1402、1404、1406和/或1408的用户进而可以利用一个或多个客户端应用来与服务器1412进行交互以利用由这些组件提供的服务。
在图中绘出的配置中,分布式系统1400的软件组件1418、1420和1422被示出为在服务器1412上实现。在其它方面,分布式系统1400的一个或多个组件和/或由这些组件提供的服务也可以由客户端计算设备1402、1404、1406和/或1408中的一个或多个来实现。然后,操作客户端计算设备的用户可以利用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以用硬件、固件、软件或其组合来实现。应该认识到的是,各种不同的系统配置是可能的,其可能与分布式系统1400不同。图中所示的方面因此是用于实现方面系统的分布式系统的一个示例,而不旨在进行限制。
客户端计算设备1402、1404、1406和/或1408可以是便携式手持设备(例如,
Figure BDA0004116499610000311
蜂窝电话、/>
Figure BDA0004116499610000312
计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google />
Figure BDA0004116499610000313
头戴式显示器),运行诸如Microsoft Windows />
Figure BDA0004116499610000314
和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 15、Palm OS等)的软件,并且启用互联网、电子邮件、短消息服务(SMS)、/>
Figure BDA0004116499610000315
或其它通信协议。客户端计算设备可以是通用个人计算机,作为示例,包括运行各种版本的Microsoft />
Figure BDA0004116499610000316
Apple />
Figure BDA0004116499610000317
和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行任何各种可商业获得的/>
Figure BDA0004116499610000318
或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS)的工作站计算机。替代地或附加地,客户端计算设备1402、1404、1406和1408可以是能够通过(一个或多个)网络1410进行通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有
Figure BDA0004116499610000321
手势输入设备的微软Xbox游戏控制台)和/或个人消息传送设备。
虽然分布式系统1400被示出为具有四个客户端计算设备,但是可以支持任何数量的客户端计算设备。其它设备(诸如具有传感器的设备等)可以与服务器1412进行交互。
分布式系统1400中的(一个或多个)网络1410可以是本领域技术人员熟悉的、可以使用任何各种可商业获得的协议支持数据通信的任何类型的网络,其中协议包括但不限于TCP/IP(传输控制协议/网际协议)、SNA(系统网络体系架构)、IPX(互联网报文交换)、AppleTalk,等等。仅仅作为示例,(一个或多个)网络1410可以是局域网(LAN),诸如基于以太网、令牌环等的LAN。(一个或多个)网络1410可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,依据电子电气学会(IEEE)802.14协议套件、蓝牙
Figure BDA0004116499610000322
和/或任何其它无线协议中的任意协议运行的网络);和/或这些网络和/或其它网络的任何组合。
服务器1412可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、
Figure BDA0004116499610000323
服务器、中档服务器、大型计算机、机架安装的服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合组成。服务器1412可以包括运行虚拟操作系统或涉及虚拟化的其他计算架构的一个或多个虚拟机。可以虚拟化逻辑存储设备的一个或多个灵活池,以维护服务器的虚拟存储设备。服务器1412可以使用软件定义网络来控制虚拟网络。在各种方面,服务器1412可以适于运行在前述公开中所描述的一个或多个服务或软件应用。例如,服务器1412可以与用于执行以上根据本公开的方面描述的处理的服务器对应。
服务器1412可以运行包括任何以上讨论的操作系统的操作系统,以及任何可商业获得的服务器操作系统。服务器1412还可以运行任何各种附加的服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、
Figure BDA0004116499610000331
服务器、数据库服务器,等等。示例性数据库服务器包括但不限于从Oracle、Microsoft、Sybase、IBM(国际商业机器)等可商业获得的那些数据库服务器。
在一些实施方式中,服务器1412可以包括一个或多个应用,以分析和整合从客户端计算设备1402、1404、1406和1408的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于:
Figure BDA0004116499610000332
馈送、/>
Figure BDA0004116499610000333
更新或者从一个或多个第三方信息源接收到的实时更新和连续数据流,其可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车交通监视等相关的实时事件。服务器1412还可以包括一个或多个应用,以经由客户端计算设备1402、1404、1406和1408的一个或多个显示设备来显示数据馈送和/或实时事件。
分布式系统1400还可以包括一个或多个数据库1414和1416。数据库1414和1416可以驻留在各种位置中。作为示例,数据库1414和1416中的一个或多个可以驻留在服务器1412本地的(和/或驻留在服务器1412中的)非瞬态存储介质上。替代地,数据库1414和1416可以远离服务器1412,并且经由基于网络的连接或专用的连接与服务器1412进行通信。在一组方面中,数据库1414和1416可以驻留在存储区域网络(SAN)中。类似地,用于执行服务器1412所具有的功能的任何必要文件都可以适当地本地存储在服务器1412上和/或远程存储。在一组方面中,数据库1414和1416可以包括适于响应于SQL格式的命令而存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
图15是根据本公开的方面的系统环境1500的一个或多个组件的简化框图,通过该系统环境1500,由一方面系统的一个或多个组件提供的服务可以被供应作为云服务。在所示方面,系统环境1500包括可以由用户使用以与提供云服务的云基础设施系统1502进行交互的一个或多个客户端设备1504、1506和1508。客户端计算设备可以被配置为操作客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某种其它应用,这些应用可以由客户端计算设备的用户用来与云基础设施系统1502进行交互以使用由云基础设施系统1502提供的服务。
应当认识到的是,图中描绘的云基础设施系统1502可以具有除了所描绘的那些之外的其它组件。另外,图中所示的方面仅是可以结合本发明的方面的云基础设施系统的一个示例。在一些其它方面,云基础设施系统1502可以具有比图中所示更多或更少的组件、可以组合两个或更多个组件、或者可以具有不同的组件配置或布置。
客户端设备1504、1506和1508可以是与上文针对1402、1404、1406和1408描述的那些设备类似的设备。
虽然示例性系统环境1500被示出具有三个客户端计算设备,但是可以支持任何数量的客户端计算设备。诸如具有传感器的设备等的其它设备可以与云基础设施系统1502进行交互。
(一个或多个)网络1510可以促进客户端1504、1506和1508与云基础设施系统1502之间的数据通信和交换。每个网络可以是本领域技术人员所熟悉的可以使用任何各种商业上可获得的协议(包括上面针对(一个或多个)网络1410所描述的那些协议)支持数据通信的任何类型的网络。
云基础设施系统1502可以包括一个或多个计算机和/或服务器,其可以包括上面针对服务器1412所描述的那些计算机和/或服务器。
在某些方面,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于web的电子邮件服务、被托管的office套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展以满足云基础设施系统的用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的本地服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,计算机网络云基础设施中的服务可以包括对存储装置、被托管的数据库、被托管的web服务器、软件应用或由云供应商向用户提供的其它服务的受保护的计算机网络访问,或者如本领域中另外已知的那样。例如,服务可以包括通过互联网对云上的远程存储装置进行密码保护的访问。作为另一个示例,服务可以包括基于web服务的被托管的关系数据库和脚本语言中间件引擎,以供联网的开发人员私有使用。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
在某些方面,云基础设施系统1502可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式递送给客户的应用、中间件和数据库服务产品的套件。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
大量数据(有时称为大数据)可以由基础设施系统在许多级别和不同规模上托管和/或操纵。这样的数据可能包含庞大而复杂的数据集,以致于很难使用典型的数据库管理工具或传统的数据处理应用进行处理。例如,使用个人计算机或其基于机架的对应物可能难以存储、检索和处理兆兆字节级的数据。使用最新的关系数据库管理系统以及桌面统计数据和可视化包,可能难以处理这种大小的数据。他们可能需要运行数千台服务器计算机的超出常用软件工具的结构的大规模并行处理软件,才能在可容忍的经过时间内捕获、整理、管理和处理数据。
分析人员和研究人员可以存储和操纵非常大的数据集,用以可视化大量数据,检测趋势和/或以其他方式与数据进行交互。并行链接的数十个、数百个或数千个处理器可以对此类数据执行动作,以呈现该数据或模拟对该数据或其表示的外力。这些数据集可能涉及结构化数据(例如,在数据库中组织的数据或以其他方式根据结构化模型进行组织的数据)和/或非结构化数据(例如,电子邮件、图像、数据blob(二进制大对象)、网页、复杂事件处理)。通过利用一方面的能力来相对快速地将更多(或更少)的计算资源集中在目标上,可以基于企业、政府机构、研究组织、私人、志趣相投的组织或个人的群体、或者其他实体的需求,云基础设施系统可以更好地可用于对大型数据集执行任务。
在各个方面,云基础设施系统1502可以适于自动供给、管理和追踪客户对由云基础设施系统1502供应的服务的订阅。云基础设施系统1502可以经由不同的部署模型来提供云服务。例如,可以依据公共云模型来提供服务,其中云基础设施系统1502被销售云服务的组织拥有(例如,被Oracle拥有),并且服务对一般公众或不同行业的企业可用。作为另一个示例,可以依据私有云模型来提供服务,其中云基础设施系统1502仅针对单个组织操作,并且可以为该组织内的一个或多个实体提供服务。还可以依据社区云模型来提供云服务,其中云基础设施系统1502和由云基础设施系统1502提供的服务由相关社区中的若干组织共享。还可以依据混合云模型来提供云服务,该混合云模型是两个或更多个不同模型的组合。
在一些方面,由云基础设施系统1502提供的服务可以包括依据软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别或包括混合服务的其它服务类别来提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统1502提供的一个或多个服务。云基础设施系统1502然后执行处理以提供客户的订阅订单中的服务。
在一些方面,由云基础设施系统1502提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和递送按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独的许可和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售绩效管理、企业集成和业务灵活性的解决方案的服务。
在一些方面,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共体系架构上整合现有应用以及充分利用平台提供的共享服务来构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础架构系统提供的PaaS服务,而无需客户购买单独的许可和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)等。
通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些方面,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle融合中间件服务)和Java云服务。在一个方面,数据库云服务可以支持共享服务部署模型,该模型使得组织能够汇集数据库资源并且以数据库云的形式向客户供应数据库即服务。在云基础设施系统中,中间件云服务可以为客户提供开发和部署各种业务应用的平台,并且Java云服务可以为客户提供部署Java应用的平台。
各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基础计算资源)的管理和控制,以供客户利用由SaaS平台和PaaS平台提供的服务。
在某些方面,云基础设施系统1502还可以包括基础设施资源1530,用于向云基础设施系统的客户提供用于提供各种服务的资源。在一个方面,基础设施资源1530可以包括预先集成和优化的硬件(诸如服务器、存储装置和联网资源)的组合,以执行由PaaS平台和SaaS平台提供的服务。
在一些方面,云基础设施系统1502中的资源可以由多个用户共享并且根据需要动态重新分配。此外,可以将资源分配给在不同时区的用户。例如,云基础设施系统1502可以使在第一时区中的第一组用户能够在指定的小时数内利用云基础设施系统的资源,并且然后使相同资源能够被重新分配给位于不同时区的另一组用户,从而使资源的利用率最大化。
在某些方面,可以提供由云基础设施系统1502的不同组件或模块以及由云基础设施系统1502提供的服务共享的多个内部共享服务1532。这些内部共享服务可以包括但不限于:安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
在某些方面,云基础设施系统1502可以提供云基础设施系统中的云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个方面,云管理功能可以包括用于供给、管理和追踪由云基础设施系统1502接收到的客户订阅等的能力。
在一个方面,如图中所绘出的,云管理功能可以由一个或多个模块提供,其中模块诸如订单管理模块1520、订单编排模块1522、订单供给模块1524、订单管理和监视模块1526,以及身份管理模块1528。这些模块可以包括一个或多个计算机和/或服务器或者使用一个或多个计算机和/或服务器来提供,这些计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
在操作1534中,使用客户端设备(诸如客户端设备1504、1506或1508)的客户可以通过请求由云基础设施系统1502提供的一个或多个服务并且对由云基础设施系统1502供应的一个或多个服务下订阅订单来与云基础设施系统1502进行交互。在某些方面,客户可以访问云用户界面(UI)(云UI 1512、云UI 1514和/或云UI 1516)并经由这些UI下订阅订单。云基础设施系统1502响应于客户下订单而接收到的订单信息可以包括识别客户以及客户想要订阅的由云基础设施系统1502供应的一个或多个服务的信息。
在客户已经下订单之后,经由云UI 1512、1514和/或1516来接收订单信息。
在操作1536处,订单存储在订单数据库1518中。订单数据库1518可以是由云基础设施系统1502操作和与其它系统元件一起操作的若干数据库中的一个数据库。
在操作1538处,订单信息被转发到订单管理模块1520。在一些情况下,订单管理模块1520可以被配置为执行与订单相关的计费和记账功能,诸如验证订单、以及在验证后预订订单。
在操作1540处,将关于订单的信息传送到订单编排模块1522。订单编排模块1522可以利用订单信息为客户下的订单编排服务和资源的供给。在一些情况下,订单编排模块1522可以使用订单供给模块1524的服务来编排资源的供给以支持所订阅的服务。
在某些方面,订单编排模块1522使得能够管理与每个订单相关联的业务过程并应用业务逻辑来确定订单是否应该进行到供给。在操作1542处,在接收到新订阅的订单时,订单编排模块1522向订单供给模块1524发送分配资源并配置履行订阅订单所需的那些资源的请求。订单供给模块1524使得能够为客户订购的服务分配资源。订单供给模块1524提供在由系统环境1500提供的云服务和用于供给用于提供所请求的服务的资源的物理实现层之间的抽象层。因此,订单编排模块1522可以与实现细节(诸如服务和资源是否实际上即时供给或预先供给并仅在请求后才分配/指派)隔离。
在操作1542处,一旦供给了服务和资源,就可以通过云基础设施系统1502的订单供给模块1524向客户端设备1504、1506和/或1508上的客户发送所提供的服务的通知。
在操作1546处,订单管理和监视模块1526可以管理和追踪客户的订阅订单。在一些情况下,订单管理和监视模块1526可以被配置为收集订阅订单中的服务的使用统计信息,诸如所使用的存储量、传输的数据量、用户的数量,以及系统运行时间量和系统停机时间量。
在某些方面,云基础设施系统1502可以包括身份管理模块1528。身份管理模块1528可以被配置为提供身份服务,诸如云基础设施系统1502中的访问管理和授权服务。在一些方面,身份管理模块1528可以控制关于希望利用由云基础设施系统1502提供的服务的客户的信息。这样的信息可以包括认证这些客户的身份的信息以及描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块1528还可以包括对关于每个客户的描述性信息以及关于如何和由谁来访问和修改这些描述性信息的管理。
图16图示了其中可以实现本发明的各个方面的示例性计算机系统1600。计算机系统1600可以用于实现上述任何计算机系统。如图所示,计算机系统1600包括经由总线子系统1602与多个外围子系统进行通信的处理单元1604。这些外围子系统可以包括处理加速单元1606、I/O子系统1608、存储子系统1618和通信子系统1624。存储子系统1618包括有形计算机可读存储介质1620和系统存储器1610。
总线子系统1602提供用于让计算机系统1600的各种组件和子系统按意图彼此通信的机制。虽然总线子系统1602被示意性地示出为单条总线,但是总线子系统的替代方面可以利用多条总线。总线子系统1602可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,其可以被实现为按IEEE P1686.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1604控制计算机系统1600的操作。一个或多个处理器可以被包括在处理单元1604中。这些处理器可以包括单核或多核处理器。在某些方面,处理单元1604可以被实现为一个或多个独立的处理单元1632和/或1634,其中在每个处理单元中包括单核或多核处理器。在其它方面,处理单元1504也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各个方面,处理单元1604可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在处理单元1604中和/或存储子系统1618中。通过适当的编程,处理单元1604可以提供上述各种功能。计算机系统1600可以附加地包括处理加速单元1606,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1608可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、小键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如Microsoft
Figure BDA0004116499610000411
运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如Microsoft />
Figure BDA0004116499610000412
460游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google />
Figure BDA0004116499610000413
)中的输入的Google />
Figure BDA0004116499610000414
眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,/>
Figure BDA0004116499610000415
导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(4D)鼠标、操纵杆或指向棒、游戏面板和绘图板、以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器4D扫描仪、4D打印机、激光测距仪和视线追踪设备。此外,用户接口输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1600向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于:可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备、以及调制解调器。
计算机系统1600可以包括包含软件元件、被示为当前位于系统存储器1610内的存储子系统1618。系统存储器1610可以存储在处理单元1604上可加载并且可执行的程序指令,以及在执行这些程序期间所生成的数据。
取决于计算机系统1600的配置和类型,系统存储器1610可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元1604立即访问和/或目前正被处理单元1604操作和执行的数据和/或程序模块。在一些实现中,系统存储器1610可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如包含有助于在启动期间在计算机系统1600内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS),通常可以存储在ROM中。作为示例而非限制,系统存储器1610也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1612、程序数据1614、以及操作系统1616。作为示例,操作系统1616可以包括各种版本的Microsoft
Figure BDA0004116499610000431
Apple />
Figure BDA0004116499610000432
和/或Linux操作系统、各种可商业获得的/>
Figure BDA0004116499610000433
或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google />
Figure BDA0004116499610000434
操作系统等)和/或移动操作系统(诸如iOS、/>
Figure BDA0004116499610000435
Phone、/>
Figure BDA0004116499610000436
OS、
Figure BDA0004116499610000437
15OS和/>
Figure BDA0004116499610000438
OS操作系统)。
存储子系统1618也可以提供用于存储提供一些方面的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统1618中。这些软件模块或指令可以被处理单元1604执行。存储子系统1618也可以提供用于存储根据本发明使用的数据的储存库。
存储子系统1618也可以包括可被进一步连接到计算机可读存储介质1642的计算机可读存储介质读取器1620。与系统存储器1610一起并且可选地,计算机可读存储介质1642可以综合地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1642也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的非暂态计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备、或者其它有形的计算机可读介质。当被指定时,这也可以包括非有形的暂态计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算机系统1600访问的任何其它介质。
举例来说,计算机可读存储介质1622可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和蓝光
Figure BDA0004116499610000441
盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1620可以包括但不限于:/>
Figure BDA0004116499610000442
驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质1620也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM)、基于DRAM的SSD,磁阻RAM(MRAM)SSD、以及使用基于DRAM的SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1600提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1624提供到其它计算机系统和网络的接口。通信子系统1624用作用于从其它系统接收数据和从计算机系统1600向其它系统发送数据的接口。例如,通信子系统1624可以使计算机系统1600能够经由互联网连接到一个或多个设备。在一些方面,通信子系统1624可以包括用于访问无线语音和/或数据网络的射频(RF)收发器组件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE802.28族标准),或其它移动通信技术,或其任何组合)、全球定位系统(GPS)接收器组件和/或其它组件。在一些方面,作为无线接口的附加或者替代,通信子系统1624可以提供有线网络连接(例如,以太网)。
在一些方面,通信子系统1624也可以代表可以使用计算机系统1600的一个或多个用户接收结构化和/或非结构化数据馈送1626、事件流1628、事件更新1630等形式的输入通信。
举例来说,通信子系统1624可以被配置为实时地从社交媒体网络和/或其它通信服务的用户接收非结构化的数据馈送1626,诸如
Figure BDA0004116499610000451
馈送、/>
Figure BDA0004116499610000452
更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1624也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1628和/或事件更新1630。产生连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子系统1624也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送1626、事件流1628、事件更新1630,等等,该一个或多个数据库可以与耦合到计算机系统1600的一个或多个流式传输数据源计算机进行通信。
计算机系统1600可以是各种类型之一,包括手持便携式设备(例如,
Figure BDA0004116499610000453
蜂窝电话、/>
Figure BDA0004116499610000454
计算平板电脑、PDA)、可穿戴设备(例如,/>
Figure BDA0004116499610000455
Glass头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1600的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少组件的许多其它配置是可能的。例如,也可以使用定制的硬件和/或特定的元素可以用硬件、固件、软件(包括小应用程序(applets))或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和示教,本领域普通技术人员将认识到实现各种方面的其它方式和/或方法。
在前述说明书中,本发明的各方面参考其具体方面进行了描述,但本领域技术人员将认识到的是,本发明不限于此。上述发明的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,可以在除本文所述的环境和应用之外的任何数量的环境和应用中利用各方面。相应地,本说明书和附图应当被认为是说明性而不是限制性的。

Claims (20)

1.一种自动仪表化web应用的方法,所述方法包括:
从web应用的代码识别出web应用包括由用户交互触发的事件;
将事件与追踪器相关联,其中追踪器被配置为基于由事件造成的第一操作集合的执行来记录追踪信息并且获得第一跨度的性能的第一测量,其中第一跨度包括第一操作集合,并且其中性能的第一测量包括以下中的一个或多个:(i)执行第一操作集合的处理周期的数量和(ii)第一操作集合的执行时间;
在代码中识别出第一操作集合的执行使得向服务器做出请求;以及
将请求与追踪器相关联,其中追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息并且获得第二跨度的性能的第二测量,其中第二跨度包括第二操作集合,其中第二跨度是第一跨度的子跨度,并且其中性能的第二测量包括以下中的一个或多个:(i)执行第二操作集合的处理周期的数量和(ii)第二操作集合的执行时间。
2.如权利要求1所述的方法,还包括:
接收针对第一跨度的优先级;
确定该优先级在优先级容差之外;以及
基于所述确定,将第一跨度识别为代理跨度,其中将第一跨度识别为代理跨度使得追踪器不基于第一操作集合的执行来记录信息。
3.如权利要求2所述的方法,还包括:
访问针对第一跨度的更新后的优先级;以及
响应于确定更新后的优先级在优先级容差内而实例化追踪器并将第一跨度重新识别为跨度。
4.如权利要求1所述的方法,还包括:
基于web应用的启动而实例化追踪器和追踪器;
基于事件的触发而自动记录第一跨度的开始;
基于请求的触发而自动记录第二跨度的开始;
基于第二操作集合的完成而自动记录第二跨度的结束;以及
基于第一操作集合的完成而自动记录第一跨度的结束。
5.如权利要求1所述的方法,还包括:
基于请求的触发而将请求发送到外部服务器;
基于所述发送,在外部服务器上自动记录第二跨度的开始;
在外部服务器上执行第二操作集合;
在外部服务器上自动记录第二跨度的结束;
从外部服务器接收第二跨度的结束的指示。
6.如权利要求1所述的方法,还包括:
访问针对第一跨度的优先级;
基于第一跨度的优先级和web应用的启动来实例化追踪器;
基于请求的触发而自动记录第二跨度的开始;以及
基于第二操作集合的完成而自动记录第二跨度的结束。
7.如权利要求6所述的方法,其中:
请求使服务器执行第二操作集合,以及
自动记录第二跨度的结束包括从服务器接收包括关于第二跨度的信息的报头。
8.一种系统,包括:
非暂态计算机可读介质,其存储计算机可执行程序指令;以及
至少一个处理器,通信地耦合到非暂态计算机可读介质并执行计算机可执行程序指令以用于以下操作:
从web应用的代码识别出web应用包括由用户交互触发的事件;
将事件与追踪器相关联,其中追踪器被配置为基于由事件造成的第一操作集合的执行来记录追踪信息并且获得第一跨度的性能的第一测量,其中第一跨度包括第一操作集合,并且其中性能的第一测量包括以中的一个或多个:(i)执行第一操作集合的处理周期的数量和(ii)第一操作集合的执行时间;
在代码中识别出第一操作集合的执行使得向服务器做出请求;以及
将请求与追踪器相关联,其中追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息并且获得第二跨度的性能的第二测量,其中第二跨度包括第二操作集合,其中第二跨度是第一跨度的子跨度,并且其中性能的第二测量包括以中的一个或多个:(i)执行第二操作集合的处理周期的数量和(ii)第二操作集合的执行时间。
9.如权利要求8所述的系统,其中计算机可执行指令包括用于以下操作的指令:
接收针对第一跨度的优先级;
确定该优先级在优先级容差之外;以及
基于所述确定,将第一跨度识别为代理跨度,其中将第一跨度识别为代理跨度使得追踪器不基于第一操作集合的执行来记录信息。
10.如权利要求9所述的系统,其中计算机可执行指令包括用于以下操作的指令:
访问针对第一跨度的更新后的优先级;以及
响应于确定更新后的优先级在优先级容差内而实例化追踪器并将第一跨度重新识别为跨度。
11.如权利要求8所述的系统,其中计算机可执行指令包括用于以下操作的指令:
基于请求的触发而将请求发送到外部服务器;
基于所述发送,在外部服务器上自动记录第二跨度的开始;
在外部服务器上执行第二操作集合;
在外部服务器上自动记录第二跨度的结束;
从外部服务器接收第二跨度的结束的指示。
12.如权利要求8所述的系统,其中计算机可执行指令包括用于以下操作的指令:
基于web应用的启动而实例化追踪器和追踪器;
基于事件的触发而自动记录第一跨度的开始;
基于请求的触发而自动记录第二跨度的开始;
基于第二操作集合的完成而自动记录第二跨度的结束;以及
基于第一操作集合的完成而自动记录第一跨度的结束。
13.如权利要求8所述的系统,其中计算机可执行指令包括用于以下操作的指令:
访问针对第一跨度的优先级;
基于第一跨度的优先级和web应用的启动来实例化追踪器;
基于请求的触发而自动记录第二跨度的开始;以及
基于第二操作集合的完成而自动记录第二跨度的结束。
14.如权利要求13所述的系统,其中计算机可执行指令包括用于以下操作的指令:
请求使服务器执行第二操作集合,并且其中自动记录第二跨度的结束包括从服务器接收包括关于第二跨度的信息的报头。
15.一种存储计算机可执行程序指令的非暂态计算机可读介质,当指令被处理器执行时,执行包括以下的操作:
从web应用的代码识别出web应用包括由用户交互触发的事件;
将事件与追踪器相关联,其中追踪器被配置为基于由事件造成的第一操作集合的执行来记录追踪信息并且获得第一跨度的性能的第一测量,其中第一跨度包括第一操作集合,并且其中性能的第一测量包括以中的一个或多个:(i)执行第一操作集合的处理周期的数量和(ii)第一操作集合的执行时间;
在代码中识别出第一操作集合的执行使得向服务器做出请求;以及
将请求与追踪器相关联,其中追踪器被配置为基于由请求造成的第二操作集合的执行来记录追踪信息并且获得第二跨度的性能的第二测量,其中第二跨度包括第二操作集合,其中第二跨度是第一跨度的子跨度,并且其中性能的第二测量包括以中的一个或多个:(i)执行第二操作集合的处理周期的数量和(ii)第二操作集合的执行时间。
16.如权利要求15所述的非暂态计算机可读介质,其中所述操作还包括:
接收针对第一跨度的优先级;
确定该优先级在优先级容差之外;以及
基于所述确定,将第一跨度识别为代理跨度,其中将第一跨度识别为代理跨度使得追踪器不基于第一操作集合的执行来记录信息。
17.如权利要求16所述的非暂态计算机可读介质,其中所述操作还包括:
访问针对第一跨度的更新后的优先级;以及
响应于确定更新后的优先级在优先级容差内而实例化追踪器并将第一跨度重新识别为跨度。
18.如权利要求15所述的非暂态计算机可读介质,其中所述操作还包括:
基于请求的触发而将请求发送到外部服务器;
基于所述发送,在外部服务器上自动记录第二跨度的开始;
在外部服务器上执行第二操作集合;
在外部服务器上自动记录第二跨度的结束;
从外部服务器接收第二跨度的结束的指示。
19.如权利要求15所述的非暂态计算机可读介质,其中所述操作还包括:
基于web应用的启动而实例化追踪器和追踪器;
基于事件的触发而自动记录第一跨度的开始;
基于请求的触发而自动记录第二跨度的开始;
基于第二操作集合的完成而自动记录第二跨度的结束;以及
基于第一操作集合的完成而自动记录第一跨度的结束。
20.如权利要求15所述的非暂态计算机可读介质,其中所述操作还包括:
访问针对第一跨度的优先级;
基于第一跨度的优先级和web应用的启动来实例化追踪器;
基于请求的触发而自动记录第二跨度的开始;以及
基于第二操作集合的完成而自动记录第二跨度的结束。
CN202180061855.3A 2020-09-13 2021-06-04 基于摄取服务背压的智能跨度优先化 Pending CN116194896A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063077649P 2020-09-13 2020-09-13
US63/077,649 2020-09-13
PCT/US2021/036007 WO2022055586A1 (en) 2020-09-13 2021-06-04 Smart span prioritization based on ingestion service backpressure

Publications (1)

Publication Number Publication Date
CN116194896A true CN116194896A (zh) 2023-05-30

Family

ID=76695867

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202180061824.8A Pending CN116157781A (zh) 2020-09-13 2021-06-04 用于丰富客户端应用运行时框架的开箱即用的遥测
CN202180061855.3A Pending CN116194896A (zh) 2020-09-13 2021-06-04 基于摄取服务背压的智能跨度优先化
CN202180061825.2A Pending CN116057512A (zh) 2020-09-13 2021-06-04 智能分布式追踪上下文注入

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202180061824.8A Pending CN116157781A (zh) 2020-09-13 2021-06-04 用于丰富客户端应用运行时框架的开箱即用的遥测

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202180061825.2A Pending CN116057512A (zh) 2020-09-13 2021-06-04 智能分布式追踪上下文注入

Country Status (5)

Country Link
US (9) US11681605B2 (zh)
EP (3) EP4211560A1 (zh)
JP (3) JP2023541407A (zh)
CN (3) CN116157781A (zh)
WO (3) WO2022055585A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4211560A1 (en) 2020-09-13 2023-07-19 Oracle International Corporation Smart distributed tracing context injection
US20220263828A1 (en) * 2021-02-17 2022-08-18 Target Brands, Inc. Client-side blocking and reporting of unauthorized network transmissions
US11915064B2 (en) * 2022-01-19 2024-02-27 Vmware, Inc. Highly concurrent and responsive application programming interface (API) in eventual consistency environment
US20240168734A1 (en) * 2022-11-21 2024-05-23 International Business Machines Corporation Identifying involvement of application services in a distributed application

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401141B2 (en) 2003-01-07 2008-07-15 International Business Machines Corporation Method and system for monitoring performance of distributed applications
US7076500B2 (en) 2003-06-30 2006-07-11 David Gallant Selective file caching method
US7886281B2 (en) 2004-03-30 2011-02-08 Symantec Corporation System and methods for cross-tier transaction tracing
US7496901B2 (en) 2004-06-22 2009-02-24 International Business Machines Corporation Method for boundary trace with reproduction facility
JP2006172142A (ja) 2004-12-16 2006-06-29 Matsushita Electric Ind Co Ltd マルチプロセッサシステム
US7467247B2 (en) 2005-10-31 2008-12-16 Hewlett-Packard Development Company, L.P. Timeouts on accessing a shared resource
US8245200B2 (en) 2008-07-11 2012-08-14 International Business Machines Corporation Method, system, and apparatus for dynamically injecting logging statements into web 2.0 javascript applications
US8230228B2 (en) 2008-10-31 2012-07-24 International Business Machines Corporation Support of tamper detection for a log of records
US20100162247A1 (en) 2008-12-19 2010-06-24 Adam Welc Methods and systems for transactional nested parallelism
US8407321B2 (en) 2010-04-21 2013-03-26 Microsoft Corporation Capturing web-based scenarios
US8452837B2 (en) 2010-11-03 2013-05-28 Google Inc. Data delivery
US9571591B2 (en) 2011-12-28 2017-02-14 Dynatrace Llc Method and system for tracing end-to-end transaction which accounts for content update requests
US9497095B2 (en) * 2012-03-22 2016-11-15 International Business Machines Corporation Dynamic control over tracing of messages received by a message broker
US20140053056A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US8966452B2 (en) 2013-04-20 2015-02-24 Concurix Corporation User interaction analysis of tracer data for configuring an application tracer
US20140317604A1 (en) * 2013-04-20 2014-10-23 Concurix Corporation Real Time Analysis of Tracer Summaries to Change Tracer Behavior
US9405654B2 (en) 2013-06-20 2016-08-02 Microsoft Technology Licensing, Llc Monitoring mobile application performance
US10257316B2 (en) 2014-03-30 2019-04-09 Cisco Technology, Inc. Monitoring of node.js applications
US9703675B2 (en) * 2014-08-11 2017-07-11 Microsoft Technology Licensing, Llc Structured logging and instrumentation framework
US9924293B2 (en) 2014-10-17 2018-03-20 Ca, Inc. Mobile applications incorporating mobile-based transactions detection and monitoring means
US10114830B2 (en) 2015-09-28 2018-10-30 Oracle International Corporation Lazy logger wrappers
US11580001B2 (en) * 2015-11-11 2023-02-14 Box, Inc. Dynamic generation of instrumentation locators from a document object model
US20180032905A1 (en) 2016-07-29 2018-02-01 Appdynamics Llc Adaptive Anomaly Grouping
US20190303178A1 (en) * 2018-03-30 2019-10-03 FullStory, Inc. Capturing and processing interactions with a user interface of a native application
US11343281B2 (en) 2019-08-16 2022-05-24 Cisco Technology, Inc. Enhanced web application security communication protocol
WO2020087082A1 (en) 2018-10-26 2020-04-30 Splunk Inc. Trace and span sampling and analysis for instrumented software
US11704129B2 (en) * 2019-11-25 2023-07-18 The Board Of Trustees Of The University Of Illinois Transparent interpretation and integration of layered software architecture event streams
US11334554B2 (en) * 2019-12-16 2022-05-17 Netflix, Inc. Watermark-based techniques for change-data-capture
US11339673B2 (en) 2020-01-17 2022-05-24 Raytheon Technologies Corporation Rotor assembly with internal vanes
EP4211560A1 (en) 2020-09-13 2023-07-19 Oracle International Corporation Smart distributed tracing context injection

Also Published As

Publication number Publication date
WO2022055586A1 (en) 2022-03-17
EP4211561A1 (en) 2023-07-19
EP4211560A1 (en) 2023-07-19
CN116057512A (zh) 2023-05-02
JP2023542646A (ja) 2023-10-11
WO2022055584A1 (en) 2022-03-17
US11899557B2 (en) 2024-02-13
US11681605B2 (en) 2023-06-20
EP4211562A1 (en) 2023-07-19
US12019534B2 (en) 2024-06-25
JP2023541413A (ja) 2023-10-02
US20220083452A1 (en) 2022-03-17
WO2022055585A1 (en) 2022-03-17
US20220083453A1 (en) 2022-03-17
US20230144532A1 (en) 2023-05-11
US20230093156A1 (en) 2023-03-23
US11544172B2 (en) 2023-01-03
US11586525B2 (en) 2023-02-21
US20230418723A1 (en) 2023-12-28
JP2023541407A (ja) 2023-10-02
US11797417B2 (en) 2023-10-24
US11693758B2 (en) 2023-07-04
US20220342795A1 (en) 2022-10-27
US11429509B2 (en) 2022-08-30
US20220083447A1 (en) 2022-03-17
US20230267064A1 (en) 2023-08-24
CN116157781A (zh) 2023-05-23
US20220083454A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
US10503493B2 (en) Distributed versioning of applications using cloud-based systems
US10803048B2 (en) Change data capture processing and analysis
US10949196B2 (en) Composite instance patching
US9251435B2 (en) Screenshot database for application verification
US9626240B2 (en) Adaptive application logger
CN109074265B (zh) 移动云服务的预先形成的指令
US11693758B2 (en) Smart span prioritization based on ingestion service backpressure
CN110023901B (zh) 用于更新基于云的多层应用栈的系统和方法
US11915062B2 (en) Server instance introspection for shared resource collisions using call stack dependencies

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