CN101983366B - 用于在多线程多层计算机化环境中跟踪请求的装置和方法 - Google Patents

用于在多线程多层计算机化环境中跟踪请求的装置和方法 Download PDF

Info

Publication number
CN101983366B
CN101983366B CN200880128473.2A CN200880128473A CN101983366B CN 101983366 B CN101983366 B CN 101983366B CN 200880128473 A CN200880128473 A CN 200880128473A CN 101983366 B CN101983366 B CN 101983366B
Authority
CN
China
Prior art keywords
request
layer
thread
data
response
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.)
Expired - Fee Related
Application number
CN200880128473.2A
Other languages
English (en)
Other versions
CN101983366A (zh
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.)
CORRELSENSE Ltd
Original Assignee
CORRELSENSE Ltd
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 CORRELSENSE Ltd filed Critical CORRELSENSE Ltd
Publication of CN101983366A publication Critical patent/CN101983366A/zh
Application granted granted Critical
Publication of CN101983366B publication Critical patent/CN101983366B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/544Buffers; Shared memory; Pipes
    • 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/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本主题公开了在多层计算机化环境中用于将请求和响应相关联的方法和装置,该方法包括:针对每一层来检测输入数据流和输出数据流;将所检测的数据发送至处理模块;对于每两个相邻层,将一层的输入数据与另一层的输出数据进行比较;将一层的输入请求与另一层的输出请求相关联。该关联可以使用ad-hoc ID。本主题还公开了一种计算机化装置,其用于检测数据,并且当数据用于匹配请求和响应时将该数据发送至多层环境外部的中央存储器。本主题的另一目的是一种在多线程计算机化环境中用于将输入请求与输出响应或输出请求相关联的方法。

Description

