一种数据查询系统及其构建方法与相应的数据查询方法

文档序号:6580810阅读:199来源:国知局
专利名称:一种数据查询系统及其构建方法与相应的数据查询方法
技术领域
本发明涉及数据查询领域,尤其涉及一种数据查询系统及其构建方法与相应的 数据查询方法。
背景技术
在数据查询系统构建中,尤其是在性能数据查询系统构建中,或者网站服务 器的构建中,往往需要接收从客户端发送来的诸多客户端请求,其中客户端可以是 GUKGraphical User Interface,图形用户界面),客户端或者Web客户端,这些客户端请 求往往都会涉及到大规模的数据网络传递,而且返回的数据还需要进行一些逻辑计算、 归并以及排序之类的处理。例如,性能数据查询系统中,采集到的性能数据经过处理后 存储到性能报表中,数据查询系统中往往需要通过查询组件先从后台数据库中查询出符 合条件的性能报表中的性能数据,再将这些性能数据从后台经过网络传递回来,返回的 性能数据再经过一些 逻辑计算被封装成适合GUI显示的数据结构;如果是分布式系统的 话,还会接收从不同的数据源来的数据,在数据查询系统中合并,最终提供给GUI用于 显不。目前查询组件一般都采用直接构建的方式,并且在逻辑上具有唯一性,也就是 说一个数据查询系统只有一个查询组件,所有的客户端请求(包括GUI,客户端或Web客 户端的客户端请求)都在这个查询组件中去处理,往往会出现由于请求的增多而导致服 务不能及时响应,从而降低处理效率。因此,由于查询组件的唯一特性,也使得查询组件不具备可扩展性,不具备可 伸缩性,也不能通过添加硬件设备来提升请求处理的效率,影响系统本身的可用性。

