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

上传人:b*** 文档编号:973436 上传时间:2018-03-22 格式:PDF 页数:17 大小:629.28KB
返回 下载 相关 举报
摘要
申请专利号:

CN200880128473.2

申请日:

2008.03.30

公开号:

CN101983366A

公开日:

2011.03.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 3/00申请日:20080330|||公开

IPC分类号:

G06F3/00

主分类号:

G06F3/00

申请人:

科瑞尔森思有限公司

发明人:

拉尼尔·纳夫塔利·莎萨穆; 奥伦·什洛莫·伊莱亚斯; 雅各布·乌克尔松; 莎姆·索梅施; 安东·博洛丁斯凯

地址:

以色列赫特利亚

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司 11240

代理人:

余刚;吴孟秋

PDF下载: PDF下载
内容摘要

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

权利要求书

1: 一种在多层计算机化环境中将请求和响应相关联的方法, 包括 : 针对每一层, 检测输入数据流和输出数据流 ; 将检测到的数据发送至处理模块 ; 针对每两个相邻层, 将一层的输入数据和另一层的输出数据进行比较 ; 将一层的输入请求与另一层的输出请求相关联。
2: 根据权利要求 1 所述的方法, 进一步包括确定请求的资源消耗的步骤。
3: 根据权利要求 1 所述的方法, 进一步包括确定事务的资源消耗的步骤。
4: 根据权利要求 1 所述的方法, 其中, 通过位于层内的代理执行所述输入数据流和所 述输出数据流的检测。
5: 根据权利要求 1 所述的方法, 其中, 通过位于层的外部的代理执行一层的输入请求 与相邻层的输出请求的相关联。
6: 一种在多层计算机化环境中用于将请求和响应相关联的装置, 包括 : 至少一个解析单元, 用于解析各层之间的输入数据流和输出数据流 ; 中央存储器, 用于接收并存储由所述至少一个解析单元解析的所述输入数据流和所述 输出数据流 ; 处理单元, 用于将来自一层的输出数据与另一层的输入数据相关联。
7: 根据权利要求 6 所述的装置, 其中, 所述至少一个解析单元位于每一层内。
8: 根据权利要求 6 所述的装置, 其中, 所述处理模块连接至所述至少一个解析单元。
9: 根据权利要求 6 所述的装置, 其中, 所述处理模块位于层的外部。
10: 一种在多线程计算机化环境中用于将输入请求和输出响应相关联的方法, 包括 : 检测所述输入请求 ; 在工作线程执行所述输入请求之后, 检测传输至发送层的所述输出响应, 其中, 所述请 求被从该发送层发送至执行层 ; 根据用于传输所述响应的通信信道, 将所述输入请求和所述输出响应相关联。
11: 根据权利要求 10 所述的方法, 进一步包括 : 检测与输出子请求相关联的数据并检 测对于所述子请求的输入响应的步骤, 其中, 所述子请求由执行所述请求的所述工作线程 生成。
12: 根据权利要求 10 所述的方法, 其中, 通过使用包含在所述输出响应中的 ad-hoc ID 和包含在接收所述输出响应的所述发送层中的值来执行相关联。
13: 根据权利要求 12 所述的方法, 其中, 所述值是在建立所述通信信道的步骤之后所 执行的事件的序列号。
14: 根据权利要求 12 所述的方法, 其中, 所述值是在所述层内执行的可数事件的序列 号。
15: 根据权利要求 12 所述的方法, 其中, 所述值是混列码或 CRC 处理的函数。
16: 一种用于将多线程层中所执行请求的输入请求和输出请求相关联的方法, 包括 : 检测所述输入请求 ; 检测与通信信道有关的输入数据流, 其中, 所述输入请求经由所述通信信道传输至所 述层 ; 检测所述输出请求 ; 2 检测处理所述输出请求的线程 ; 检测与通信信道有关的输出数据流, 其中, 所述输出请求从所述层经由所述通信信道 传输 ; 将在所述输入请求和所述输出请求中检测的数据字段进行比较。
17: 根据权利要求 16 所述的方法, 进一步包括 : 根据检测的所述数据在所述输入请求 和所述输出请求之间进行相关联的步骤。
18: 根据权利要求 16 所述的方法, 进一步包括 : 检测输入响应、 检测所述通信信道以及 检测发送所述输入响应的所述线程的步骤, 其中, 所述输入响应经由所述通信信道传输至 所述层。
19: 根据权利要求 18 所述的方法, 进一步包括 : 检测输出响应和处理所述输出响应的 线程的线程 ID 的步骤。

说明书


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

    相关申请
     本申请涉及题为 “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 以及以上的衍生物的各种操作系统中实现本主题中公开的方法和装置。
     尽管参考示例性实施方式描述了本公开, 但本领域的技术人员应当理解的是, 在 不背离本发明的范围的前提下, 可以进行各种改变并且可以用等价物替换其要素。 另外, 在 不背离本发明的本质范围的前提下, 可以进行多种修改, 以使特定情况或材料适用于教导。 因此, 本公开主题不旨在限于特定实施方式作为所预期的执行本发明的最佳方式, 而仅由 以下权利要求来限定。