用于在多线程多层计算机化环境中跟踪请求的装置和方法
相关申请
本申请涉及题为“apparatus and method for tracking transactionrelated data”的PCT申请第PCT/IL2007/001062号。
技术领域
本发明大体上涉及在计算机化设备内跟踪事务相关数据,更具体地,涉及在多层计算机化环境中跟踪事务相关数据。
背景技术
复杂的多层计算机化网络环境使得在单个事务跨过多个层时难以保持对该单个事务的跟踪。层可以是执行应用程序的软件或硬件模块。这种多层计算机化环境的实例可以包括HTTP层(诸如门户网站、服务器和数据库)、分组及本地应用程序。
由用户发送的事务优选地需要多个层的资源,并且在很多情况下生成多个请求。这些请求被发送到这些层以用于检索或修改存储在这些层中的数据。例如,根据来自用户发送的询问来检索数据,或者在用户经由多层计算机化环境执行动作的情况下来更新数据。
用于对单个事务的请求和响应进行跟踪的一种解决方案是为父请求(事务的第一请求)添加标记,并且对于由该父请求生成的其他请求保持相同标记。这种解决方案需要对于实现和安装来说都复杂的标记模块,并且该标记模块可以被认为是侵入性的,由此用户和系统管理员提高对其的关注。在有故障的情况下这种解决方案尤其如此,可能影响整个层或客户端机器。此外,标记被添加到与请求和响应有关的数据包报头,因而处理操作系统、网络或通信协议的更深层。
根据一些已知的架构,可以在单个层的内部运行两个以上线程。例如,监听工作模块,其中,一个线程接收请求并将该请求委托给执行该请求的另一线程,另一线程生成附加请求或者将该请求发送至另一层。其他架构可以包括附加线程,例如从其他层接收响应并将响应发送至发送了该请求的层的另一线程。图1A示出了作为根据现有技术中所实现的三层:层1(110)、层2(120)和层3(130)。一条通信信道(未示出)连接层1(110)和层2(120),两条通信信道(未示出)连接层2(120)和层3(130)。如果由生成发送至层3(130)的三个SQL请求的层2(120)接收到两个IIOP请求,则不能明显地确定哪个IIOP请求生成了第二SQL请求。因此,长久以来期望在关于请求和响应的数据包中没有标记数据字段的情况下,将在处理其他请求的期间所生成的请求与生成这些请求的那些请求相关联。所解决的其他技术问题是用于确定请求的资源消耗以及每个层或线程在每个请求上所花费的时间的方法。
US专利第7,051,339号提供了通过对与事务(诸如请求和响应)有关的每个数据进行标记来实现对事务有关的任务进行跟踪和测量。以上公开了标记的缺点。US专利第6,714,976号公开了在客户端服务器环境中跟踪事务。例如,在客户端侧中检测数据,并将所检测的数据与服务器侧中的数据相比较。US专利第6,714,976号中公开的解决方案可能不适用于多层计算机化环境。US专利公开号2006/015512公开了通过在每一层上分配两个代理来在多层计算环境中跟踪数据,其中,一个代理用于检测与请求有关的数据,另一代理与相邻层的代理进行通信并发送由第一代理检测的数据字段。这种解决方案需要用于传输请求有关的数据的另一通信信道,并且需要用于每一层的另一模块。另外,该解决方案需要将每一层中的两个代理用于不同的目的,一个代理用于检测,另一代理用于处理数据并将数据发送至其他层的代理。
期望提供这样一种方法和装置,其用于将多个请求与相同事务相关联而无需增加或修改内核中的模块,从而其在用户空间中无缝操作,因此消除了对内核空间代理的需求。进一步地,期望仅使用每层中的一个代理将请求和响应相关联,并期望在多线程环境中将请求相关联。另一技术问题是,在不修改请求数据或响应数据(无论在数据包级中还是在字节流级中)的情况下并且在没有通过使用更多个代理而在各层之间增加附加通信交互的情况下,将请求相关联。
发明内容
公开的主题提供了用于除了使用解析模块或另一检测元件之外在层中没有使用其它模块的情况下,将请求和响应相关联的方法和装置。该主题还公开了一种在一个以上线程在层中进行操作的情况下,用于将请求和响应相关联的方法。
本主题的一个目的是公开了一种在多层计算机化环境中将请求和响应相关联的方法,该方法包括:针对每一层来检测输入数据流和输出数据流;将所检测的数据发送至处理模块;针对每两个相邻层,将一层的输入数据和另一层的输出数据进行比较,以及将一层的输入请求与另一层的输出请求相关联。
在一些实施方式中,该方法进一步包括确定请求的资源消耗的步骤。在一些实施方式中,该方法进一步包括确定事务的资源消耗的步骤。在一些实施方式中,位于层内的代理执行输入数据流和输出数据流的检测。在一些实施方式中,位于层外部的代理执行将一层的输入请求与相邻层的输出请求相关联。
本主题的另一目的是公开一种在多层计算机化环境中用于将请求和响应相关联的装置,该装置包括:至少一个解析单元,用于解析各层之间的输入数据流和输出数据流;中央存储器,用于接收并存储由至少一个解析单元解析的输入数据流和输出数据流;处理单元,用于将来自一层的输出数据与另一层的输入数据相关联。
在一些实施方式中,至少一个解析单元位于每一层内。在一些实施方式中,处理模块连接到至少一个解析单元。在一些实施方式中,处理模块位于层外部。
本主题的另一目的是公开一种在多线程计算机化环境中将输入请求和输出响应相关联的方法,该方法包括:检测输入请求;在工作线程执行请求之后,检测传输至发送层的输出响应,其中该请求从发送层发送至执行层;根据用于传输响应的通信信道,将输入请求和输出响应相关联。
在一些实施方式中,该方法进一步包括检测与执行请求的工作线程所生成的输出子请求相关联的数据以及检测对于子请求的输入响应的步骤。在一些实施方式中,通过使用包含在输出响应中的ad-hoc ID和包含在接收输出响应的发送层中的值来执行相关联。在一些实施方式中,该值是建立通信信道的步骤之后所执行的事件的序列号。在一些实施方式中,该值是在层内执行的可数事件的序列号。在一些实施方式中,该值是混列码(hash code)或CRC处理的函数。
本主题的另一目的是公开一种用于将多线程层中所执行请求的输入请求和输出请求相关联的方法,该方法包括:检测输入请求;检测与通信信道有关的输入数据流,其中,输入请求经由该通信信道传输至层;检测输出请求;检测处理输出请求的线程;检测与通信信道有关的输出数据流,其中,输出请求从层经由该通信信道被传输;将在输入请求和输出请求中检测的数据字段进行比较。
在一些实施方式中,该方法进一步包括根据所检测的数据在输入请求和输出请求之间进行相关联的步骤。在一些实施方式中,该方法进一步包括以下步骤:检测输入响应、检测输入响应经由其而被传输至层的通信信道以及检测发送该输入响应的线程。在一些实施方式中,该方法进一步包括检测输出响应和处理输出响应的线程的线程ID的步骤。
附图说明
结合附图,参考实施方式的以下说明,将描述本公开主题的示例性非限制实施方式。这些附图通常不按比例示出,并且任何尺寸均仅意味着是示例性的,而不一定是限制性的。相应或相似的元件由相同的标号或字母来表示。
图1A示出了根据现有技术的一些实施方式的多层计算机化环境;
图1B示出了根据本公开主题的一些实施方式的多层计算机化环境;
图2示出了根据本主题的一些示例性实施方式的计算机化环境;
图3A和图3B示出了根据本公开主题的一些示例性实施方式的多层计算机化环境中的多线程层;以及
图4示出了根据本主题的一些示例性实施方式的用于在多层计算机化环境中将请求相关联的方法的流程图。
具体实施方式
由本公开主题解决的一个技术问题是在不修改或添加请求内的数据字段情况下来跟踪与事务相关联的请求。另一技术问题是在多线程层内将请求和响应相关联。
在本主题中公开的技术方案包括用于将在多层计算机化环境中处理的并与相同事务有关请求的相关联的装置和方法。优选地,事务是用于接收或修改位于计算机化环境中的数据字段内的数据的命令或请求。例如,事务可以指接收与银行账户详细资料、或者在账户之间转移资金、购买股票等相关联的数据。根据本主题的示例性实施方式,该装置在位于多层计算机化环境中或与一个以上层进行通信的各层的至少一部分中包括至少一个解析单元。在可替换实施方式中,至少一个解析单元可以检测与多于一层有关的数据流。这样的至少一个解析单元检测一层以上的输入数据流和输出数据流。该至少一个解析单元连接至处理模块,该处理模块基于从至少一个解析单元发送的数据将与相同事务有关的请求和响应相关联。由于每个解析单元均了解关于请求和响应的部分信息,所以处理模块根据预定的算法和数据字段将请求和响应相关联。在本主题的示例性实施方式中,将由至少一个解析单元检测的数据发送到连接至处理模块的中央存储器,该处理模块使用中央存储器内的数据将请求和响应相关联。这种关联进一步引起确定事务的资源消耗以及与事务有关的每个请求所需要的时间。
本公开主题还提供了在其中多于一个线程处理请求的多线程环境中将相同层的输入请求和输出请求相关联。下文详细地公开了这种方法。
图1B示出了根据本公开主题的一些实施方式的多层计算机化环境。根据该公开实例,层1(410)是从用户或从另一层(未示出)接收HTTP请求的HTTP服务器。层2(420)是从层1(410)接收请求并在该请求处理之后将响应发送至层1(410)的应用服务器。层3(430)是从层2(420)接收请求并在处理该请求之后将响应发送至层2(420)的数据库服务器。多线程层包括多个线程,每个线程在处理请求时执行不同的任务。例如,层1(410)包括两个线程:监听线程412和工作线程414。监听线程412从相邻层接收请求并将该请求委托给该层内的工作线程414。工作线程414处理从监听线程412接收的请求,并且可以生成可被发送至层2(420)的附加请求。在多线程层的一些示例性配置中,工作线程414还接收来自层2(420)的IIOP响应并且可以将返回至层1(410)的HTTP响应发送至用户(未示出)。工作线程414可以在层中执行请求,或者生成与输入请求相关联的附加请求。这种附加请求也被称作子请求。
层2(420)包括三个线程,从层1(410)接收请求并将响应发送至层1(410)、将请求发送至层3(430)以及从层3(430)接收响应。这三个线程为监听线程422、工作线程424和工作线程426。层2(420)的监听线程422接收来自层1(410)的请求,将层2(420)内的请求发送至处理该请求的工作线程424以及优选地将附加请求发送至层3(430)。工作线程424还可以生成SQL请求2、接收响应SQL响应2、生成SQL请求3、接收SQL响应3以及将响应IIOP响应312发送至层1(410)。工作线程426接收来自监听线程422的IIOP请求246、生成SQL请求1、接收SQL响应1以及将响应IIOP响应246发送至层1(410)。多线程架构需要来自每个线程的更少的操作,并使得能够以给定的时段处理更多的请求。层1(410)和层2(420)之间的通信经由一个通信信道来执行,而层2(420)和层3(430)之间的通信经由两个通信信道(未示出)来执行。因此,当SQL请求2经由通信信道2从层2(420)发送至层3(430)时,不能检测出SQL请求2是由从层1(410)发送至层2(420)的IIOP请求246生成还是由IIOP请求312生成。该技术问题是在不对请求进行标记且在内核级中没有干扰的情况下,尤其当通信协议执行异步响应时,在多线程环境中确定请求的父请求。通信信道可以是其中一端使能写入数据而另一端使能读取数据的任何计算机化实体。这种计算机化实体可以为TCP/IP接口、管道、共用存储器、文件、队列、消息队列等。
根据本公开主题的一些示例性实施方式,该方法包括检测发送至每一层以及来自每一层的数据的步骤。将每个检测到的请求或响应部分地或作为整体地存储在与层相关联或者与通信信道相关联的存储器中。在本主题的一个示例性实施方式中,通过至少一个解析单元为每个检测到的请求或响应分配一个以上的值或参数。例如,该值可以是与发送或者接收的请求或响应的时间有关的时间戳、与在特定事件(诸如协议握手)之后所发送的请求或响应的数量有关的序列号或索引、通信信道ID、或者处理或生成请求或响应的线程ID等。将请求或响应的值或索引存储在存储器中。该存储器可以位于层的内部,或者可以连接到至少一个解析单元。可以由存储器存储的另一参数是每个请求的ad-hoc ID。优选地,当使用异步协议时,这种ad-hoc ID通过线程处理该请求来生成,并被存储在对于每个请求的响应中。这种ad-hoc ID不是由本主题中公开的应用程序生成的,并且不是通过与现有技术中公开的标记方法相同的方式来实现的。根据本公开主题,ad-hoc ID没有置于先前的请求或响应的语境中,而仅置于经处理的请求或响应的语境中,并且ad-hoc ID被存储在存储器中并用于进一步将请求和子请求相关联。当将请求从层1(410)发送至层2(420)时,层1(410)和层2(420)两者的存储器都检测该请求的ad-hoc ID。在本主题的可替换示例性实施方式中,位于层中的代理可以确定ad-hoc ID或将ad-hoc ID分配给请求或响应。一旦响应从层2(420)发送至层1(410),则将该响应记录在层1(410)和层2(420)两者的存储器中。因此,可以将从层1(410)发送请求与从层2(420)发送相关联的响应之间所经过的时间确定为由层1(410)和层2(420)所测量的时间的函数。
将存储在层1(410)和层2(420)的存储器中的数据发送至中央存储器,在该中央存储器中,通过ad-hoc ID、层ID、时间戳、通信信道ID等来将请求相关联。因此,可以确定与特定事务有关的请求以及不同请求的资源消耗。可以从发起请求直到特定层接收到响应或送回响应来测量请求的资源消耗。可以通过使用通用API检测线程的当前资源消耗概况(诸如像时段期间的CPU消耗、读取/写入至I/O设备的字节数、RAM存储器的消耗、有多少字节被读取/写入至网络等)以询问操作系统,来实现资源消耗的测量。有助于确定资源消耗的存储在存储器中的其他参数为发送请求和接收响应的时间戳,这允许测量在通信信道中在各层之间和每层中所花费的时间。在本公开主题的一些示例性实施方式中,在多于一层中所检测的时间的精度受限于多于一层中的时钟之差。在其他实施方式中,该方法还包括使多于一层的时钟同步的步骤。
图2示出了根据本主题的一些示例性实施方式的计算机化环境。该计算机化环境包括三层220、240和260。根据图2的实例,当将事务发送至该计算机化环境时,在层220接收该事务。当在层220接收到请求时,则利用与请求相关联的参数通过解析器222记录该请求。这种参数可以为发送或接收请求的时间、请求的ad-hocID、请求字符的混列码值、请求参数或组合的混列码值、应用于请求字符或者请求参数或组合的CRC函数的结果。其他参数可以是能够与单个请求事件相关联的协议的一部分、在一层从中接收请求或响应的通信信道ID、表示由层220接收或发送的先前请求的数量的计数器ID、请求的源头或目的的IP端口、请求是输入还是输出等。
当在层220接收响应或者从层220发送响应时,则由解析器222检测相似的参数并将其存储在存储器225中。在本公开主题的优选实施方式中,当在各层之间传输请求时,不修改请求内的数据字段。另外,没有如当使用标记模块时所执行的数据字段添加到请求。根据层和计算机化环境的优先权和规范,解析器222、解析器242和解析器262可以位于用户的空间中,并且可以位于内核空间中。
解析器222以及来自层240的解析器242、层260的解析器262可以执行多种解析方法,即,复杂的解析方法或简单的解析方法。所建议的解析方法可以为诸如递归下降解析器、LL解析器、数据包解析器的自顶向下解析方法,或诸如优先解析器、BC(限界语境)解析或LR解析器等的自底向上解析方法。存储器225、存储器245和存储器265可以是诸如RAM、ROM、闪存、磁性存储器等的任一种存储器。存储器225、存储器245和存储器265可以位于层的内部或者与层进行通信。每个存储器与层以及中央存储器270进行通信,并且将通过相关联的解析器所检测的数据传输至中央存储器270。例如,层220的存储器225从解析器222接收数据并将该数据发送至中央存储器270。在本主题的一些示例性实施方式中,存储器225将所有的数据字段发送至中央存储器270。可替换地,只在接收到来自中央存储器270的询问时,才提供从存储器225、存储器245和存储器265发送至中央存储器270的数据。例如,中央存储器270请求仅与一些请求有关的数据、仅与时段期间的数据流有关的数据、仅与关联于特定实体的请求有关的数据等。
在本公开主题的一些示例性实施方式中,中央存储器270和处理模块(未示出)位于计算机化环境的类似服务器的模块中,而层以及与层相关联的存储器位于计算机化环境的类似客户端的模块处。同样地,服务器侧连接至很多个客户端侧,每个客户端位于每一层中。在本主题的优选实施方式中,处理模块(未示出)包括匹配单元280。根据本公开主题的一些示例性实施方式,匹配单元280将来自层N的输出请求和到层N+1的输入请求(例如,来自层220的输出请求和到层240的输入请求)相关联。根据本主题的一个示例性实施方式,通过将与每层有关的请求和响应存储在独立序列中,并将唯一值分配给每个请求或响应,来执行从多个层接收的数据之间的匹配实现。这种唯一值可以基于时间戳、IP端口、计数器ID、通信信道ID、请求ID、ad-hoc ID、消息队列ID、文件ID、文件类型ID、相关性(correlation)ID、混列码函数的结果、CRC函数结果等。与包含到层N的输入响应的序列相比,序列的实例可以是到层N+1的输入请求,而另一序列可以包含来自层N+1的输出响应。如上所指出的,可以将如上所列出的多种参数用于序列内的元素相关联。
匹配单元280在避开如在现有技术中公开的标记模块的同时,通过使用由如上所公开的解析单元所检测的数据来允许多个请求彼此相关联或者与事务相关联。匹配单元280将来自层N的输出请求与到层N+1的输入请求相关联。该关联是通过比较与请求的数据字段有关或与包含这些请求的数据包有关的参数来执行的。这样的参数可以是时间戳、IP端口、计数器ID、通信信道ID、请求ID、ad-hoc ID、消息队列ID、文件ID、文件类型ID、相关性ID、混列码函数的结果、CRC函数结果等。将在层N接收的请求与作为处理先前接收的请求的结果所生成的请求相关联需要监控线程活动、使用的通信信道、通过线程处理请求的方式等。在本公开主题的一些示例性实施方式中,基于所使用的通信信道、ad-hoc ID(如果存在)等来利用线程-线程表(thread-to-thread table)将数据相关联。
根据在现有技术中公开的计算机化环境,位于层内的代理添加或修改请求的数据字段,并确定请求与子请求之间的关系。将这种代理设置在层内的客户端侧是复杂的,并且更难以安装、维护,该代理被视为更有侵入性,并在有故障的情况下可能影响整个层或客户端机器。根据本公开主题的一个示例性实施方式,仅在匹配单元280中执行与从存储器225、存储器245、存储器265发送的请求和响应相关联的数据字段的处理。在本公开主题的可替换实施方式中,将数据从各层发送至匹配单元280,该匹配单元将接收到的数据存储在中央存储器270中,并当需要关联请求时来检索该数据。
根据本主题的一些示例性实施方式,匹配单元280使用存储在存储器225、245、265中的参数(诸如每个请求的时间戳、ad-hoc ID、根据使用散列函数或CRC函数等所确定的请求的唯一ID等),将层N+1的输入请求和层N的输出请求相匹配。从层N和层N+1中接收该数据,并且通过匹配单元280进行匹配。匹配单元280将存储在与层N相关联的存储器中的数据和存储在与层N+1相关联的存储器中的数据相比较,并如上所述地匹配层N+1的输入请求和层N的输出请求。如果其中一个存储器具有多个索引,例如,如果在层N+1没有接收到请求,或不止一次接收到请求或者在序列内使用的请求的参数值对于不同的请求是相同的,则匹配单元280可以使用多种算法。该问题还被称作序列对准片段匹配(sequencealignment episode matching)问题,并且可以通过使用本领域技术人员已知的任何方法来解决。一种解决方案可以是使用最长公共子序列(LCS)算法使序列同步。另一解决方案可以为LCS-Delta算法。
图3A和图3B示出了根据本公开主题的一些示例性实施方式的多层计算机化环境内的多线程层。图3A示出了包括监听线程312和工作线程314这两个线程的层310。根据本公开的主题的一些示例性实施方式,输入请求通过现有的通信信道到达监听线程312。在发送请求时的通信信道ID和监听线程312的ID均被记录到该层内的存储器或者与该层相关联的存储器(诸如存储器225、245、265)。通过其中运行线程的层内的解析单元对到达请求分配ID。由于这种ID是通过本公开主题的代理指派和确定的,而不是像ad-hocID那样通过受监控的应用程序中的协议执行,因此这种ID与ad-hocID不相同。然后,该请求发送至工作线程314。
假定同步协议,如果立即返回响应,则根据通信信道来完成请求和响应之间的相关联。在异步协议中,根据由协议执行生成的ad-hoc ID来完成请求和响应之间的相关联。
如果工作线程生成附加请求,则将附加请求记录至存储器。由处理请求的线程所生成的输出请求也被称作子请求。如果将子请求发送至另一层,则将新ID分配给子请求,并将关于发送子请求的工作线程314和所使用的通信信道的信息记录至与该层相关联的存储器。在本主题的示例性实施方式中,解析器(诸如图2的222、242和262)将新ID分配给子请求。在响应返回至工作线程314之后,工作线程314发送对于到达监听线程312的请求的响应。通过请求到达的相同通信信道发送该响应,从而实现在相同通信信道上到达监听线程312的请求、由工作线程314发送的子请求以及以工作线程314发回响应作为它们的响应的相关联。当使用同步协议时,在请求之后立即发送响应。当使用异步协议时,根据由协议执行生成的ad-hoc ID完成请求和响应之间的相关联。因此,创建了到达请求与新生成的子请求之间的相关联。如果使用异步协议在特定层接收多于一个的请求,则为了相对于其他请求来识别特定的请求,对于每个请求的响应均携带一个ad-hoc ID。这种ad-hoc ID与关联于特定输入请求的值相匹配。例如,如果生成三个请求并且在建立通信之后将其从一层发送至另一层,则为每个请求分配一个值。这种值可以为ad-hoc ID的函数,或者可以使用合适的存储器而与各自的ad-hoc ID相关联。例如,为每个请求分配一个数值,该数值表示在从层发送该请求之前所发生的事件的数量。对于特定请求的响应的ad-hoc ID携带了与该请求的数值相关联的ad-hoc ID。如果通信协议是同步的,则由于每个响应对应于先前请求,因此该关联是简单的。在大多数情况下,在用于传输与响应相关联的请求的相同通信信道上发送该响应。因此,可以通过解析与请求和响应相关联的数据以及解析在特定通信信道上的数据流来提供相关联。
图3B示出了多线程层330的另一实施方式。层330包括接收请求并将请求发送至工作线程334的监听线程332。如果通过工作线程334生成附加子请求,则通过工作线程334将这些附加子请求发送至将实际子请求发送至相邻层的调度线程336。一旦子请求被发送,则将新ID分配给该子请求,并且将关于其上发送该子请求的通信信道的信息记录至与该层相关联的存储器。接收线程338接收来自下一层的响应。该响应通过相同信道被发送,并且可以根据顺序(如果使用同步协议)或者根据ad-hoc ID(如果使用异步协议)来与请求相关联。接下来,将该响应委托回工作线程334。工作线程334将该响应发送至发送线程340,该发送线程将该响应发送至生成与该响应相关联的请求的层。根据以上公开的多线程架构,需要线程-线程表以将请求与其子请求相关联。这种线程-线程表映射从每个线程接收和发送的数据。该映射是通过跟踪线程动作和钩子用户空间或内核空间内的数据来执行的。例如,检测并解析用于在层之间传输数据的数据包,或者解析在相同层内经由线程所传输的字节流。
图4示出了根据本主题的一些示例性实施方式的在多层计算机化环境中用于将请求相关联的方法的流程图。在步骤510,检测层内部的数据流。所检测的数据包括输入数据流和输出数据流。根据本主题的一个示例性实施方式,通过位于层内的解析单元来执行检测。在可替换实施方式中,解析单元与一个以上通信信道相关联,而不与一个以上层相关联。在步骤520,将检测的数据从至少一个解析单元发送至解析该检测的数据的处理模块。根据本主题的示例性实施方式,处理模块位于层的外部并且与位于层内的至少一个解析单元进行通信。在步骤530,将从一层的解析单元所检测的数据与从另一层的解析单元所检测的数据进行比较。根据本主题的示例性实施方式,在一层的输出数据流和其相邻层的输入数据流之间执行该比较。例如,将层1(图1B的410)的输出数据流与层2(图1B的420)的输入数据流相比较。该比较可以基于请求ID,该请求ID是通过在请求字符或者请求参数或组合上、或者在可以与单个请求事件相关联的协议的其他部分上应用散列函数、CRC函数等来确定的。用于比较输入数据流和输出数据流的其他参数可以是在一层从中接收请求或响应的通信信道ID、表示通过层220接收或发送的先前请求的数量的计数器ID、请求的源头或目的的IP端口、请求是输入还是输出、通过每层来发送或接收的时间等。该比较可以基于以上所公开的其他参数,或者可以由本领域的技术人员来确定。在步骤540,根据以上所公开的参数通过使用匹配单元(图2的280)将请求相关联。如果来自层N的输出请求多于到层N+1的输入请求,或者输入请求多于输出请求,或者如果相似值与不同请求或多于一个的请求相关联,则可以通过处理模块执行诸如LCS的多种算法或由本领域的技术人员使用的任何其他方法。在步骤550,处理模块确定请求或事务的资源消耗。本主题的一个技术效果是,在不修改请求内的数据并且不添加除了解析模块或检测模块以外的模块的情况下,提供了一层的输入请求与另一层的输出请求的相关联。这种架构和装置是新颖且非显而易见的,并且其提供了简单的实现方式、安装和修改。由于只有匹配单元280了解与单个事务相关联的请求,因此该架构不允许实时对资源消耗进行解析,而在标记方法中,每一层都了解与相同事务相关联的先前请求。
根据在每层内所执行的每个请求的时间并且根据与执行请求的线程有关的参数来确定资源消耗。由于多个请求与相同事务相关联,因此本领域的技术人员可以对由每个请求所消耗的资源进行求和,以确定事务的资源消耗。其他资源可以为CPU、存储器、I/O设备等,它们由至少一个解析单元进行解析,并被发送至处理数据的中央存储器。
通过周期性地接收每层的实际时钟值并与中央存储器中的时钟值相比较,来解决由于内部时钟偏移而导致的各层之间的时差,从而在各层之间使时差同步。本领域的技术人员可以提供用于使层同步的任何其他方法。
可以在其中有windows版本、Linux、Solaris、mainframe、AIX、HPUX、AS400、VxWorks或其他OS以及以上的衍生物的各种操作系统中实现本主题中公开的方法和装置。
尽管参考示例性实施方式描述了本公开,但本领域的技术人员应当理解的是,在不背离本发明的范围的前提下,可以进行各种改变并且可以用等价物替换其要素。另外,在不背离本发明的本质范围的前提下,可以进行多种修改,以使特定情况或材料适用于教导。因此,本公开主题不旨在限于特定实施方式作为所预期的执行本发明的最佳方式,而仅由以下权利要求来限定。