发明内容
本发明要解决的技术问题是提供一种数据查询系统及其构建方法与相应的数据 查询方法,保证了数据查询系统的高可用性。为了解决上述问题,本发明提供了一种数据查询系统,包括客户端,所述数据 查询系统还包括一个查询组件代理以及与该查询组件代理连接的一个或多个查询组件; 其中,所述客户端,用于向所述查询组件代理发送客户端请求;所述查询组件代理,用于保存所述查询组件的查询组件号、查询组件实例以及 查询组件的负载情况,并根据查询组件上报的所述查询组件的客户端请求负载情况进行 更新;以及接收所述客户端请求,并根据负载均衡的原则,选择一个查询组件返回给所 述客户端;所述查询组件,用于向查询组件代理发送查询组件号与查询组件实例进行注 册,并上报所述查询组件的客户端请求负载情况;以及处理所述客户端请求并将处理结 果返回给所述客户端。
进一步地,上述数据查询系统还具有如下特征所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所 述负载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户 端请求负载情况为所述查询组件上的客户端请求的处理权重, 所述负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。进一步地,上述数据查询系统还具有如下特征所述数据查询系统进一步包括查询组件号分配器和负载均衡控制器;其中,所述查询组件号分配器,用于在所述查询组件启动时,给所述查询组件分配一 个唯一的未被其他查询组件占用的查询组件号;所述负载均衡控制器,用于在所述数据查询系统运行过程中,根据数据查询系 统运行指标或根据接收到的用户的控制命令,向所述查询组件发送启动指令,指示所述 查询组件启动;其中,负载均衡控制器根据接收到的用户的控制命令向查询组件发送启动指 令,或者负载均衡控制器根据所述数据查询系统运行指标设置启动阈值,并监测所述数 据查询系统的运行状况,如果数据查询系统运行指标达到所述启动阈值,则向所述查询 组件发送启动指令。进一步地,上述数据查询系统还具有如下特征所述数据查询系统运行指标为数据查询系统的使用规模,客户端请求的响应 性,客户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗时以及 占用资源中的一种或多种。为了解决上述问题,本发明还提供了一种上述数据查询系统的构建方法,具体 包括如下步骤启动一个查询组件代理以及启动一个或多个查询组件,所述查询组件启动后向 所述查询组件代理发送查询组件号与查询组件实例进行注册,并上报所述查询组件的客 户端请求负载情况,所述查询组件代理保存所述查询组件号、查询组件实例以及所述查 询组件的客户端请求负载情况的映射关系,并根据所述查询组件上报的客户端请求负载 情况更新保存的所述客户端请求负载情况;所述查询组件代理接收到客户端请求后,按照负载均衡的原则,选择一个查询 组件返回给客户端,所述查询组件更新所述查询组件的客户端请求负载情况。进一步地,上述构建方法还具有如下特征所述启动一个或多个查询组件,在所述数据查询系统开始运行时同时启动所有 查询组件。或者,所述数据查询系统还包括一个负载均衡控制器;所述启动一个或多个查 询组件,是在所述数据查询系统运行过程中,所述负载均衡控制器根据数据查询系统运 行指标或根据接收到的用户的控制命令,向所述查询组件发送启动指令,指示所述查询 组件启动;其中,负载均衡控制器是根据接收到的用户的控制命令向查询组件发送启动指 令,或者负载均衡控制器根据所述数据查询系统运行指标设置启动阈值,并监测所述数 据查询系统的运行状况,如果数据查询系统运行指标达到所述启动阈值,则向所述查询组件发送启动指令;所述数据查询系统运行指标为数据查询系统的使用规模,客户端请求的响应 性,客户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗时以及 占用资源中 的一种或多种。进一步地,上述构建方法还具有如下特征所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所 述负载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户端请求负载情况为所述查询组件上的客户端请求的处理权重, 所述负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。进一步地,上述构建方法还具有如下特征所述查询组件代理保存所述查询组件号、查询组件实例以及所述查询组件的客 户端请求负载情况的映射关系,并根据所述查询组件上报的客户端请求负载情况更新保 存的客户端请求负载情况,具体包括如下步骤所述查询组件代理初始化两个哈希表,第一哈希表用来保存所述查询组件号和 所述查询组件实例的映射关系,第二哈希表用来保存所述查询组件号和所述查询组件上 客户端请求负载情况的映射关系;所述查询组件代理接受查询组件的注册后,将所述查询组件号和查询组件实例 的映射关系保存在所述第一哈希表中;所述查询组件代理接受所述查询组件的周期心跳联系,并定期更新所述第二哈 希表中查询组件上客户端请求负载情况。进一步地,上述构建方法还具有如下特征所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所 述查询组件更新所述客户端请求负载情况具体为所述查询组件在处理所述客户端请求前,所述查询组件正在处理的客户端请求 数计数加一个计数单位值;所述查询组件向客户端返回请求结果前,所述查询组件正在处理的客户端请求 数减所述计数单位值。进一步地,上述构建方法还具有如下特征所述查询组件向所述查询组件代理发送查询组件号与查询组件实例进行注册, 并上报所述查询组件的客户端请求负载情况,具体包括如下步骤A、所述查询组件启动一定时器;B、定时时间到,所述查询组件判断向所述查询组件代理注册是否成功,如果不 成功,执行步骤C;如果成功,判断上一次向所述查询组件代理心跳发送所述客户端请 求负载情况是否成功;如果成功,执行步骤D,否则执行步骤C;C、所述查询组件向所述查询组件代理注册,返回步骤B;D、所述查询组件向所述查询组件代理发送所述客户端请求负载情况,返回步骤 B。为了解决上述问题,本发明还提供了一种数据查询方法,包括如下步骤客户端向查询组件代理发送客户端请求;
所述查询组件代理根据负载均衡的原则,选择查询组件,并将该查询组件返回 给所述客户端;所述查询组件处理所述客户端请求,并将处理结果返回给所述客户端;其中,所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数 量,所述负载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户端请求负载情况为所述查询组件上的客户端请求的处理权重, 所述负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。上述数据查询系统和数据查询方法保证了数据查询系统的高可用性,可以克服 现有数据查询系统中,当客户端请求增多时,单一查询组件不能及时响应的缺陷。