用于在多线程多层计算机化环境中跟踪请求的装置和方法.pdf_第1页
第1页 / 共17页
用于在多线程多层计算机化环境中跟踪请求的装置和方法.pdf_第2页
第2页 / 共17页
用于在多线程多层计算机化环境中跟踪请求的装置和方法.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《用于在多线程多层计算机化环境中跟踪请求的装置和方法.pdf》由会员分享,可在线阅读,更多相关《用于在多线程多层计算机化环境中跟踪请求的装置和方法.pdf(17页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101983366A43申请公布日20110302CN101983366ACN101983366A21申请号200880128473222申请日20080330G06F3/0020060171申请人科瑞尔森思有限公司地址以色列赫特利亚72发明人拉尼尔纳夫塔利莎萨穆奥伦什洛莫伊莱亚斯雅各布乌克尔松莎姆索梅施安东博洛丁斯凯74专利代理机构北京康信知识产权代理有限责任公司11240代理人余刚吴孟秋54发明名称用于在多线程多层计算机化环境中跟踪请求的装置和方法57摘要本主题公开了在多层计算机化环境中用于将请求和响应相关联的方法和装置,该方法包括针对每一层来检测输入数据流和输出数据流;。

2、将所检测的数据发送至处理模块;对于每两个相邻层,将一层的输入数据与另一层的输出数据进行比较;将一层的输入请求与另一层的输出请求相关联。该关联可以使用ADHOCID。本主题还公开了一种计算机化装置,其用于检测数据,并且当数据用于匹配请求和响应时将该数据发送至多层环境外部的中央存储器。本主题的另一目的是一种在多线程计算机化环境中用于将输入请求与输出响应或输出请求相关联的方法。85PCT申请进入国家阶段日2010093086PCT申请的申请数据PCT/IL2008/0004392008033087PCT申请的公布数据WO2009/122390EN2009100851INTCL19中华人民共和国国家知。

3、识产权局12发明专利申请权利要求书2页说明书9页附图5页CN101983368A1/2页21一种在多层计算机化环境中将请求和响应相关联的方法,包括针对每一层,检测输入数据流和输出数据流;将检测到的数据发送至处理模块;针对每两个相邻层,将一层的输入数据和另一层的输出数据进行比较;将一层的输入请求与另一层的输出请求相关联。2根据权利要求1所述的方法,进一步包括确定请求的资源消耗的步骤。3根据权利要求1所述的方法,进一步包括确定事务的资源消耗的步骤。4根据权利要求1所述的方法,其中,通过位于层内的代理执行所述输入数据流和所述输出数据流的检测。5根据权利要求1所述的方法,其中,通过位于层的外部的代理执。

4、行一层的输入请求与相邻层的输出请求的相关联。6一种在多层计算机化环境中用于将请求和响应相关联的装置,包括至少一个解析单元,用于解析各层之间的输入数据流和输出数据流;中央存储器,用于接收并存储由所述至少一个解析单元解析的所述输入数据流和所述输出数据流;处理单元,用于将来自一层的输出数据与另一层的输入数据相关联。7根据权利要求6所述的装置,其中,所述至少一个解析单元位于每一层内。8根据权利要求6所述的装置,其中,所述处理模块连接至所述至少一个解析单元。9根据权利要求6所述的装置,其中,所述处理模块位于层的外部。10一种在多线程计算机化环境中用于将输入请求和输出响应相关联的方法,包括检测所述输入请求。

5、;在工作线程执行所述输入请求之后,检测传输至发送层的所述输出响应,其中,所述请求被从该发送层发送至执行层;根据用于传输所述响应的通信信道,将所述输入请求和所述输出响应相关联。11根据权利要求10所述的方法,进一步包括检测与输出子请求相关联的数据并检测对于所述子请求的输入响应的步骤,其中,所述子请求由执行所述请求的所述工作线程生成。12根据权利要求10所述的方法,其中,通过使用包含在所述输出响应中的ADHOCID和包含在接收所述输出响应的所述发送层中的值来执行相关联。13根据权利要求12所述的方法,其中,所述值是在建立所述通信信道的步骤之后所执行的事件的序列号。14根据权利要求12所述的方法,其。

6、中,所述值是在所述层内执行的可数事件的序列号。15根据权利要求12所述的方法,其中,所述值是混列码或CRC处理的函数。16一种用于将多线程层中所执行请求的输入请求和输出请求相关联的方法,包括检测所述输入请求;检测与通信信道有关的输入数据流,其中,所述输入请求经由所述通信信道传输至所述层;检测所述输出请求;权利要求书CN101983366ACN101983368A2/2页3检测处理所述输出请求的线程;检测与通信信道有关的输出数据流,其中,所述输出请求从所述层经由所述通信信道传输;将在所述输入请求和所述输出请求中检测的数据字段进行比较。17根据权利要求16所述的方法,进一步包括根据检测的所述数据在。

7、所述输入请求和所述输出请求之间进行相关联的步骤。18根据权利要求16所述的方法,进一步包括检测输入响应、检测所述通信信道以及检测发送所述输入响应的所述线程的步骤,其中,所述输入响应经由所述通信信道传输至所述层。19根据权利要求18所述的方法,进一步包括检测输出响应和处理所述输出响应的线程的线程ID的步骤。权利要求书CN101983366ACN101983368A1/9页4用于在多线程多层计算机化环境中跟踪请求的装置和方法0001相关申请0002本申请涉及题为“APPARATUSANDMETHODFORTRACKINGTRANSACTIONRELATEDDATA”的PCT申请第PCT/IL200。

8、7/001062号。技术领域0003本发明大体上涉及在计算机化设备内跟踪事务相关数据,更具体地,涉及在多层计算机化环境中跟踪事务相关数据。背景技术0004复杂的多层计算机化网络环境使得在单个事务跨过多个层时难以保持对该单个事务的跟踪。层可以是执行应用程序的软件或硬件模块。这种多层计算机化环境的实例可以包括HTTP层诸如门户网站、服务器和数据库、分组及本地应用程序。0005由用户发送的事务优选地需要多个层的资源,并且在很多情况下生成多个请求。这些请求被发送到这些层以用于检索或修改存储在这些层中的数据。例如,根据来自用户发送的询问来检索数据,或者在用户经由多层计算机化环境执行动作的情况下来更新数据。

9、。0006用于对单个事务的请求和响应进行跟踪的一种解决方案是为父请求事务的第一请求添加标记,并且对于由该父请求生成的其他请求保持相同标记。这种解决方案需要对于实现和安装来说都复杂的标记模块,并且该标记模块可以被认为是侵入性的,由此用户和系统管理员提高对其的关注。在有故障的情况下这种解决方案尤其如此,可能影响整个层或客户端机器。此外,标记被添加到与请求和响应有关的数据包报头,因而处理操作系统、网络或通信协议的更深层。0007根据一些已知的架构,可以在单个层的内部运行两个以上线程。例如,监听工作模块,其中,一个线程接收请求并将该请求委托给执行该请求的另一线程,另一线程生成附加请求或者将该请求发送至。

10、另一层。其他架构可以包括附加线程,例如从其他层接收响应并将响应发送至发送了该请求的层的另一线程。图1A示出了作为根据现有技术中所实现的三层层1110、层2120和层3130。一条通信信道未示出连接层1110和层2120,两条通信信道未示出连接层2120和层3130。如果由生成发送至层3130的三个SQL请求的层2120接收到两个IIOP请求,则不能明显地确定哪个IIOP请求生成了第二SQL请求。因此,长久以来期望在关于请求和响应的数据包中没有标记数据字段的情况下,将在处理其他请求的期间所生成的请求与生成这些请求的那些请求相关联。所解决的其他技术问题是用于确定请求的资源消耗以及每个层或线程在每个。

11、请求上所花费的时间的方法。0008US专利第7,051,339号提供了通过对与事务诸如请求和响应有关的每个数据进行标记来实现对事务有关的任务进行跟踪和测量。以上公开了标记的缺点。US专利第6,714,976号公开了在客户端服务器环境中跟踪事务。例如,在客户端侧中检测数据,并将说明书CN101983366ACN101983368A2/9页5所检测的数据与服务器侧中的数据相比较。US专利第6,714,976号中公开的解决方案可能不适用于多层计算机化环境。US专利公开号2006/015512公开了通过在每一层上分配两个代理来在多层计算环境中跟踪数据,其中,一个代理用于检测与请求有关的数据,另一代理与。

12、相邻层的代理进行通信并发送由第一代理检测的数据字段。这种解决方案需要用于传输请求有关的数据的另一通信信道,并且需要用于每一层的另一模块。另外,该解决方案需要将每一层中的两个代理用于不同的目的,一个代理用于检测,另一代理用于处理数据并将数据发送至其他层的代理。0009期望提供这样一种方法和装置,其用于将多个请求与相同事务相关联而无需增加或修改内核中的模块,从而其在用户空间中无缝操作,因此消除了对内核空间代理的需求。进一步地,期望仅使用每层中的一个代理将请求和响应相关联,并期望在多线程环境中将请求相关联。另一技术问题是,在不修改请求数据或响应数据无论在数据包级中还是在字节流级中的情况下并且在没有通。

13、过使用更多个代理而在各层之间增加附加通信交互的情况下,将请求相关联。发明内容0010公开的主题提供了用于除了使用解析模块或另一检测元件之外在层中没有使用其它模块的情况下,将请求和响应相关联的方法和装置。该主题还公开了一种在一个以上线程在层中进行操作的情况下,用于将请求和响应相关联的方法。0011本主题的一个目的是公开了一种在多层计算机化环境中将请求和响应相关联的方法,该方法包括针对每一层来检测输入数据流和输出数据流;将所检测的数据发送至处理模块;针对每两个相邻层,将一层的输入数据和另一层的输出数据进行比较,以及将一层的输入请求与另一层的输出请求相关联。0012在一些实施方式中,该方法进一步包括。

14、确定请求的资源消耗的步骤。在一些实施方式中,该方法进一步包括确定事务的资源消耗的步骤。在一些实施方式中,位于层内的代理执行输入数据流和输出数据流的检测。在一些实施方式中,位于层外部的代理执行将一层的输入请求与相邻层的输出请求相关联。0013本主题的另一目的是公开一种在多层计算机化环境中用于将请求和响应相关联的装置,该装置包括至少一个解析单元,用于解析各层之间的输入数据流和输出数据流;中央存储器,用于接收并存储由至少一个解析单元解析的输入数据流和输出数据流;处理单元,用于将来自一层的输出数据与另一层的输入数据相关联。0014在一些实施方式中,至少一个解析单元位于每一层内。在一些实施方式中,处理模。

15、块连接到至少一个解析单元。在一些实施方式中,处理模块位于层外部。0015本主题的另一目的是公开一种在多线程计算机化环境中将输入请求和输出响应相关联的方法,该方法包括检测输入请求;在工作线程执行请求之后,检测传输至发送层的输出响应,其中该请求从发送层发送至执行层;根据用于传输响应的通信信道,将输入请求和输出响应相关联。0016在一些实施方式中,该方法进一步包括检测与执行请求的工作线程所生成的输出子请求相关联的数据以及检测对于子请求的输入响应的步骤。在一些实施方式中,通过使用包含在输出响应中的ADHOCID和包含在接收输出响应的发送层中的值来执行相关联。说明书CN101983366ACN10198。

16、3368A3/9页6在一些实施方式中,该值是建立通信信道的步骤之后所执行的事件的序列号。在一些实施方式中,该值是在层内执行的可数事件的序列号。在一些实施方式中,该值是混列码HASHCODE或CRC处理的函数。0017本主题的另一目的是公开一种用于将多线程层中所执行请求的输入请求和输出请求相关联的方法,该方法包括检测输入请求;检测与通信信道有关的输入数据流,其中,输入请求经由该通信信道传输至层;检测输出请求;检测处理输出请求的线程;检测与通信信道有关的输出数据流,其中,输出请求从层经由该通信信道被传输;将在输入请求和输出请求中检测的数据字段进行比较。0018在一些实施方式中,该方法进一步包括根据。

17、所检测的数据在输入请求和输出请求之间进行相关联的步骤。在一些实施方式中,该方法进一步包括以下步骤检测输入响应、检测输入响应经由其而被传输至层的通信信道以及检测发送该输入响应的线程。在一些实施方式中,该方法进一步包括检测输出响应和处理输出响应的线程的线程ID的步骤。附图说明0019结合附图,参考实施方式的以下说明,将描述本公开主题的示例性非限制实施方式。这些附图通常不按比例示出,并且任何尺寸均仅意味着是示例性的,而不一定是限制性的。相应或相似的元件由相同的标号或字母来表示。0020图1A示出了根据现有技术的一些实施方式的多层计算机化环境;0021图1B示出了根据本公开主题的一些实施方式的多层计算。

18、机化环境;0022图2示出了根据本主题的一些示例性实施方式的计算机化环境;0023图3A和图3B示出了根据本公开主题的一些示例性实施方式的多层计算机化环境中的多线程层;以及0024图4示出了根据本主题的一些示例性实施方式的用于在多层计算机化环境中将请求相关联的方法的流程图。具体实施方式0025由本公开主题解决的一个技术问题是在不修改或添加请求内的数据字段情况下来跟踪与事务相关联的请求。另一技术问题是在多线程层内将请求和响应相关联。0026在本主题中公开的技术方案包括用于将在多层计算机化环境中处理的并与相同事务有关请求的相关联的装置和方法。优选地,事务是用于接收或修改位于计算机化环境中的数据字段。

19、内的数据的命令或请求。例如,事务可以指接收与银行账户详细资料、或者在账户之间转移资金、购买股票等相关联的数据。根据本主题的示例性实施方式,该装置在位于多层计算机化环境中或与一个以上层进行通信的各层的至少一部分中包括至少一个解析单元。在可替换实施方式中,至少一个解析单元可以检测与多于一层有关的数据流。这样的至少一个解析单元检测一层以上的输入数据流和输出数据流。该至少一个解析单元连接至处理模块,该处理模块基于从至少一个解析单元发送的数据将与相同事务有关的请求和响应相关联。由于每个解析单元均了解关于请求和响应的部分信息,所以处理模块根据预定的算法和数据字段将请求和响应相关联。在本主题的示例性实施方式。

20、中,将由至少一个解析单元检测的数据发送到连接至处理模块的中央存储器,该处理模块使用中央存储器说明书CN101983366ACN101983368A4/9页7内的数据将请求和响应相关联。这种关联进一步引起确定事务的资源消耗以及与事务有关的每个请求所需要的时间。0027本公开主题还提供了在其中多于一个线程处理请求的多线程环境中将相同层的输入请求和输出请求相关联。下文详细地公开了这种方法。0028图1B示出了根据本公开主题的一些实施方式的多层计算机化环境。根据该公开实例,层1410是从用户或从另一层未示出接收HTTP请求的HTTP服务器。层2420是从层1410接收请求并在该请求处理之后将响应发送至。

21、层1410的应用服务器。层3430是从层2420接收请求并在处理该请求之后将响应发送至层2420的数据库服务器。多线程层包括多个线程,每个线程在处理请求时执行不同的任务。例如,层1410包括两个线程监听线程412和工作线程414。监听线程412从相邻层接收请求并将该请求委托给该层内的工作线程414。工作线程414处理从监听线程412接收的请求,并且可以生成可被发送至层2420的附加请求。在多线程层的一些示例性配置中,工作线程414还接收来自层2420的IIOP响应并且可以将返回至层1410的HTTP响应发送至用户未示出。工作线程414可以在层中执行请求,或者生成与输入请求相关联的附加请求。这种。

22、附加请求也被称作子请求。0029层2420包括三个线程,从层1410接收请求并将响应发送至层1410、将请求发送至层3430以及从层3430接收响应。这三个线程为监听线程422、工作线程424和工作线程426。层2420的监听线程422接收来自层1410的请求,将层2420内的请求发送至处理该请求的工作线程424以及优选地将附加请求发送至层3430。工作线程424还可以生成SQL请求2、接收响应SQL响应2、生成SQL请求3、接收SQL响应3以及将响应IIOP响应312发送至层1410。工作线程426接收来自监听线程422的IIOP请求246、生成SQL请求1、接收SQL响应1以及将响应IIO。

23、P响应246发送至层1410。多线程架构需要来自每个线程的更少的操作,并使得能够以给定的时段处理更多的请求。层1410和层2420之间的通信经由一个通信信道来执行,而层2420和层3430之间的通信经由两个通信信道未示出来执行。因此,当SQL请求2经由通信信道2从层2420发送至层3430时,不能检测出SQL请求2是由从层1410发送至层2420的IIOP请求246生成还是由IIOP请求312生成。该技术问题是在不对请求进行标记且在内核级中没有干扰的情况下,尤其当通信协议执行异步响应时,在多线程环境中确定请求的父请求。通信信道可以是其中一端使能写入数据而另一端使能读取数据的任何计算机化实体。这。

24、种计算机化实体可以为TCP/IP接口、管道、共用存储器、文件、队列、消息队列等。0030根据本公开主题的一些示例性实施方式,该方法包括检测发送至每一层以及来自每一层的数据的步骤。将每个检测到的请求或响应部分地或作为整体地存储在与层相关联或者与通信信道相关联的存储器中。在本主题的一个示例性实施方式中,通过至少一个解析单元为每个检测到的请求或响应分配一个以上的值或参数。例如,该值可以是与发送或者接收的请求或响应的时间有关的时间戳、与在特定事件诸如协议握手之后所发送的请求或响应的数量有关的序列号或索引、通信信道ID、或者处理或生成请求或响应的线程ID等。将请求或响应的值或索引存储在存储器中。该存储器。

25、可以位于层的内部,或者可以连接到至少一个解析单元。可以由存储器存储的另一参数是每个请求的ADHOCID。优选地,当使用异步协议时,这种ADHOCID通过线程处理该请求来生成,并被存储在对于每个说明书CN101983366ACN101983368A5/9页8请求的响应中。这种ADHOCID不是由本主题中公开的应用程序生成的,并且不是通过与现有技术中公开的标记方法相同的方式来实现的。根据本公开主题,ADHOCID没有置于先前的请求或响应的语境中,而仅置于经处理的请求或响应的语境中,并且ADHOCID被存储在存储器中并用于进一步将请求和子请求相关联。当将请求从层1410发送至层2420时,层1410。

26、和层2420两者的存储器都检测该请求的ADHOCID。在本主题的可替换示例性实施方式中,位于层中的代理可以确定ADHOCID或将ADHOCID分配给请求或响应。一旦响应从层2420发送至层1410,则将该响应记录在层1410和层2420两者的存储器中。因此,可以将从层1410发送请求与从层2420发送相关联的响应之间所经过的时间确定为由层1410和层2420所测量的时间的函数。0031将存储在层1410和层2420的存储器中的数据发送至中央存储器,在该中央存储器中,通过ADHOCID、层ID、时间戳、通信信道ID等来将请求相关联。因此,可以确定与特定事务有关的请求以及不同请求的资源消耗。可以从。

27、发起请求直到特定层接收到响应或送回响应来测量请求的资源消耗。可以通过使用通用API检测线程的当前资源消耗概况诸如像时段期间的CPU消耗、读取/写入至I/O设备的字节数、RAM存储器的消耗、有多少字节被读取/写入至网络等以询问操作系统,来实现资源消耗的测量。有助于确定资源消耗的存储在存储器中的其他参数为发送请求和接收响应的时间戳,这允许测量在通信信道中在各层之间和每层中所花费的时间。在本公开主题的一些示例性实施方式中,在多于一层中所检测的时间的精度受限于多于一层中的时钟之差。在其他实施方式中,该方法还包括使多于一层的时钟同步的步骤。0032图2示出了根据本主题的一些示例性实施方式的计算机化环境。。

28、该计算机化环境包括三层220、240和260。根据图2的实例,当将事务发送至该计算机化环境时,在层220接收该事务。当在层220接收到请求时,则利用与请求相关联的参数通过解析器222记录该请求。这种参数可以为发送或接收请求的时间、请求的ADHOCID、请求字符的混列码值、请求参数或组合的混列码值、应用于请求字符或者请求参数或组合的CRC函数的结果。其他参数可以是能够与单个请求事件相关联的协议的一部分、在一层从中接收请求或响应的通信信道ID、表示由层220接收或发送的先前请求的数量的计数器ID、请求的源头或目的的IP端口、请求是输入还是输出等。0033当在层220接收响应或者从层220发送响应时。

29、,则由解析器222检测相似的参数并将其存储在存储器225中。在本公开主题的优选实施方式中,当在各层之间传输请求时,不修改请求内的数据字段。另外,没有如当使用标记模块时所执行的数据字段添加到请求。根据层和计算机化环境的优先权和规范,解析器222、解析器242和解析器262可以位于用户的空间中,并且可以位于内核空间中。0034解析器222以及来自层240的解析器242、层260的解析器262可以执行多种解析方法,即,复杂的解析方法或简单的解析方法。所建议的解析方法可以为诸如递归下降解析器、LL解析器、数据包解析器的自顶向下解析方法,或诸如优先解析器、BC限界语境解析或LR解析器等的自底向上解析方法。

30、。存储器225、存储器245和存储器265可以是诸如RAM、ROM、闪存、磁性存储器等的任一种存储器。存储器225、存储器245和存储器265可以位于层的内部或者与层进行通信。每个存储器与层以及中央存储器270进行通信,并且将通过相关联的解析器所检测的数据传输至中央存储器270。例如,层220的存储器225从解说明书CN101983366ACN101983368A6/9页9析器222接收数据并将该数据发送至中央存储器270。在本主题的一些示例性实施方式中,存储器225将所有的数据字段发送至中央存储器270。可替换地,只在接收到来自中央存储器270的询问时,才提供从存储器225、存储器245和存。

31、储器265发送至中央存储器270的数据。例如,中央存储器270请求仅与一些请求有关的数据、仅与时段期间的数据流有关的数据、仅与关联于特定实体的请求有关的数据等。0035在本公开主题的一些示例性实施方式中,中央存储器270和处理模块未示出位于计算机化环境的类似服务器的模块中,而层以及与层相关联的存储器位于计算机化环境的类似客户端的模块处。同样地,服务器侧连接至很多个客户端侧,每个客户端位于每一层中。在本主题的优选实施方式中,处理模块未示出包括匹配单元280。根据本公开主题的一些示例性实施方式,匹配单元280将来自层N的输出请求和到层N1的输入请求例如,来自层220的输出请求和到层240的输入请求。

32、相关联。根据本主题的一个示例性实施方式,通过将与每层有关的请求和响应存储在独立序列中,并将唯一值分配给每个请求或响应,来执行从多个层接收的数据之间的匹配实现。这种唯一值可以基于时间戳、IP端口、计数器ID、通信信道ID、请求ID、ADHOCID、消息队列ID、文件ID、文件类型ID、相关性CORRELATIONID、混列码函数的结果、CRC函数结果等。与包含到层N的输入响应的序列相比,序列的实例可以是到层N1的输入请求,而另一序列可以包含来自层N1的输出响应。如上所指出的,可以将如上所列出的多种参数用于序列内的元素相关联。0036匹配单元280在避开如在现有技术中公开的标记模块的同时,通过使用。

33、由如上所公开的解析单元所检测的数据来允许多个请求彼此相关联或者与事务相关联。匹配单元280将来自层N的输出请求与到层N1的输入请求相关联。该关联是通过比较与请求的数据字段有关或与包含这些请求的数据包有关的参数来执行的。这样的参数可以是时间戳、IP端口、计数器ID、通信信道ID、请求ID、ADHOCID、消息队列ID、文件ID、文件类型ID、相关性ID、混列码函数的结果、CRC函数结果等。将在层N接收的请求与作为处理先前接收的请求的结果所生成的请求相关联需要监控线程活动、使用的通信信道、通过线程处理请求的方式等。在本公开主题的一些示例性实施方式中,基于所使用的通信信道、ADHOCID如果存在等来。

34、利用线程线程表THREADTOTHREADTABLE将数据相关联。0037根据在现有技术中公开的计算机化环境,位于层内的代理添加或修改请求的数据字段,并确定请求与子请求之间的关系。将这种代理设置在层内的客户端侧是复杂的,并且更难以安装、维护,该代理被视为更有侵入性,并在有故障的情况下可能影响整个层或客户端机器。根据本公开主题的一个示例性实施方式,仅在匹配单元280中执行与从存储器225、存储器245、存储器265发送的请求和响应相关联的数据字段的处理。在本公开主题的可替换实施方式中,将数据从各层发送至匹配单元280,该匹配单元将接收到的数据存储在中央存储器270中,并当需要关联请求时来检索该数。

35、据。0038根据本主题的一些示例性实施方式,匹配单元280使用存储在存储器225、245、265中的参数诸如每个请求的时间戳、ADHOCID、根据使用散列函数或CRC函数等所确定的请求的唯一ID等,将层N1的输入请求和层N的输出请求相匹配。从层N和层N1中接收该数据,并且通过匹配单元280进行匹配。匹配单元280将存储在与层N相关联的存储器中的数据和存储在与层N1相关联的存储器中的数据相比较,并如上所述地匹配层N1的输入请求和层N的输出请求。如果其中一个存储器具有多个索引,例如,如果在层说明书CN101983366ACN101983368A7/9页10N1没有接收到请求,或不止一次接收到请求或。

36、者在序列内使用的请求的参数值对于不同的请求是相同的,则匹配单元280可以使用多种算法。该问题还被称作序列对准片段匹配SEQUENCEALIGNMENTEPISODEMATCHING问题,并且可以通过使用本领域技术人员已知的任何方法来解决。一种解决方案可以是使用最长公共子序列LCS算法使序列同步。另一解决方案可以为LCSDELTA算法。0039图3A和图3B示出了根据本公开主题的一些示例性实施方式的多层计算机化环境内的多线程层。图3A示出了包括监听线程312和工作线程314这两个线程的层310。根据本公开的主题的一些示例性实施方式,输入请求通过现有的通信信道到达监听线程312。在发送请求时的通信。

37、信道ID和监听线程312的ID均被记录到该层内的存储器或者与该层相关联的存储器诸如存储器225、245、265。通过其中运行线程的层内的解析单元对到达请求分配ID。由于这种ID是通过本公开主题的代理指派和确定的,而不是像ADHOCID那样通过受监控的应用程序中的协议执行,因此这种ID与ADHOCID不相同。然后,该请求发送至工作线程314。0040假定同步协议,如果立即返回响应,则根据通信信道来完成请求和响应之间的相关联。在异步协议中,根据由协议执行生成的ADHOCID来完成请求和响应之间的相关联。0041如果工作线程生成附加请求,则将附加请求记录至存储器。由处理请求的线程所生成的输出请求也被。

38、称作子请求。如果将子请求发送至另一层,则将新ID分配给子请求,并将关于发送子请求的工作线程314和所使用的通信信道的信息记录至与该层相关联的存储器。在本主题的示例性实施方式中,解析器诸如图2的222、242和262将新ID分配给子请求。在响应返回至工作线程314之后,工作线程314发送对于到达监听线程312的请求的响应。通过请求到达的相同通信信道发送该响应,从而实现在相同通信信道上到达监听线程312的请求、由工作线程314发送的子请求以及以工作线程314发回响应作为它们的响应的相关联。当使用同步协议时,在请求之后立即发送响应。当使用异步协议时,根据由协议执行生成的ADHOCID完成请求和响应之。

39、间的相关联。因此,创建了到达请求与新生成的子请求之间的相关联。如果使用异步协议在特定层接收多于一个的请求,则为了相对于其他请求来识别特定的请求,对于每个请求的响应均携带一个ADHOCID。这种ADHOCID与关联于特定输入请求的值相匹配。例如,如果生成三个请求并且在建立通信之后将其从一层发送至另一层,则为每个请求分配一个值。这种值可以为ADHOCID的函数,或者可以使用合适的存储器而与各自的ADHOCID相关联。例如,为每个请求分配一个数值,该数值表示在从层发送该请求之前所发生的事件的数量。对于特定请求的响应的ADHOCID携带了与该请求的数值相关联的ADHOCID。如果通信协议是同步的,则由。

40、于每个响应对应于先前请求,因此该关联是简单的。在大多数情况下,在用于传输与响应相关联的请求的相同通信信道上发送该响应。因此,可以通过解析与请求和响应相关联的数据以及解析在特定通信信道上的数据流来提供相关联。0042图3B示出了多线程层330的另一实施方式。层330包括接收请求并将请求发送至工作线程334的监听线程332。如果通过工作线程334生成附加子请求,则通过工作线程334将这些附加子请求发送至将实际子请求发送至相邻层的调度线程336。一旦子请求被发送,则将新ID分配给该子请求,并且将关于其上发送该子请求的通信信道的信息记录至与该层相关联的存储器。接收线程338接收来自下一层的响应。该响应。

41、通过相同信道被说明书CN101983366ACN101983368A8/9页11发送,并且可以根据顺序如果使用同步协议或者根据ADHOCID如果使用异步协议来与请求相关联。接下来,将该响应委托回工作线程334。工作线程334将该响应发送至发送线程340,该发送线程将该响应发送至生成与该响应相关联的请求的层。根据以上公开的多线程架构,需要线程线程表以将请求与其子请求相关联。这种线程线程表映射从每个线程接收和发送的数据。该映射是通过跟踪线程动作和钩子用户空间或内核空间内的数据来执行的。例如,检测并解析用于在层之间传输数据的数据包,或者解析在相同层内经由线程所传输的字节流。0043图4示出了根据本主。

42、题的一些示例性实施方式的在多层计算机化环境中用于将请求相关联的方法的流程图。在步骤510,检测层内部的数据流。所检测的数据包括输入数据流和输出数据流。根据本主题的一个示例性实施方式,通过位于层内的解析单元来执行检测。在可替换实施方式中,解析单元与一个以上通信信道相关联,而不与一个以上层相关联。在步骤520,将检测的数据从至少一个解析单元发送至解析该检测的数据的处理模块。根据本主题的示例性实施方式,处理模块位于层的外部并且与位于层内的至少一个解析单元进行通信。在步骤530,将从一层的解析单元所检测的数据与从另一层的解析单元所检测的数据进行比较。根据本主题的示例性实施方式,在一层的输出数据流和其相。

43、邻层的输入数据流之间执行该比较。例如,将层1图1B的410的输出数据流与层2图1B的420的输入数据流相比较。该比较可以基于请求ID,该请求ID是通过在请求字符或者请求参数或组合上、或者在可以与单个请求事件相关联的协议的其他部分上应用散列函数、CRC函数等来确定的。用于比较输入数据流和输出数据流的其他参数可以是在一层从中接收请求或响应的通信信道ID、表示通过层220接收或发送的先前请求的数量的计数器ID、请求的源头或目的的IP端口、请求是输入还是输出、通过每层来发送或接收的时间等。该比较可以基于以上所公开的其他参数,或者可以由本领域的技术人员来确定。在步骤540,根据以上所公开的参数通过使用匹。

44、配单元图2的280将请求相关联。如果来自层N的输出请求多于到层N1的输入请求,或者输入请求多于输出请求,或者如果相似值与不同请求或多于一个的请求相关联,则可以通过处理模块执行诸如LCS的多种算法或由本领域的技术人员使用的任何其他方法。在步骤550,处理模块确定请求或事务的资源消耗。本主题的一个技术效果是,在不修改请求内的数据并且不添加除了解析模块或检测模块以外的模块的情况下,提供了一层的输入请求与另一层的输出请求的相关联。这种架构和装置是新颖且非显而易见的,并且其提供了简单的实现方式、安装和修改。由于只有匹配单元280了解与单个事务相关联的请求,因此该架构不允许实时对资源消耗进行解析,而在标记。

45、方法中,每一层都了解与相同事务相关联的先前请求。0044根据在每层内所执行的每个请求的时间并且根据与执行请求的线程有关的参数来确定资源消耗。由于多个请求与相同事务相关联,因此本领域的技术人员可以对由每个请求所消耗的资源进行求和,以确定事务的资源消耗。其他资源可以为CPU、存储器、I/O设备等,它们由至少一个解析单元进行解析,并被发送至处理数据的中央存储器。0045通过周期性地接收每层的实际时钟值并与中央存储器中的时钟值相比较,来解决由于内部时钟偏移而导致的各层之间的时差,从而在各层之间使时差同步。本领域的技术人员可以提供用于使层同步的任何其他方法。0046可以在其中有WINDOWS版本、LIN。

46、UX、SOLARIS、MAINFRAME、AIX、HPUX、AS400、说明书CN101983366ACN101983368A9/9页12VXWORKS或其他OS以及以上的衍生物的各种操作系统中实现本主题中公开的方法和装置。0047尽管参考示例性实施方式描述了本公开,但本领域的技术人员应当理解的是,在不背离本发明的范围的前提下,可以进行各种改变并且可以用等价物替换其要素。另外,在不背离本发明的本质范围的前提下,可以进行多种修改,以使特定情况或材料适用于教导。因此,本公开主题不旨在限于特定实施方式作为所预期的执行本发明的最佳方式,而仅由以下权利要求来限定。说明书CN101983366ACN101983368A1/5页13图1A说明书附图CN101983366ACN101983368A2/5页14图1B说明书附图CN101983366ACN101983368A3/5页15图2说明书附图CN101983366ACN101983368A4/5页16图3A图3B说明书附图CN101983366ACN101983368A5/5页17图4说明书附图CN101983366A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1