Claims (6)

1.一种在多层计算机化环境中将请求和响应相关联的方法,包括:
检测层N的输入请求,所述输入请求由在所述层N上操作的线程执行;
检测来自所述层N的输出请求,来自所述层N的所述输出请求作为执行所述层N的所述输入请求的结果而生成;
使用线程-线程表将来自所述层N的所述输出请求与所述层N的所述输入请求相关联,所述线程-线程表检测所述层N内部的线程的操作。
2.根据权利要求1所述的方法,进一步包括:检测层N+1的输入请求,所述层N+1利用通信信道与所述层N通信;将层N+1的所述输入请求与来自所述层N的所述输出请求相关联。
3.根据权利要求2所述的方法,进一步包括针对所述层N的所述输出请求生成ad-hoc ID,所述ad-hoc ID仅在经处理的所述请求的语境中设置。
4.根据权利要求3所述的方法,其中,针对所述层N的所述输出请求的所述ad-hoc ID由处理所述输出请求的线程生成。
5.根据权利要求3所述的方法,其中,所述通信信道是同步通信信道并且针对层N的所述输出请求的所述ad-hoc ID与事件的序列号相关联。
6.根据权利要求3所述的方法,其中,所述通信信道是使用异步协议的异步通信信道并且针对层N的所述输出请求的所述ad-hoc ID由所述异步协议得出。
CN200880128473.2A 2008-03-30 2008-03-30 用于在多线程多层计算机化环境中跟踪请求的装置和方法 Expired - Fee Related CN101983366B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IL2008/000439 WO2009122390A2 (en) 2008-03-30 2008-03-30 Apparatus and method for tracking requests in a multi threaded multi tier computerized environment