图1是本发明实施例查询组件代理启动后保存并更新映射关系流程图;图2是本发明实施例查询组件动态地启动,以及注册和上报查询组件号与客户 端请求负载情况的流程图;图3是本发明实施例查询组件代理根据负载均衡原则获取查询组件的流程图。
具体实施例方式下面结合附图详细说明本发明的具体实施方式
。本实施例中的数据查询系统,包括客户端、一个查询组件代理以及一个或多个 与该查询组件代理连接的查询组件;其中,客户端,用于向查询组件代理发送客户端请求;查询组件代理,用于保存查询组件的查询组件号、查询组件实例以及查询组件 的负载情况,并根据查询组件上报的查询组件的客户端请求负载情况进行更新;以及接 收客户端请求,并根据负载均衡的原则,选择一个查询组件返回给客户端;查询组件,用于向查询组件代理发送查询组件号与查询组件实例进行注册,并 上报查询组件的客户端请求负载情况;以及处理客户端请求并将处理结果返回给客户 端。上述数据查询系统还可以进一步包括一个查询组件号分配器和一个负载均衡 控制器;其中,查询组件号分配器,用于给查询组件分配一个唯一的未被其他查询组件占用的 查询组件号;负载均衡控制器,用于在数据查询系统运行过程中,根据数据查询系统运行指 标或根据接收到的用户的控制命令,向查询组件发送启动指令,指示查询组件启动;进一步地,负载均衡控制器可以根据接收到的用户的控制命令向查询组件发送 启动指令,负载均衡控制器还可以根据不同的数据查询系统运行指标设置启动阈值,并 监测数据查询系统的运行状况,如果数据查询系统运行指标达到该阈值,则向查询组件 发送启动指令;其中,数据查询系统运行指标可以为数据查询系统的使用规模,客户端请求的 响应性,客户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗时,占用资源中的一种或多种。 基于上述数据查询系统,本实施例给出上述数据查询系统的构建方法;本实施例将原来的一个查询组件扩展为一个或多个查询组件,并创建一个查询 组件代理用来管理该一个或多个查询组件;其中每个查询组件都可以设置为能够处理所 有类型的客户端请求,不限制每个查询组件能够处理的客户端请求的类型;查询组件代理还用于接收客户端请求,并根据负载均衡的原则选择查询组件返 回给发送请求的客户端;由此可见,本实施例中客户端请求不是直接发送给查询组件 的。本实施例的构建方法具体包括如下步骤第一步启动查询组件代理以及一个或多个查询组件,查询组件启动后向查询 组件代理发送查询组件号和查询组件实例进行注册,并向查询组件代理上报客户端请求 负载情况,查询组件代理保存查询组件的查询组件号、查询组件实例以及与查询组件的 客户端请求负载情况的映射关系,并根据查询组件的上报更新客户端请求负载情况;本实施例中优选查询组件周期性地判断向查询组件代理的注册情况,以及周期 性的上报客户端请求负载情况,以供查询组件代理进行更新;这样的设计使得方案中的 各个部分之间的耦合更小,容错性更加好。当然也可以是其他实施方式,如接收到一个 客户端请求就进行判断等。查询组件周期性地判断向查询组件代理的注册情况,以及周期性的上报客户端 请求负载情况,以供查询组件代理进行更新具体包括如下步骤注册指当某个查询组件启动后,该查询组件将其查询组件号和查询组件实例发 送给查询组件代理;查询组件代理接受查询组件的注册,保存该查询组件的查询组件号 与查询组件实例的映射关系;查询组件代理用来管理一个或多个查询组件,并用于接收客户端请求;管理包 括接受启动的查询组件的注册,保存查询组件号、查询组件实例以及查询组件的客户端 请求负载情况的映射关系,以及更新客户端请求负载情况;查询组件上客户端请求负载情况,可以是查询组件上正在处理的客户端请求的 数目,还可以是查询组件上客户端请求的处理权重;查询组件代理根据客户端请求负载情况选择查询组件,找到查询组件实例 (instance),从而将该查询组件实例表示的查询组件返回给客户端;图1所示为一个查询组件代理启动后保存以及更新映射关系的具体实施例,本 实施例中查询组件上客户端请求负载情况为查询组件上正在处理的客户端请求数目,具 体包括如下步骤步骤101 查询组件代理初始化两个哈希表,一个哈希表QRYS用来保存查询组 件号和查询组件实例的映射关系,一个哈希表QRYN用来保存查询组件号和查询组件上 正在处理的客户端请求数目的映射关系;在另一实施例中,也可以将查询组件号、查询组件实例以及每个查询组件上正 在处理的请求的映射关系保存在一个表中;步骤102 查询组件代理接受查询组件的注册,并将查询组件号和查询组件实 例的映射关系保存在哈希表QRYS中;
步骤103:查询组件代理接受查询组件的周期心跳联系,查询组件将查询组件 号以及该查询组件正在处理的客户端请求个数作为参数传递给查询组件代理,查询组件 代理更新哈希表QRYN中查询组件号和查询组件正在处理的客户端请求个数;此步骤中,查询组 件代理可以是定期更新哈希表QRYN中查询组件号和查询组 件正在处理的客户端请求个数;也可以是实时更新,或者查询组件代理根据需要指示查 询组件发送正在处理的客户端请求个数等多种实施方式;第一步中,启动查询组件可以由也有多种实施方式如可以在数据查询系统开始运行时同时启动所有查询组件;也可在运行过程中由负载均衡控制器根据数据查询系统运行指标或根据接收到 的用户的控制命令,动态地启动查询组件,而且每个查询组件的启动都是独立的;其中 负载均衡控制器用于向查询组件发送启动指令,指示查询组件启动;进一步地,负载均衡控制器可以根据接收到的用户的控制命令向查询组件发送 启动指令,负载均衡控制器还可以根据不同的数据查询系统运行指标设置启动阈值,并 监测数据查询系统的运行状况,如果数据查询系统运行指标达到该阈值,则向查询组件 发送启动指令;其中,数据查询系统运行指标可以为数据查询系统的使用规模,客户端请求的 响应性,客户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗 时,占用资源中的一种或多种。图2所示为查询组件动态地启动,以及注册和上报查询组件号与客户端请求负 载情况的优选的实施例,具体包括如下步骤步骤201 查询组件获取一个未被其他查询组件占用的查询组件号;查询组件号可以是由一个查询组件号分配器分配给查询组件;该查询组件分配器,用于向查询组件分配一个唯一的未被其他查询组件占用的 查询组件号;当然,查询组件号也可以预先配置到查询组件中,此时步骤201可以省略;步骤202 查询组件设置一个变量用来保存目前该查询组件的客户端请求负载 情况,如正在处理的客户端请求的个数;步骤203 查询组件启动一定时器;该定时器的定时时间可以根据实际数据查询系统的运行进行设置,本发明对此 并不限定;此外,本步骤中还可以进一步初始化用来表示注册是否成功的变量一和表示上 一次向查询组件代理发送客户端请求负载是否成功的变量二;但本发明并不限于此方法 对注册是否成功和发送客户端请求负载是否成功进行限定,如还可以是根据与查询组件 代理进行交互通知查询组件是否成功;其中变量一和变量二可以是布尔变量,用True表示成功,用False表示失败,当 然也可以是其他变量。步骤204:定时时间到,查询组件判断向查询组件代理注册是否成功,如果不 成功,执行步骤205;如果成功,判断上一次向查询组件代理心跳发送客户端请求负载 (如客户端请求个数)是否成功;如果成功,执行步骤206,否则执行步骤205;
如可以根据 变量一和变量二的值进行判断;步骤205:向查询组件代理注册,返回步骤204;如果采用设置变量一的方式,此步骤进一步包括按照注册是否成功的结果设置 变量一的值;如当注册成功,将布尔变量表示的变量一置为Ture,否则置为False;步骤206:向查询组件代理发送客户端请求负载情况,如当前正在处理的客户 端请求数目;返回步骤204;如果采用设置变量二的方式,此步骤进一步还包括按照向查询组件代理发送客 户端请求负载情况是否成功的结果设置变量二的值。当然,非动态启动的注册和上报也可以采用本实施例的实施方式。上述优选实施例中,查询组件通过断点续连的方法,也就是启动时注册,然后 周期发送当前正在客户端请求个数给查询组件代理,保持查询组件和查询组件代理之间 的联系。特别是在分布式系统中,不同客户端请求往往会被分到不同的数据源或者后 台去做,这些客户端请求之间本身不具备关联性,但是如果都通过一个查询组件去做的 话,就会使得他们相互影响,本方案将尽量减小他们之间不必要的耦合。第二步查询组件代理接收到客户端请求后,按照负载均衡的原则,选择一个 查询组件返回给客户端;其中,负载均衡原则有很多种,如可以是在每次接收到客户端获取查询组件 时,都选择一个当前正在处理的客户端请求个数最少的查询组件返回给客户端;或者可 以是根据客户端请求的处理权重,将当前处理权重最小的查询组件返回给客户端;权重是系统对客户端请求的响应性;如,数据量越大,对响应性的影响越大; 因此,根据客户端请求的处理权重选择查询组件时,可以是根据当前正在处理的客户端 请求的计算量最小的查询组件返回给客户端,或者可以选择当前处理客户端请求时CPU 耗时最少的查询组件返回给客户端等中的一种或多种;因此,当客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量 时,负载均衡原则为查询组件上当前正在处理的客户端请求个数最少;或者,当客户端请求负载情况为查询组件上的客户端请求的处理权重时,负载 均衡原则为查询组件上当前正在处理的客户端请求的处理权重最小。图3所示为查询组件代理根据负载均衡原则获取查询组件的实施例,包括如下 步骤步骤301 查询组件代理从哈希表QRYN中获取所有查询组件正在处理的客户 端请求的个数;步骤302 查询组件代理获取正在处理的客户端请求的个数最小的查询组件 号,若是查询请求个数最小的不止一个,随机抽取一个;步骤303 根据获取的查询组件号从哈希表QRYS中找到对应的查询组件实例返 回给客户端;第三步查询组件更新查询组件的客户端请求负载情况;如客户端请求负载情况为查询组件正在处理的客户端请求数,具体可以是查 询组件在处理客户端请求前,查询组件请求计数加一个单位计数值,如1,向客户端返回 请求结果前,查询组件正在处理的客户端请求数计数减一个同样的单位计数值;
如客户端请求负载情况为客户端请求的处理权重,查询组件则计算当前客户端 请求的处理权重并更新。本发明由于能够动态地通过添加查询组件来满足系统的需求,使得系统的动态 扩展性好,这个方案本身也可推而广之应用到任何需要高可伸缩性的应用,具体可以是 管理信息系统(Management Information System,MIS),信息查询系统,性能数据查询系
统,尤其是网管上的性能数据查询系统等。相应地,本实施例还给出基于上述数据查询系统的数据查询的方法,具体包括 如下步骤A、客户端向查询组件代理发送客户端请求;B、查询组件代理根据负载均衡的原则,选择查询组件,并将该查询组件返回给 客户端;C、查询组件处理客户端请求,并将处理结果返回给客户端。 本发明的方案与传统单一组件查询,集中处理查询请求的方案相比,每个查询 组件都具有平等的处理能力,即查询组件在逻辑上不再具有唯一性。查询组件的选择 交由查询组件代理去做,使得组件具备高可伸缩性。当查询请求较多以至于现有的查询 组件不能有效处理时,能动态地增加查询组件,而新增的查询组件可以部署在别的机器 上,达到通过添加硬件设备来提升响应能力而又不影响正在处理的客户端请求,极大地 提升可数据查询系统的可用性。
权利要求
1.一种数据查询系统,包括客户端,其特征在于,所述数据查询系统还包括一个查 询组件代理以及与该查询组件代理连接的一个或多个查询组件;其中,所述客户端,用于向所述查询组件代理发送客户端请求;所述查询组件代理,用于保存所述查询组件的查询组件号、查询组件实例以及查 询组件的负载情况,并根据查询组件上报的所述查询组件的客户端请求负载情况进行更 新;以及接收所述客户端请求,并根据负载均衡的原则,选择一个查询组件返回给所述 客户端;所述查询组件,用于向查询组件代理发送查询组件号与查询组件实例进行注册,并 上报所述查询组件的客户端请求负载情况;以及处理所述客户端请求并将处理结果返回 给所述客户端。
2.如权利要求1所述的数据查询系统,其特征在于所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所述负 载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户端请求负载情况为所述查询组件上的客户端请求的处理权重,所述 负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。
3.如权利要求1或2所述的数据查询系统,其特征在于,所述数据查询系统进一步包 括查询组件号分配器和负载均衡控制器;其中,所述查询组件号分配器,用于在所述查询组件启动时,给所述查询组件分配一个唯 一的未被其他查询组件占用的查询组件号;所述负载均衡控制器,用于在所述数据查询系统运行过程中,根据数据查询系统运 行指标或根据接收到的用户的控制命令,向所述查询组件发送启动指令,指示所述查询 组件启动;其中,负载均衡控制器根据接收到的用户的控制命令向查询组件发送启动指令,或 者负载均衡控制器根据所述数据查询系统运行指标设置启动阈值,并监测所述数据查询 系统的运行状况,如果数据查询系统运行指标达到所述启动阈值,则向所述查询组件发 送启动指令。
4.如权利要求3所述的数据查询系统,其特征在于所述数据查询系统运行指标为数据查询系统的使用规模,客户端请求的响应性,客 户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗时以及占用资 源中的一种或多种。
5.—种如权利要求1所述的数据查询系统的构建方法,其特征在于,所述构建方法具 体包括如下步骤启动一个查询组件代理以及启动一个或多个查询组件,所述查询组件启动后向所述 查询组件代理发送查询组件号与查询组件实例进行注册,并上报所述查询组件的客户端 请求负载情况,所述查询组件代理保存所述查询组件号、查询组件实例以及所述查询组 件的客户端请求负载情况的映射关系,并根据所述查询组件上报的客户端请求负载情况 更新保存的所述客户端请求负载情况;所述查询组件代理接收到客户端请求后,按照负载均衡的原则,选择一个查询组件 返回给客户端,所述查询组件更新所述查询组件的客户端请求负载情况。
6.如权利要求5所述的构建方法,其特征在于所述启动一个或多个查询组件,在所述数据查询系统开始运行时同时启动所有查询 组件。或者,所述数据查询系统还包括一个负载均衡控制器;所述启动一个或多个查询组 件,是在所述数据查询系统运行过程中,所述负载均衡控制器根据数据查询系统运行指 标或根据接收到的用户的控制命令,向所述查询组件发送启动指令,指示所述查询组件 启动;其中,负载均衡控制器是根据接收到的用户的控制命令向查询组件发送启动指令, 或者负载均衡控制器根据所述数据查询系统运行指标设置启动阈值,并监测所述数据查 询系统的运行状况,如果数据查询系统运行指标达到所述启动阈值,则向所述查询组件 发送启动指令;所述数据查询系统运行指标为数据查询系统的使用规模,客户端请求的响应性,客 户端请求的数目,系统支持的客户请求的计算量,请求在处理时CPU的耗时以及占用资 源中的一种或多种。
7.如权利要求5或6所述的构建方法,其特征在于,所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所述负 载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户端请求负载情况为所述查询组件上的客户端请求的处理权重,所述 负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。
8.如权利要求5或6所述的构建方法,其特征在于,所述查询组件代理保存所述查询组件号、查询组件实例以及所述查询组件的客户端 请求负载情况的映射关系,并根据所述查询组件上报的客户端请求负载情况更新保存的 客户端请求负载情况,具体包括如下步骤所述查询组件代理初始化两个哈希表,第一哈希表用来保存所述查询组件号和所述 查询组件实例的映射关系,第二哈希表用来保存所述查询组件号和所述查询组件上客户 端请求负载情况的映射关系;所述查询组件代理接受查询组件的注册后,将所述查询组件号和查询组件实例的映 射关系保存在所述第一哈希表中;所述查询组件代理接受所述查询组件的周期心跳联系,并定期更新所述第二哈希表 中查询组件上客户端请求负载情况。
9.如权利要求7所述的构建方法,其特征在于所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量,所述查 询组件更新所述客户端请求负载情况具体为所述查询组件在处理所述客户端请求前,所述查询组件正在处理的客户端请求数计 数加一个计数单位值;所述查询组件向客户端返回请求结果前,所述查询组件正在处理的客户端请求数减 所述计数单位值。
10.如权利要求5或6所述的构建方法,其特征在于,所述查询组件向所述查询组件 代理发送查询组件号与查询组件实例进行注册,并上报所述查询组件的客户端请求负载情况,具体包括如下步骤A、所述查询组件启动一定时器;B、定时时间到,所述查询组件判断向所述查询组件代理注册是否成功,如果不成 功,执行步骤C;如果成功,判断上一次向所述查询组件代理心跳发送所述客户端请求 负载情况是否成功;如果成功,执行步骤D,否则执行步骤C;C、所述查询组件向所述查询组件代理注册,返回步骤B;D、所述查询组件向所述查询组件代理发送所述客户端请求负载情况,返回步骤B。
11. 一种数据查询方法,包括如下步骤客户端向查询组件代理发送客户端请求;所述查询组件代理根据负载均衡的原则,选择查询组件,并将该查询组件返回给所 述客户端;所述查询组件处理所述客户端请求,并将处理结果返回给所述客户端; 其中,所述客户端请求负载情况为所述查询组件上正在处理的客户端请求的数量, 所述负载均衡原则为所述查询组件上当前正在处理的客户端请求个数最少;或者,所述客户端请求负载情况为所述查询组件上的客户端请求的处理权重,所述 负载均衡原则为所述查询组件上当前正在处理的所述客户端请求的处理权重最小。
全文摘要
一种数据查询系统,包括客户端,查询组件代理以及与该查询组件代理连接的一个或多个查询组件;客户端用于向查询组件代理发送客户端请求;查询组件代理用于保存查询组件的查询组件号、查询组件实例以及查询组件的负载情况,并根据查询组件上报的所述查询组件的客户端请求负载情况进行更新;以及接收客户端请求,并根据负载均衡的原则,选择一个查询组件返回给所述客户端;查询组件用于向查询组件代理发送查询组件号与查询组件实例进行注册,并上报所述查询组件的客户端请求负载情况;以及处理所述客户端请求并将处理结果返回给所述客户端。相应地,还提供该数据查询系统的构建方法以及数据查询方法。本发明保证了数据查询系统的高可用性。
文档编号G06F17/30GK102023997SQ20091017810
公开日2011年4月20日 申请日期2009年9月23日 优先权日2009年9月23日
发明者孙鸣 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1