专利名称:执行数据中间处理的方法以及关联的计算机程序产品、数据中间处理设备和信息系统的利记博彩app
技术领域:
本发明涉及数据通信,更具体地,涉及在数据通信网络中执行数据中间处理的方 法,该数据通信网络能够传送用于表示针对由一个或多个分布式数据资源提供的数据服务 的请求的数据消息,以及在适合的时候传送对这种请求的响应,所述请求是以用于数据访 问的第一格式来表达的,所述第一格式定义多个消息参数,所述数据消息被编码为用于在 数据通信网络中传输的第二格式。本发明还涉及关联的计算机程序产品、数据中间处理设 备和信息系统。
背景技术:
复杂的信息系统环境常常涉及对信息或功能进行请求的请求侧与对信息进行响 应或执行所请求功能的响应侧之间的不同数据模型。此外,这种复杂环境中的响应侧常常 包括多个数据资源,该多个数据资源是可以在向外扩展的意义上(涉及不同实体的数据分 布在同一类型的目录的多个实例上)以及在信息树分布的意义上(不同类型的信息位于不 同类型的目录中)分布的。在这种复杂的信息系统环境中,有必要将某种数据中间处理包 括在信息系统中,以允许请求侧与响应侧之间的通信。通常,复杂的信息系统可以在如GSM、UMTS、D-AMPS, CDMA2000、FOMA 或 TD-SCDMA 之类的移动电信系统中找到,具体地,可以在为了管理系统中的各种订户数据和事务而需 要的目录服务中找到。作为可实施本发明的环境的非限制性示例,将在本文的其余部分中 使用移动电信的目录服务。归属位置寄存器(HLR)和归属订户服务器(HSS)是订户目录的两个示例。目前认 为,对于未来的移动电信系统架构,如第四代或更高,将订户目录(如HLR或HSS)划分为 “无数据”前端设备,该“无数据”前端设备对业务和信令进行控制但不包含电信目录数据; 以及单独的一般数据层,通过基于例如轻量目录访问协议(LDAP)的目录服务而实现。这种 目录的大小可能是巨大的,包含多至几千万个订户,每个订户由多个标识符标识,并且包含 每秒100,000个事务的量级的总吞吐量,其中,所允许的延迟限于几毫秒。由于大小的关 系,数据层将必须向外扩展到许多实现的数据资源(如LDAP目录服务器)上以及在地理上 向外扩展。在这种复杂和大型的环境中,数据中间处理变为关键任务。典型地,表示针对数据服务的请求的数据消息由请求方(如软件应用)以用于数 据访问的第一格式来表达。用于数据访问的第一格式遵循预定义语法,并包括多个消息参 数,其目的在于包含指定所请求的数据服务所必需的数据。一旦被创建,数据消息就被编码 为用于传输的第二格式。第二格式使得可以将编码后的数据消息方便地发送至信息系统中 包括的数据通信网络上。当提供所请求的数据服务的数据资源是LDAP目录服务器时,用于 数据访问的第一格式就是LDAP。然后,将称作抽象语法标记1 (ASN. 1)的预定义标准标记与 关联的编码规则(如基本编码规则(BER)) —起使用,将LDAP格式的数据消息编码为适于 传输的第二二进制格式。
图1示意了使用基于LDAP的目录服务在移动电信系统中执行数据中间处理的现 有技术方式。在步骤50中,数据中间处理器从数据通信网络接收传入的数据流16。对数 据流16进行分析,以确定完整的输入数据消息12in(称为成帧的过程)。输入数据消息12in 是由请求方以用于数据访问的第一格式创建的LDAP消息的BER编码的二进制表示,用于表 示例如针对由以LDAP目录服务器的形式存在的多个数据资源中的任一个提供的数据服务 的请求,并被编码为以字节13序列的形式存在的用于传输的其第二格式。LDAP消息(以其 第一格式存在)包含多个消息参数。在步骤52中,使用数据中间处理器中的解析功能,针 对每个消息参数,对输入数据消息12in进行解析。随着对消息参数进行解析,以例如数据对 象、记录或数据变量的形式来创建每个所解析参数的高级表示。因此,在步骤52中,创建运 行时数据结构34,作为具有消息参数的输入数据消息12in的完整表示。不再利用在接收时 存储在数据中间处理器的存储器中的输入数据消息12in。在步骤M中,数据中间处理器执行数据中间处理逻辑。这包括对所创建的、具有 所解析的消息参数的运行时数据结构34进行处理,以检查对于即将到来的数据中间处理 任务而言特别关注的消息参数,并在必要时对消息参数进行适配以便随后在接收侧向其目 的地传送数据消息。对消息参数进行适配的步骤包括将运行时数据结构34修改为修改后 的版本34’,反映由数据中间处理逻辑在步骤M期间生成的任何改变的、删除的或添加的 消息参数。在一些情况下,这可以包括将整个运行时数据结构34拷贝为拷贝34’。一旦数据中间处理逻辑完成在步骤M中对运行时数据结构34/34’的处理,数据 中间处理器就通过将处理后的运行时数据结构34’编码为用于传输的第二格式,在步骤56 中从头开始构建新的输出数据消息12。ut。最后,在数据通信网络上,在传出的数据流18中 发送由此产生的输出数据消息12。ut。尽管认为上述现有技术方式在执行数据中间处理时能够达到其目的,但是本发明 的发明人已意识到该方式的性能问题,其在存储器利用率方面和处理成本方面都不高效。 所造成的缺点是信息系统中请求与响应之间的延迟可能升高至不可接受的水平。因此,需要改进在复杂的信息系统中执行数据中间处理的方式。
发明内容
相应地,本发明的目的是消除或减轻上述问题中的至少一些。作为本发明背后的概念思想,本发明的发明人已意识到,可以通过仅仔细选择消 息参数的子集以进行解析,从而仅产生仅表示所选子集中的所解析参数的、受限的运行时 数据结构,来避免将输入数据消息的所有消息参数完全解析为完整的运行时数据结构。由 于发明人的这种见解,使处理时间以及存储处理方面的改进变得可行。已经将该概念思想简化为至少根据以下所述的本发明的方面和实施例来实施。因此,本发明的一方面在于一种在数据通信网络中执行数据中间处理的方法,所 述网络能够传送用于表示针对由一个或多个分布式数据资源提供的数据服务的请求的数 据消息,以及在适合的时候传送对这种请求的响应,所述请求是以用于数据访问的第一格 式来表达的,所述第一格式定义多个消息参数,所述数据消息被编码为用于在数据通信网 络中传输的第二格式,所述方法包括从所述数据通信网络接收传入的数据流;
对传入的数据流进行分析以确定所述传入的数据流中的输入第二格式消息;通过对所述多个消息参数的所选子集进行解析,对输入第二格式消息的一部分进 行处理;产生运行时数据结构以表示所选子集中的所解析的消息参数;通过应用数据中间处理逻辑来对所产生的运行时数据结构进行处理,所述数据中 间处理逻辑定义要对传入的数据消息采取的动作,所述动作包括在必要时,通过对所选子 集中的消息参数中的任一个进行修改和/或基于所解析的消息参数来添加新的消息参数, 对所产生的数据结构进行适配;根据输入第二格式消息以及在对所产生的运行时数据结构进行处理的步骤中适 配的所产生的数据结构,构建输出第二格式消息;以及在所述数据通信网络上,在传出的数据流中发送所述输出第二格式消息。本发明的该方面将提供数据中间处理的显著性能增益,这是由于未对输入消息完 全进行解析。取而代之,该解析被限于所选消息参数,并且仅针对这些所解析的消息产生运 行时数据结构。这将允许以更紧凑的方式设计中间处理逻辑,从而节约存储空间和处理成 本。由于可以使数据中间处理变得更加高效,因此可以减小系统中请求与响应之间的延迟。典型地,数据服务由多个分布式数据资源来提供,其中,由所述数据中间处理逻辑 定义的动作包括要对传入的数据消息采取的路由动作,以将所述传入的数据消息引导至所 述多个分布式数据资源中正确的分布式数据资源。在一个或多个实施例中,在分析步骤中,将输入第二格式消息存储在存储器中并 保存于其中,其中,构建输出第二格式消息的步骤包括使输出第二格式消息整体地或部分 地基于保存在存储器中的输入第二格式消息。由于与现有技术方式相比,输出第二格式消 息不是根据(以用于数据访问的第一格式)表示整个数据消息的运行时数据结构来从头开 始构建的,而是直接根据所存储的输入第二格式消息(已经以用于传输的第二格式存在) 来构建的,输出消息的构建能够更快速且以更高存储效率来进行。对于这样的一个或多个实施例,在通过进行解析来进行处理的步骤期问,有利地, 在所述存储器中设置和维持指向输入第二格式消息内的所解析的消息参数的位置的指针, 以便进一步改进处理效率和存储处理。对于这样的一个或多个实施例,当在通过应用数据中间处理逻辑来进行处理的步 骤期间已经将所解析的消息参数中的任一个的数据值适配为新值时,构建输出第二格式消 息的步骤包括在所述存储器中数据值原始存储的位置,利用新值来盖写数据值。这里,有 益地使用先前在通过进行解析来进行处理的步骤期间在所述存储器中设置和维持的、指向 输入第二格式消息内的所解析的消息参数的位置的指针。当在通过应用数据中间处理逻辑来进行处理的步骤期间已经将所解析的消息参 数中的单个消息参数的数据值适配为需要与所述第二格式的所述数据值不同的数据长度 的新值时,构建输出第二格式消息的步骤可以包括在所述存储器中数据值原始存储的位置,利用新值替换数据值;在所述存储器中更新所述单个参数的长度值;对所述存储器中存储的输入第二格式消息进行处理,以适应所述单个参数的不同 数据长度;以及
更新受所适配的单个参数影响的任何其他长度值。这种其他长度值可以例如是包 含的(高级)消息参数的长度值或者输入第二格式消息的总长度值。对所存储的输入第二格式消息的处理可以包括将所存储的输入第二格式消息的 尾部剩余部分拷贝或移动至存储器中的邻接存储位置,以在存储器的连续存储区域中维持 所存储的输入第二格式消息。通过在所述存储器的连续存储区域中维持所存储的输入第二 格式消息,即作为存储器中的单个字节序列,发送步骤将是非常高效的,这是由于可以从连 续的存储区域中读取完整的输出数据消息而无需任何(重新)分配存储器的操作。然而, 作为备选,可以取而代之地允许所存储的输入第二格式消息变为由于上述更新数据值长度 的步骤而被分段为所述存储器中的多个存储区域。在这种情况下,可以在发送步骤期间挑 选分段后的数据消息片段,并在传出的数据流中将其组合为单个输出数据消息。在一个或多个实施例中,所述方法还包括在通过应用数据中间处理逻辑来进行处理的步骤中,确定是否需要对任何附加消 息参数进行解析;以及如果需要,则对来自输入第二格式消息的附加部分的、未包括在所述多个消息参数的所选子集 中的至少一个附加消息参数进行解析;以及对所述至少一个附加消息参数进行处理。因此,根据这样的一个或多个实施例,将对输入消息的处理划分为两个阶段第 一强制阶段,其中,始终对消息参数的所选受限子集进行解析,而与所涉及的消息的类型无 关;以及第二阶段,仅当在第一阶段中或在第一阶段之后由中间处理逻辑确定所涉及的消 息具有特定类型或者包含或请求特定数据从而需要附加处理时才执行。由于在第一阶段 中解析的消息参数的子集较小(仅最小范围的参数)但对于许多常见消息类型来说足够, 因此通常执行第一阶段便足以完成数据中间处理,从而提供了特别高效的数据中间处理方 式。对所述至少一个附加消息参数进行处理的步骤可以包括将数据中间处理逻辑还 应用于所解析的至少一个附加消息参数。在一个或多个实施例中,由所述多个分布式数据资源提供的数据服务可以包括目 录服务。用于数据访问的第一格式可以符合轻量目录访问协议(LDAP),用于传输的第二格 式可以是符合抽象语法标记1(ASN. 1)的编码规则中的任一个的编码格式。因此,对于这样的一个或多个实施例,将抽象语法标记1 (ASN. 1)标准与其编码规 则中的任一个一起使用,将第一格式数据消息(符合LDAP)编码为用于传输的第二格式。这 些编码规则包括基本编码规则(BER)、规范编码规则(CER)、唯一编码规则(DER)、xml编码 规则(XER)、压缩编码规则(PER)和通用串编码规则(GSER)。然而,能够想到,其他实施例 可以用于具有除LDAP外的其他数据访问格式和/或除ASN. 1标准的编码规则外的其他传 输格式的数据消息的数据中间处理。在一个有利实施例中,目录服务在移动电信系统中实现归属位置寄存器(HLR)或 归属订户服务器(HSS)的数据层。这种移动电信系统可以例如符合GSM、UMTS、D-AMPS、 CDMA2000、FOMA或TD-SCDMA,或者符合第四代或更高架构中的任何未来标准。认为本发明 在未来电信系统架构中特别有益,其中,HLR或HSS很可能被划分为“无数据”前端设备, 该“无数据”前端设备对业务和信令进行控制但不包含电信目录数据;以及单独的一般数据
8层,通过LDAP服务而实现。鉴于这种目录的“电信级”大小,数据层将包含巨大量的数据并 将必须向外扩展至许多实现的数据资源(LDAP服务器)上以及在地理上向外扩展。数据中 间处理在这种环境中变为关键任务,本发明提供的在效率上的可观改进被认为是特别有价 值的。在该有利实施例或另一有利实施例中,数据服务由多个分布式数据资源来提供, 并至少包括消息收发服务或对电信服务的收费。本发明的实施例对于信息系统来说是特别有利的,其中,数据服务由多个分布式 数据资源来提供,并包括对分布在特定类型的目录和/或不同类型的多个目录的多个实例 上的数据对象或实体的访问,其中,所述数据中间处理逻辑要对传入的数据消息采取的动 作用于形成所述数据服务的请求方对所述多个分布式数据资源的公共访问点。本发明的第二方面是一种包括计算机可读介质在内的计算机程序产品,所述计算 机可读介质上具有包括程序指令在内的计算机程序,所述计算机程序能够被加载至数据处 理单元中,并适于在所述计算机程序由所述数据处理单元运行时使所述数据处理单元执行 根据本发明第一方面的步骤。本发明的第三方面是一种用于在数据通信网络中执行数据中间处理的数据中间 处理设备,所述网络能够传送用于表示针对由一个或多个分布式数据资源提供的数据服务 的请求的数据消息,以及在适合的时候传送对这种请求的响应,所述请求是以用于数据访 问的第一格式来表达的,所述第一格式定义多个消息参数,所述数据消息被编码为用于在 数据通信网络中传输的第二格式,所述数据中间处理设备包括用于从所述数据通信网络接收传入的数据流并对传入的数据流进行分析以确定 所述传入的数据流中的输入第二格式消息的一个或多个模块;用于通过对所述多个消息参数的所选子集进行解析来对输入第二格式消息的一 部分进行处理并产生运行时数据结构以表示所选子集中的所解析的消息参数的一个或多 个模块;用于通过应用数据中间处理逻辑来对所产生的运行时数据结构进行处理的一个 或多个模块,所述数据中间处理逻辑定义要对传入的数据消息采取的动作,所述动作包括 在必要时,通过对所选子集中的消息参数中的任一个进行修改和/或基于所解析的消息参 数来添加新的消息参数,对所产生的数据结构进行适配;用于根据输入第二格式消息以及由所述用于对所产生的运行时数据结构进行处 理的一个或多个模块适配的所产生的数据结构,构建输出第二格式消息的一个或多个模 块;以及用于在所述数据通信网络上,在传出的数据流中发送所述输出第二格式消息的一 个或多个模块。本发明的第四方面是一种信息系统,包括一个或多个分布式数据资源;数据通信网络,能够传送用于表示针对由所述一个或多个分布式数据资源提供的 数据服务的请求的数据消息,以及在适合的时候传送对这种请求的响应,所述请求是以用 于数据访问的第一格式来表达的,所述第一格式定义多个消息参数,所述数据消息被编码 为用于在数据通信网络中传输的第二格式;以及
根据本发明第三方面的数据中间处理设备。本发明的第二、第三和第四方面的实施例一般可以具有与第一方面的上述特征中 的任一个相同或直接相对应的特征。应当强调,本说明书中使用的术语“包括”被视为指定存在所述特征、组分、步骤或 部件,但不排除存在或添加一个或多个其他特征、组分、步骤、组件或其组合。
参照附图,通过以下具体实施方式
,本发明的实施例的目的、特征和优势将变得显 而易见,在附图中图1是在复杂信息系统中执行数据中间处理的现有技术方式的示意图;图2是可实施本发明实施例的信息系统的非限制性示例的示意图;图3是根据本发明一个实施例的具有以LDAP目录服务器形式存在的多个分布式 数据资源以及数据中间处理设备的信息系统的示意图;图4和5示意性地示出了根据本发明一个实施例的执行数据中间处理的方法;图6示出了根据本发明一个实施例的数据中间处理设备的功能模块;以及图7和8是示出了本发明实施例与来自商用供应商的现有数据中间处理软件之间 的性能测试的图形。
具体实施例方式现在将参照附图来描述本发明的实施例。然而,本发明可以以许多不同形式体现, 并且不应理解为限于这里阐述的实施例;更确切地说,提供这些实施例,使得本公开是全面 且完整的,并将向本领域技术人员完整地传达本发明的范围。附图中所示的具体实施例的具体实施方式
中使用的术语并不意在限制本发明。在附图中,类似的标记表示类似的元素。在转至所公开的实施例的具体实施方式
之前,现在将参照图2来简要描述可实施 这些实施例的示例环境。图2公开了信息系统100,在系统中的请求侧具有数据服务的多个请求方 llOa-llOn,并在系统中的响应侧具有一个或多个(典型为多个)数据资源140a-140n。请 求方IlOa-IlOn(可以是软件应用)通过发送在数据通信网络120中传输、由数据中间处 理器130处理且最终被转发至数据资源140a-140n的数据消息112,请求由多个数据资源 140a-140n提供的信息或功能。数据中间处理器130充当请求方IlOa-IlOn对数据资源 140a-140n的访问点,从而实现请求侧与响应侧之间的通信。当请求方IlOa(等等)要进行请求时,其将以用于数据访问的第一格式创建数据 消息11 。数据消息具有多个消息参数114,消息参数114包含指定所请求的数据服务所必 需的数据。一旦被创建,数据消息就被编码为用于传输的第二格式,如在11 处所示。第 二格式使得可以将编码后的数据消息11 方便地发送至数据通信网络120上。因此,如在11 处所示,包括来自请求方IlOa的编码后消息在内的、来自请求方 IlOa-IlOn中任一个的编码后数据消息将在通信网络120中传输,并到达数据中间处理器 130。从而,数据中间处理器130将接收传入的数据流116,对其进行分析以确定传入的数据 流中的来自请求方IlOa的输入第二格式消息1123,并将其存储在内部存储器中,如在11 处所示。如将参照其余附图更详细地解释的,数据中间处理器130将通过对多个消息参数 114的所选子集进行解析来对输入第二格式消息11 的一部分进行处理,并产生受限的运 行时数据结构134以表示所选子集中的所解析的消息参数。然后,数据中间处理器130将 通过应用预定义数据中间处理逻辑132来对所产生的受限运行时数据结构134进行处理, 所述数据中间处理逻辑定义要对传入的数据消息采取的动作,以将其引导至多个分布式数 据资源140a-140n中正确的数据资源,所述动作包括在必要时,通过对所选子集中的消息 参数中的任一个进行修改和/或基于所解析的消息参数来添加新的消息参数,对所产生的 受限数据结构134进行适配。然后,数据中间处理器130将根据在11 处存储的输入第二格式消息11 以及在 必要时在由数据中间处理逻辑132对所产生的受限数据结构134进行处理期间适配的所产 生的有限数据结构134,构建输出第二格式消息1125。然后,将在数据通信网络120上,在传 出的数据流118中向多个数据资源140a-140n发送输出第二格式消息,如在11 处所示。图3示出了使用基于LDAP的目录服务的复杂信息系统的示例,可在移动电信系统 中用于管理订户相关事务。如图3所示,响应侧(即,数据资源M0)包括数据资源MOa1+ 240b1_2……MOrvdP 242η的复杂结构。在这些数据资源中,数据资源M0ai_3、240lv2…… 对此㈠是!^^ 目录,而数据资源属于不同类型,称作“协议X”。接收机侧可以例如在 如第四代或更高的未来移动电信系统架构中实现归属位置寄存器(HLR)和/或归属订户服 务器(HSS)的数据层。如图所示,数据资源240是在向外扩展的意义上(涉及不同对象或 实体(如电信用户)的数据分布在同一类型的目录的多个实例上(如在M0ai_3处所示)) 以及在信息树分布的意义上(不同类型的信息位于不同类型的目录(即,不同类型的LDAP 目录以及协议X目录)中)分布的。数据中间处理器230形成请求应用210a-210n对数据资源240的复杂结构的单个 访问点。数据中间处理器230从而隐藏应用210a-210n的响应侧的下游复杂度和拓扑(信 息和网络)。在201处示意性地示出了数据中间处理器230如何有效地提供应用210a-210n 对“虚拟目录”的接口,该“虚拟目录”被应用210a-210n视为本质上单个目录,但该“虚拟 目录”实际上通过目录^(^+2401^2……240ηι_4和242Η的复杂结构而实现。目录M0ai_3、240lv2……240ηι_4和242^的大小可能是巨大的;包含多至几千万 个订户,每个订户由多个标识符标识,并且包含每秒100,000个事务的量级的总吞吐量。然 而,由于根据本发明的执行数据中间处理的高效方法,可以降低处理和存储成本,并且可以 实现请求与响应之间的可接受的延迟。图4和5更详细地示出了应用于如图3所示的LDAP至LDAP数据中间处理情形时, 根据本发明的数据中间处理的原理。如前所述,不同于现有技术,本发明的关键特征在于 根据所接收的输入二进制消息,实际上仅将所选部分解析为将容易地可用作中间处理逻辑 的输入的运行时数据结构。这带来了有益的节约;该解析仅必须检查二进制消息,直到找到 所有所需参数的时间点为止,并且,可以避免对不必要的数据结构进行构造从而保持数据 中间处理实际上不需要的信息。此外,这导致对拷贝数据的需要减少以及减少存储器分配, 在适合的时候包括垃圾收集。在图4中,在步骤250中,数据中间处理器130、230从数据通信网络120、220接收传入的数据流216。对数据流216进行分析,以通过成帧处理来确定完整的输入数据消息 212in。输入数据消息212^可以是由请求方以用于数据访问的第一格式创建的LDAP消息 (例如,图2中的请求方IlOa或图3中的应用210a创建的消息112》的BER编码的二进制 表示,用于表示例如针对由被实现为例如LDAP目录服务器的多个数据资源140、240中的任 一个提供的数据服务的请求。在被编码为用于传输的其第二格式时,输入数据消息211 包 含字节213序列,在接收时将其存储在数据中间处理器130、230的存储器中。如前所述,LDAP消息(以其第一格式存在)包含多个消息参数114、214。在步骤 252中,数据中间处理器130、230对输入数据消息212in执行解析。更具体地,如图5所示, 仅选择可用消息参数214的子集215以由数据中间处理逻辑132进行解析以及随后处理。 在图5中,该消息表示LDAP SearchRequest,消息参数的所选子集215包含messageld、 SearchRequest和baseOb ject参数,而不选择LDAP SearchRequest的其他参数217以在步 骤252中进行解析。因此,步骤252仅对输入数据消息212in的前导部分进行操作,并仅对 其消息参数的所选子集215进行解析。由此,产生受限的运行时数据结构234,以仅表示所 解析的消息参数。本领域技术人员认为适当时,可以例如以表示每个所解析的参数的数据 对象或数据变量的集合的形式来实现受限运行时数据结构234,或者可以将受限运行时数 据结构234实现为整体表示所解析的消息参数的子集的数据记录。在步骤252完成时,如 现有技术中所进行的,不丢弃输入二进制消息212in,而是相反,保存输入二进制消息 以便随后用于在步骤256中高效地构建输出二进制消息212。ut。因此,在步骤252中进行解 析期间,在存储器中设置和维持指向输入消息212in内的所解析的消息参数的位置的指针, 以便在后续构建步骤256期间进一步改进处理效率和存储处理。然而,首先,在步骤254中,数据中间处理器130、230执行或应用预定义数据中间 处理逻辑132。这包括对具有所选子集215中的所解析的消息参数的所产生的受限运行 时数据结构234进行处理;以及在必要时对消息参数进行适配,以便随后在接收侧向其目 的地传送数据消息。对消息参数进行适配可以包括将运行时数据结构234修改为修改后 的版本234’,反映由数据中间处理逻辑在步骤2M期间生成的任何改变的、删除的或添加 的消息参数。在一些情况下,数据中间处理逻辑132可以推断出所选子集215中的所解析的消 息参数不足以完成数据中间处理器的任务;因此,如步骤255中所示,确定是否需要对来自 输入消息212in的一个或多个附加参数进行解析。如果需要,则通过在搜索所需的附加消 息参数时对输入消息212in的附加部分进行解析来重复步骤252,并且在必要时还重复步骤 254。在步骤256中,数据中间处理器130、230根据所存储的输入二进制消息来构 建输出二进制消息212。ut,该输入二进制消息212ine经方便地以用于传输的第二(二进制) 格式可用,并存储在数据中间处理器130、230的存储器中。这种对所存储的输入二进制消 息212in的字节213序列的重用以构建输出二进制消息212。ut由图4中的箭头260来指示, 并表示构建输出消息的处理和存储高效方式。从修改后的运行时数据结构234’检索任何所适配的消息参数,并将这些消息参数 并入输入二进制消息212in以构建输出消息212。ut。有益地使用在解析步骤252期间在存储 器中设置和维持的、指向输入消息212in内的所解析的消息参数的位置的指针。根据修改后的消息参数的大小和范围,该过程可以采用不同的形式在最简单的情况下,仅需要盖写修改后的消息参数的实际数据值,例如当改变整 数值以及新值处于与初始值相同的范围内时。产生新长度的二进制编码值的更新值操作更加复杂一些。在这种情况下,需要在 编码后的消息中反映长度的改变。典型地,这意味着更新该值自身的长度字段以及任何包 含它的(高级)消息参数的长度值(如总消息长度)。这种改变还将需要将所存储的输入 消息212in的尾部剩余部分拷贝或移动至存储器中的邻接存储位置的操作,以在存储器的 连续存储区域中维持所存储的输入第二格式消息。通过在存储器的连续存储区域中维持所存储的输入第二格式消息2Uin,即作为存 储器中的单个字节序列,随后的发送步骤258将是非常高效的,这是由于可以从连续存储 区域中读取完整的输出消息212。ut而无需任何(重新)分配存储器的操作。然而,作为备 选,可以取而代之地允许所存储的输入消息212in变为由于上述更新数据值长度的步骤而 被分段为存储器中的多个存储区域。在这种情况下,可以在发送步骤期间挑选分段后的数 据消息片段,并在传出的数据流中将其组合为单个输出数据消息。如果消息的大小较大,则 后一种备选方案可能是优选的,但是应当注意,在正常情况下,字节数组的直接拷贝是低成 本且快速的操作。最后,在数据通信网络120、220上,在传出的数据流218中发送由此产生的输出数 据消息212。ut。注意,以上描述涉及以一般方式对LDAP消息的处理,因此,相同的观察适用于对 从请求侧接收的请求和从响应侧接收的响应的处理。现在将更细致地查看两个常见LDAP消息——SearchRequest和 SearchResultEntry,以及可以如何通过上述数据中间处理来处理它们。总体LDAP消息结构由以下ASN. 1定义来定义
LDAPMessage: = SEQUENCE{
messageID MessageID,
protocolOp CHOICE{
bindRequestBindRequest,
bindResponseBindResponse,
unbindRequestUnbindRequest,
searchRequestSearchRequest,
searchResEntrySearchResultEntry,
searchResDoneSearchResultDone,
searchResRefSearchResultReference,
modifyRequestModifyRequest,
modifyResponseModifyResponse,
addRequestAddRequest,
addResponseAddResponse,
delRequestDelRequest,
delResponseDelResponse,
intermediateResponse IntermediateResponse}, controls
Controls OPTIONAL}
modDNRequestModifyDNRequest,
modDNResponseModifyDNResponse,
compareRequestCompareRequest,
compareResponseCompareResponse,
abandonRequestAbandonRequest,
extendedReqExtendedRequest,
extendedRespExtendedResponse,如以用于传输的第二格式而编码的,可以通过对第一 SEQUENCE进行BER编码,从 信息的第一字节导出消息的完整长度。需要该信息来对请求进行适当的成帧,即,以确定何 时接收到完整的请求。关于接下来的messagelD,应当注意,潜在地,其可以有益于将响应和请求进行相 关。但是,在许多情况下,由较低网络层(即TCP)给出的信息足以进行这种相关。在所公开的实施例中,始终对messageld和随后的protocolOp进行解析和处理。 对于多个LDAP消息,这实际上表示足以进行适当处理(即,正确地转发消息、更新与LDAP 会话有关的所保存的内部状态、检测差错的特定分类等等)的信息。如下定义的LDAP SearchRequest需要另外的一些解析SearchRequest: = [APPLICATION 3]SEQUENCE{baseObject LDAPDN,scopeENUMERATED{baseObject(0),singleLevel(1),wholeSubtree(2),.··},derefAliases ENUMERATED{neverDerefAliases (0),deref InSearching (1),derefFindingBaseObj (2),derefAlways(3)},sizeLimit INTEGER(0. . maxlnt),timeLimit INTEGER(0. . maxlnt),typesOnly BOOLEAN,filterFilter,attributes AttributeSeIection} 需要在对karchRequest的处理中应用的逻辑要基于所请求的信息是什么来将 SearchRequest路由至正确的下游目录实例。在正常情况下,包含在baseObject中的信息 将提供足以正确地进行路由的信息,并且解析可以在该参数之后停止。
在观察单个请求时的潜在节约可能显得较小,但必须记住,将非常频繁地执行该 逻辑。还需要查看karchRequest的结果。^archResultEntry与目录中的一个条目相 对应,并且是与karchRequest的参数相匹配的结果SearchResultEntry: = [APPLICATION 4]SEQUENCE{objectNameLDAPDN,attributes PartialAttributeList}PartialAttributeList:: = SEQUENCE OFpartialAttribute PartialAttributePartialAttribute:: = SEQUENCE{typeAttributeDescription,valsSET OF value Attribute Value}AttributeDescription:: = LDAPString—Constrained to<attributedescription>— [RFC4512]AttributeValue:: = OCTET STRING可以从单个SearchRequest返回多个SearchResultEntry项目。在被称作
SearchResDone的尾部项目中携带该搜索自身的实际状态。由于^archResultEntry (可 以)携带包含在匹配条目中的所有属性,因此,其可以1)包含多个属性,幻具有非常显著的 大小。在HLR的情况下,讨论构成整个用户简档的多至超过1000个属性,总大小为10KB的 量级。可以将所有这种数据解析为较大的运行时数据结构的直接的现有技术实现方式将很 可能附加地对每请求消耗至少这一数量的存储器,(潜在地,如果实际上不对属性自身进行 操作,则只要使垃圾收集器忙)。当考虑更大的属性时(例如,在HSS透明数据的情况下), 甚至将进一步加剧该情形。图7和8所示的将回到本文后续部分的性能测试已经清楚地确 认,较大响应对来自商业供应商的所测试的现有数据中间处理软件的性能具有很大影响。图6示出了根据本发明一个实施例的数据中间处理设备330的功能模块。从1至 12编号的箭头指示并描述了数据中间处理设备330中的活动的流程。数据中间处理设备 330可以根据之前的附图来实现数据中间处理器130或230。如图6所示,数据中间处理设 备330包括输入10处理器模块331,可以处理图4的步骤250 ;以及初始消息解析器模块 333,可以处理图4的步骤252。图4的步骤254由中间处理逻辑协调器模块335和中间处 理逻辑执行器模块337处理,中间处理逻辑执行器模块337与附加消息解析器模块339 (步 骤252、255)和协议状态机模块341进行协作。中间处理逻辑协调器模块335还与路由表模块343、连接池模块345和输出10处 理器模块347进行协作,输出10处理器模块347可以处理图4的步骤258并可以包括路由 动作,以将传入的数据消息112、212引导至数据资源140、240中正确的数据资源。在图6的 实施例中,图4的输出消息构建步骤256的功能由中间处理逻辑协调器模块335执行。在 其他实施例中,其可以被实现为单独的模块,或由其他模块中的任一个实现。在一些实施例 中,执行数据中间处理方法所需的数据中间处理设备330的功能被实现为单个软件而不是 模块。因此,在本发明的上下文中,“模块”应当理解为本领域技术人员为了实现本文所教导的数据中间处理功能而可以实现的任何装置——基于软件的和/或基于硬件的装置。当这 种功能以软件实现,即被实现为包括程序指令在内的一个或多个计算机程序时,数据中间 处理设备330当然还将包括为了能够执行软件和执行功能而需要的硬件,包括处理器或其 他数据处理单元、工作存储器、存储存储器、内部数据总线、网络接口等。软件可以存储在所 述存储存储器中和/或存储在另一计算机可读介质上。本发明实施例与来自商业供应商的现有数据中间处理软件之间的性能测试由图7 和图8的图形示出。本发明的重要优势在于提高效率和/或降低处理成本方面的可能的性 能增益。将图7和8中指示为“产品1”、“产品2”、“产品3”和“UPG”(后者是本申请的申 请人的数据中间处理产品)四个不同的商业可用的数据中间处理软件产品相对于图7和8 中指示为“UPGton”的本发明实施例进行测试。图7和8呈现了吞吐量和响应时间(延迟) 作为cpu利用率的函数的变化。图形清楚地指示了有利于本发明的所测试实施例的优越性 能。从而,以上已经参照本发明的一些实施例描述了本发明。然而,本领域技术人员容 易理解,在所附权利要求限定的本发明范围内还可能有其他实施例。具体地,尽管在本文 中,本发明的描述集中于涉及移动电信应用中的LDAP目录服务的信息系统中的数据中间 处理,但是应当强调,这不应解释为对本发明的限制;本发明的优点还可以用于与目录服务 不同的其他数据服务,其中数据消息以与LDAP不同的其他格式来表达。一种可能的备选应用是在电信系统中对帐户(例如预付帐户或信用帐户)的用 户的收费的处理。以传送终端用户服务的应用的形式存在的收费客户端可以使用用于如 Diameter之类的已知协议来调用作为对具有大量收费服务器(几十个至几百个)的隐藏下 游结构的单个访问点的数据中间处理器,以分布式方式存储用户和帐户数据。因此,收费服 务器将作为用户帐户的主机并提供数据服务,以供收费客户端与帐户进行交互,例如以用 于扣除资金。然而,在电信系统领域之内或之外存在落在本发明范围内的多个其他可能的 实施例。因此,另一可能的备选应用对消息收发服务进行处理。在所公开的实施例中,提供了多个数据资源140J40 ;然而,其他实施例可以仅包 括这种数据资源140、240中的一个实例。此外,可以想到以下实施例具有关联功能的数据 中间处理器130并不构建输出消息或在传出的数据流中将其发送至数据通信网络上,例如 在实现数据中间处理器130的服务器(等等)是网络中的终端节点,或者至少不被配置为 在处理步骤之后将所有所接收的消息进一步路由至网络上的情形下。
权利要求
1.一种在数据通信网络(120;220)中执行数据中间处理的方法,所述网络能够传送用 于表示针对由一个或多个分布式数据资源(140 440)提供的数据服务的请求的数据消息 (112 ;212),以及在适合的时候传送对这种请求的响应,所述请求是以用于数据访问的第一 格式来表达的,所述第一格式定义多个消息参数(114 ;214),所述数据消息被编码为用于 在数据通信网络中传输的第二格式,所述方法包括从所述数据通信网络接收(250)传入的数据流016);对传入的数据流进行分析O50)以确定所述传入的数据流中的输入第二格式消息 (212in);通过对所述多个消息参数的所选子集(21 进行解析,对输入第二格式消息的一部分 进行处理(252);产生(252)运行时数据结构034)以表示所选子集中的所解析的消息参数;通过应用数据中间处理逻辑(13 来对所产生的运行时数据结构进行处理OM),所 述数据中间处理逻辑定义要对传入的数据消息采取的动作,所述动作包括在必要时,通过 对所选子集中的消息参数中的任一个进行修改和/或基于所解析的消息参数来添加新的 消息参数,对所产生的数据结构进行适配;根据输入第二格式消息以及在对所产生的运行时数据结构进行处理的步骤中适配的 所产生的数据结构,构建(256)输出第二格式消息Ol2。ut);以及在所述数据通信网络上,在传出的数据流(218)中发送(258)所述输出第二格式消息。
2.根据权利要求1所述的方法,其中,输入第二格式消息Ol2in)在分析(250)步骤中 存储在存储器中并保存于其中,并且,构建(256)输出第二格式消息Ol2。ut)的步骤包括 使输出第二格式消息整体地或部分地基于(260)保存在存储器中的输入第二格式消息。
3.根据权利要求2所述的方法,其中,在通过进行解析来进行处理052)的步骤期间, 在所述存储器中设置和维持指向输入第二格式消息Ol2in)内的所解析的消息参数(215) 的位置的指针。
4.根据权利要求2或3的方法,其中,当在通过应用数据中间处理逻辑来进行处理 (254)的步骤期间已经将所解析的消息参数015)中的任一个的数据值适配为新值时,构 建(256)输出第二格式消息Ol2。ut)的步骤包括在所述存储器中数据值原始存储的位置,利用新值来盖写所述数据值。
5.根据权利要求2至4中任一项所述的方法,其中,当在通过应用数据中间处理逻辑来 进行处理(254)的步骤期间已经将所解析的消息参数(21 中单个消息参数的数据值适配 为需要与所述第二格式的所述数据值不同的数据长度的新值时,构建(256)输出第二格式 消息Ql2。ut)的步骤包括在所述存储器中数据值原始存储的位置,利用新值替换所述数据值;在所述存储器中更新所述单个参数的长度值;对所述存储器中存储的输入第二格式消息Ol2in)进行处理,以适应所述单个参数的 不同数据长度;以及更新受所适配的单个参数影响的任何其他长度值。
6.根据权利要求5所述的方法,其中,对所存储的输入第二格式消息Ql2in)的处理包 括将所存储的输入第二格式消息的尾部剩余部分拷贝或移动至所述存储器中的邻接存储位置,以在所述存储器的连续存储区域中维持所存储的输入第二格式消息。
7.根据前述权利要求中任一项所述的方法,还包括在通过应用数据中间处理逻辑来进行处理的步骤中,确定(25 是否需要对任何附加 消息参数进行解析;以及如果需要,则对来自输入第二格式消息的附加部分的、未包括在所述多个消息参数的所选子集中的 至少一个附加消息参数进行解析;以及对所述至少一个附加消息参数进行处理。
8.根据权利要求7所述的方法,其中,对所述至少一个附加消息参数进行处理的步骤 包括将数据中间处理逻辑还应用于所解析的至少一个附加消息参数。
9.根据前述权利要求中任一项所述的方法,其中,由所述多个分布式数据资源(140; 240)提供的数据服务包括目录服务。
10.根据权利要求9所述的方法,其中,所述用于数据访问的第一格式符合轻量目录访 问协议LDAP。
11.根据权利要求9所述的方法,其中,用于传输的所述第二格式是符合抽象语法标记 1 “ASN.1”的编码规则中的任一个的编码格式。
12.根据权利要求9至11中任一项所述的方法,其中,所述目录服务在移动电信系统中 实现归属位置寄存器HLR或归属订户服务器HSS的数据层。
13.根据权利要求9至11中任一项所述的方法,其中,数据服务由多个分布式数据资源 (140 ;240)来提供,并至少包括消息收发服务或对电信服务的收费。
14.根据前述权利要求中任一项所述的方法,数据服务由多个分布式数据资源(140; 240)来提供,并包括对分布在特定类型的目录和/或不同类型的多个目录的多个实例 (240ar240a3)上的数据对象或实体的访问,其中,所述数据中间处理逻辑要对传入的数据 消息采取的动作,用于形成所述数据服务的请求方(110;210)对所述多个分布式数据资源 的公共访问点050)。
15.根据前述权利要求中任一项所述的方法,数据服务由多个分布式数据资源(140; 240)来提供,其中,由所述数据中间处理逻辑(132)定义的动作包括要对传入的数据消息 采取的路由动作,以将所述传入的数据消息引导至所述多个分布式数据资源中的正确的分 布式数据资源。
16.一种包括计算机可读介质在内的计算机程序产品,所述计算机可读介质上具有包 括程序指令在内的计算机程序,所述计算机程序能够被加载至数据处理单元中,并适于在 所述计算机程序由所述数据处理单元运行时使所述数据处理单元执行根据权利要求1至 15中任一项所述的步骤。
17.一种用于在数据通信网络(120;220)中执行数据中间处理的数据中间处理设 备(130 ;230 ;330),所述网络能够传送用于表示针对由一个或多个分布式数据资源(140 ; 240)提供的数据服务的请求的数据消息(112 ;212),以及在适合的时候传送对这种请求的 响应,所述请求是以用于数据访问的第一格式来表达的,所述第一格式定义多个消息参数 (114 ;214),所述数据消息被编码为用于在数据通信网络中传输的第二格式,所述数据中间 处理设备(330)包括用于从所述数据通信网络接收传入的数据流016)并对传入的数据流进行分析以确定所述传入的数据流中的输入第二格式消息(212in)的一个或多个模块(331);用于通过对所述多个消息参数的所选子集(215)进行解析来对输入第二格式消息的 一部分进行处理并产生(252)运行时数据结构034)以表示所选子集中的所解析的消息参 数的一个或多个模块(333);用于通过应用数据中间处理逻辑(132)来对所产生的运行时数据结构进行处理的一 个或多个模块(335-341),所述数据中间处理逻辑定义要对传入的数据消息采取的动作,所 述动作包括在必要时,通过对所选子集中的消息参数中的任一个进行修改和/或基于所 解析的消息参数来添加新的消息参数,对所产生的数据结构进行适配;用于根据输入第二格式消息以及由所述用于对所产生的运行时数据结构进行处理的 一个或多个模块适配的所产生的数据结构,构建输出第二格式消息Ol2。ut)的一个或多个 模块(335,343);以及用于在所述数据通信网络上,在传出的数据流018)中发送所述输出第二格式消息的 一个或多个模块(335、344-347)。
18. 一种信息系统,包括 一个或多个分布式数据资源(140 ;240);数据通信网络(120 ;220),能够传送用于表示针对由所述一个或多个分布式数据资 源提供的数据服务的请求的数据消息(112 ;212),以及在适合的时候传送对这种请求的 响应,所述请求是以用于数据访问的第一格式来表达的,所述第一格式定义多个消息参数 (114 ;214),所述数据消息被编码为用于在数据通信网络中传输的第二格式;以及根据权 利要求17所述的数据中间处理设备(130 ;230 ;330)。
全文摘要
本发明提供了一种用于在数据通信网络中执行数据中间处理的方法,所述网络能够传送用于表示针对由一个或多个分布式数据资源提供的数据服务的请求的数据消息。所述请求具有用于数据访问的第一格式,所述第一格式定义多个消息参数,所述数据消息被编码为用于在数据通信网络中传输的第二格式。所述方法包括从所述数据通信网络接收(250)传入的数据流(216);对传入的数据流进行分析(250)以确定输入第二格式消息(212in);通过对消息参数的所选子集(215)进行解析,对输入第二格式消息的一部分进行处理(252);产生(252)运行时数据结构(234)以表示所选子集中的所解析的消息参数;通过应用数据中间处理逻辑(132)来对所产生的运行时数据结构进行处理(254),所述数据中间处理逻辑(132)定义要对传入的数据消息采取的动作,所述动作包括在必要时,通过对所选子集中的消息参数中的任一个进行修改和/或基于所解析的消息参数来添加新的消息参数,对所产生的数据结构进行适配;根据输入第二格式消息以及在先前步骤中适配的所产生的数据结构,构建(256)输出第二格式消息(212out);以及在所述数据通信网络上,在传出的数据流(218)中发送(258)所述输出第二格式消息。
文档编号H04L29/06GK102090039SQ200980124015
公开日2011年6月8日 申请日期2009年6月24日 优先权日2008年6月26日
发明者帕·卡尔森 申请人:艾利森电话股份有限公司