Publications (2)

Publication Number Publication Date
CN101983366A CN101983366A (zh) 2011-03-02
CN101983366B true CN101983366B (zh) 2014-02-12

Family

ID=41136003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880128473.2A Expired - Fee Related CN101983366B (zh) 2008-03-30 2008-03-30 用于在多线程多层计算机化环境中跟踪请求的装置和方法

Country Status (5)

Country Link
US (1) US8892726B2 (zh)
EP (1) EP2283409A4 (zh)
CN (1) CN101983366B (zh)
CA (1) CA2720026A1 (zh)
WO (1) WO2009122390A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012090313A1 (ja) * 2010-12-28 2012-07-05 三菱電機株式会社 通信ネットワークシステム
US11233709B2 (en) 2011-07-15 2022-01-25 Inetco Systems Limited Method and system for monitoring performance of an application system
US8732302B2 (en) 2011-07-15 2014-05-20 Inetco Systems Limited Method and system for monitoring performance of an application system
US8655955B2 (en) * 2011-08-18 2014-02-18 International Business Machines Corporation Stream processing using a client-server architecture
US20130179448A1 (en) 2012-01-05 2013-07-11 International Business Machines Corporation Linking Single System Synchronous Inter-Domain Transaction Activity
US9154580B2 (en) * 2012-02-01 2015-10-06 Tata Consultancy Services Limited Connection management in a computer networking environment
US9641609B2 (en) * 2012-02-28 2017-05-02 Google Inc. Integrated messaging
US20140041053A1 (en) * 2012-07-31 2014-02-06 Aled Edwards Data block access control
US20160105347A1 (en) 2014-10-13 2016-04-14 AppFirst, Inc. Method of tracing a transaction in a network
CN104503854A (zh) * 2014-12-29 2015-04-08 成都科来软件有限公司 一种进程间通信方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356555B1 (en) * 1995-08-25 2002-03-12 Terayon Communications Systems, Inc. Apparatus and method for digital data transmission using orthogonal codes
US5790789A (en) * 1996-08-02 1998-08-04 Suarez; Larry Method and architecture for the creation, control and deployment of services within a distributed computer environment
US6714976B1 (en) 1997-03-20 2004-03-30 Concord Communications, Inc. Systems and methods for monitoring distributed applications using diagnostic information
US6108700A (en) * 1997-08-01 2000-08-22 International Business Machines Corporation Application end-to-end response time measurement and decomposition
US7076784B1 (en) * 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6134594A (en) * 1997-10-28 2000-10-17 Microsoft Corporation Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US7051339B2 (en) * 2001-06-29 2006-05-23 Goldman, Sachs & Co. System and method to measure latency of transaction information flowing through a computer system
US6823382B2 (en) * 2001-08-20 2004-11-23 Altaworks Corporation Monitoring and control engine for multi-tiered service-level management of distributed web-application servers
WO2004107094A2 (en) * 2002-01-25 2004-12-09 Seurat Company Data integration system and method for presenting 360° customer views
US20040177042A1 (en) * 2003-03-05 2004-09-09 Comverse Network Systems, Ltd. Digital rights management for end-user content
IL167628A (en) 2004-06-04 2010-11-30 Optier Ltd System and method for performance management in a multi-tier computing environment
WO2008054406A2 (en) * 2005-11-18 2008-05-08 Orsini Rick L Secure data parser method and system
US7720806B2 (en) * 2006-05-15 2010-05-18 Algebraix Data Corporation Systems and methods for data manipulation using multiple storage formats
US8296413B2 (en) * 2006-05-31 2012-10-23 Sap Ag Device registration in a hierarchical monitor service
US8141100B2 (en) * 2006-12-20 2012-03-20 International Business Machines Corporation Identifying attribute propagation for multi-tier processing

Also Published As

Publication number Publication date
EP2283409A2 (en) 2011-02-16
US20110035493A1 (en) 2011-02-10
WO2009122390A2 (en) 2009-10-08
WO2009122390A3 (en) 2010-02-25
CN101983366A (zh) 2011-03-02
EP2283409A4 (en) 2012-04-04
CA2720026A1 (en) 2009-10-08
US8892726B2 (en) 2014-11-18

Similar Documents

Publication Publication Date Title
CN101983366B (zh) 用于在多线程多层计算机化环境中跟踪请求的装置和方法
US20210248613A1 (en) Systems and methods for real-time processing of data streams
CN1316371C (zh) 用于传输数据的方法和设备
EP3178011B1 (en) Method and system for facilitating terminal identifiers
CN106790694A (zh) 分布式系统及分布式系统中目标对象的调度方法
US11531997B2 (en) Systems and methods using facial recognition for detecting previous visits of a plurality of individuals at a location
US9652488B2 (en) Computer product, verification support method, and verification support apparatus
US10223407B2 (en) Asynchronous processing time metrics
US8984124B2 (en) System and method for adaptive data monitoring
CN101189581A (zh) 用于处理与锁定相关的不一致的技术
US11770295B2 (en) Platform for establishing computing node clusters in different environments
JP6486956B2 (ja) システムおよび方法
CN101520861A (zh) 数据事件发送方法和装置以及事件处理系统
JP2009110337A (ja) 情報処理装置、情報処理システムおよび情報処理方法
US9098613B2 (en) Logging of application messages
Brunner Processing intrusion data with machine learning and MapReduce
CN101488872B (zh) 生物信息计算网格系统
US20130326006A1 (en) Managing large data sets through page based information tracking in multi-master environments
US12015532B2 (en) Component-based risk evaluation techniques using processing flow signatures
US20230351224A1 (en) Systems and methods for machine learning dataset generation
US11811583B1 (en) Systems and methods for a framework for algorithmically identifying critical software systems and applications within an organization
Chan et al. A Study on Innovative Smart City System with Blockchain Technology: Providing Better Living Environment for Humans
CN117370396A (zh) 基于区块链的资产处理方法、装置、设备、介质及产品
CN114077499A (zh) 一种数据同步方法、装置、服务器及存储介质
Vogel et al. Efficient distributed signature analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140212

Termination date: 20190330